Ich habe ein 35B-Parameter-Modell auf meinem iPhone ausgeführt (Lokale KI)

BBetter Stack
Computing/SoftwareConsumer ElectronicsCell Phones

Transcript

00:00:00Dieses Modell mit 35 Milliarden Parametern läuft direkt auf meinem iPhone. Ich kann 11 Tokens pro
00:00:06Sekunde generieren – durch ausgeklügeltes Engineering, für das dieses Modell nie gedacht war. In diesem Video
00:00:11zeige ich dir genau, wie du das auch schaffst. Was ich hier ausführe, ist ein Mixture-of-Experts-Modell.
00:00:21Es hat 35 Milliarden Parameter, was als normale 4-Bit-Datei etwa 20 GB groß ist und im RAM liegen müsste.
00:00:28Aber durch verschiedene Techniken, wie das Streamen von Experten bei Bedarf von der SSD, reduzieren sich die Gewichte,
00:00:33die tatsächlich im Speicher liegen müssen, auf nur 1,4 GB. Ich erkläre, wie das alles funktioniert, und dann
00:00:39gehen wir das iPhone-Setup durch. Die meisten Modelle liegen komplett im RAM, aber das Tolle an Mixture-of-Experts-Modellen
00:00:45ist, dass immer nur ein kleiner Teil aktiv ist. Das bedeutet, dass die inaktiven Teile
00:00:51des Modells einfach auf der SSD bleiben können, bis sie gebraucht werden. Der Trick beim Ausführen größerer Modelle
00:00:56bei begrenztem Speicher besteht darin, nur die Experten in den Speicher zu streamen, die gerade benötigt werden. Wir nutzen Qwen
00:01:023.5, die Variante mit 35 Milliarden Parametern, und das “A3B” am Ende bedeutet, dass nur etwa 3 Milliarden dieser Parameter
00:01:10für einen einzelnen Token aktiv sind. Es hat 40 Schichten mit jeweils 256 kleinen Experten plus einem geteilten Experten. Ein Router
00:01:19wählt acht dieser Experten pro Token aus. Ein einzelner Token nutzt also nur etwa 3 Milliarden der insgesamt 35 Milliarden
00:01:26Parameter. Normalerweise liegt das gesamte Modell im Speicher, aber das würde
00:01:32nicht auf ein iPhone passen. Stattdessen werden die Teile, die jeder Token braucht – also Embeddings, Attention, Router
00:01:39und der geteilte Experte – nur einmal geladen und bleiben die ganze Zeit im RAM. Das sind etwa
00:01:441,4 GB. Die Experten – 40 Dateien von je etwa 300 MB, insgesamt 12 Gigabyte – liegen auf der SSD. Für jeden Token
00:01:53läuft Attention auf der GPU, dann wählt der Router 8 Experten aus und die Engine liest diese 8 direkt von der SSD
00:02:00in den GPU-Speicher und führt sie zusammen mit dem geteilten Experten aus. Das passiert in jeder einzelnen
00:02:06dieser 40 Schichten. Es sind also 320 kleine Lesezugriffe für jeden einzelnen Token. Falls du mit Attention
00:02:14nicht vertraut bist: Es ist der Teil des Modells, der den gesamten bisherigen Gesprächsverlauf analysiert und ermittelt,
00:02:19welche früheren Wörter wichtig sind, um das nächste vorherzusagen. Attention läuft für jeden einzelnen Token,
00:02:25egal was passiert, und muss daher im Speicher bleiben. Die Experten übernehmen das eigentliche “Denken” über einen Token,
00:02:31sobald Attention den Kontext ermittelt hat. Da aber nur acht dieser Experten genutzt werden, können wir
00:02:36den Rest einfach auf dem Datenträger lassen. Es gibt keinerlei Experten-Cache in der App. Jeder Lesezugriff geht über das Betriebssystem,
00:02:42und iOS behält kürzlich genutzte Experten im eigenen Page Cache, solange freier RAM vorhanden ist. Die Entwickler
00:02:49hatten eigentlich einen eigenen 9,8-GB-Cache gebaut und ihn dann gelöscht – was alles um 38 % schneller machte.
00:02:55Denn auf einem Mac oder iPhone ist jeder RAM, den sich die App greift, Speicher, der der GPU und dem Page Cache fehlt.
00:03:03Dieser Cache erledigt hier die Hauptarbeit. Bei 11 Tokens pro Sekunde, wenn jeder Experte vom Flash-Speicher käme,
00:03:09bräuchte das Telefon über 5 Gigabyte pro Sekunde an Lesegeschwindigkeit. Der Flash-Speicher des iPhones schafft aber nur etwa 1,6 GB/s.
00:03:15Die meisten Experten kommen also aus dem RAM, den das OS für uns verwaltet. Der nächste Trick ist abgestufte
00:03:22Quantisierung. Quantisierung komprimiert die Gewichte eines Modells, damit sie weniger Platz belegen, aber sie verringert auch
00:03:29die Genauigkeit dieser Gewichte und beeinträchtigt die Intelligenz. Bei diesem Modell übernehmen aber etwa 25 % der
00:03:35Experten rund 80 % der Arbeit. Die viel genutzten Experten bleiben also bei 4 Bit und die selten genutzten werden
00:03:41auf 2 Bit herunterquantisiert. Dadurch werden sie 44 % kleiner. Die gesamte Datei schrumpft um 34 % von etwa 19 GB auf
00:03:5013 GB, was bedeutet, dass mehr davon in den Page Cache passt. Auf meinem iPhone 17 läuft das mit 11 Tokens pro Sekunde,
00:03:57während das Modell im Denkmodus ist. Ich muss allerdings sagen, dass das Telefon heiß wird – schon beim einfachen “Hallo”. Ich konnte spüren,
00:04:03wie sich das Telefon in meiner Hand erwärmte. Versuch also, das Gerät beim Testen nicht zur Explosion zu bringen. Ich habe
00:04:08sogar etwas Angst, etwas zu Komplexes einzugeben, weil es sich sonst durch meine Hand schmelzen könnte.
00:04:14Die spezielle Engine, die wir ausführen, ist ein Projekt namens “flash moe” von Dan Woods. Es wurde für ein
00:04:19MacBook geschrieben, und es gibt einen kleinen iOS-Port namens “flash ios”, der dieselbe Engine in eine iPhone-App einbettet.
00:04:26Und genau das ermöglicht es mir, das Ganze auf meinem Telefon auszuführen. Anfangs stieß ich auch auf einen Bug, bei dem das
00:04:31Denken des Modells in einer Schleife hängen blieb. Es fing gut an, aber nach etwa 10 Wörtern wiederholte es
00:04:35einfach ewig dieselben zwei Tokens. Um das zu beheben, habe ich eine Funktion namens “async pre-read weight” aktualisiert, sodass sie
00:04:41den Lesezugriff jedes Experten mit dessen eigenen Größe abgleicht. 2-Bit-Experten sind halb so groß wie die mit 4 Bit.
00:04:48Vor dem Fix schlug also jeder 2-Bit-Experte bei der Größenprüfung fehl und wurde stillschweigend übersprungen. Das Modell lief praktisch
00:04:54nur mit der Hälfte der Experten und geriet deshalb in eine Schleife. Wenn euch das Video gefällt, Leute, würdet ihr uns
00:04:59einen riesigen Gefallen tun, wenn ihr den Kanal abonniert, damit wir weiterhin jeden Tag kostenlose Inhalte erstellen können. Um das
00:05:05auf deinem Telefon einzurichten, musst du das Repo klonen und den erwähnten Pre-Read-Fix anwenden auf:
00:05:11metal infer / infer.m. Richte das Xcode-Projekt auf dein Team und deine Bundle-ID aus. Du benötigst dafür einen kostenpflichtigen
00:05:18Apple-Developer-Account. Erstelle einen Release-Build und installiere ihn auf deinem iPhone. Lade das vorgepackte
00:05:24gestufte Modell herunter (ca. 13 GB) und übertrage es per USB auf die App, was etwa sieben Minuten dauern sollte.
00:05:30Öffne auf dem iPhone die “flash moe”-App, tippe auf das Modell und fange an zu chatten. Und wenn du versuchen möchtest,
00:05:36lokale Modelle auf deinem Mac auszuführen für noch mehr Tokens pro Sekunde, schau dir dieses nächste Video an. Ich bin Warren von
00:05:43Better Stack. Vielen Dank fürs Zuschauen und natürlich sehen wir uns im nächsten Video!

Key Takeaway

Durch das dynamische Streamen von Experten von der SSD und die Ausnutzung des iOS-eigenen Page Caches lässt sich ein 35-Milliarden-Parameter-Modell mit 11 Tokens pro Sekunde lokal auf einem iPhone ausführen.

Highlights

  • Das Mixture-of-Experts-Modell Qwen 3.5 mit 35 Milliarden Parametern läuft mit 11 Tokens pro Sekunde auf einem iPhone 17.

  • Der dauerhafte Speicherbedarf im RAM reduziert sich von etwa 20 GB auf nur 1,4 GB, da ungenutzte Experten auf der SSD verbleiben.

  • Pro Token laden 40 Modellschichten jeweils 8 von 256 Experten, was zu 320 Festplattenzugriffen pro generiertem Token führt.

  • Ein Verzicht auf den eigenen 9,8-GB-App-Cache steigert die Ausführungsgeschwindigkeit um 38 %, da iOS den Page Cache effizienter verwaltet.

  • Durch abgestufte Quantisierung schrumpft die Modelldatei von 19 GB auf 13 GB, indem viel genutzte Experten in 4-Bit und seltene in 2-Bit gespeichert werden.

Timeline

Funktionsweise von Mixture-of-Experts auf mobilen Geräten

  • Das Qwen 3.5 A3B Modell aktiviert pro Token nur etwa 3 Milliarden seiner 35 Milliarden Parameter.
  • Fest im RAM verbleiben nur Embeddings, Attention, Router und der geteilte Experte mit einem Speicherbedarf von 1,4 GB.
  • Die 40 Expertendateien belegen 12 GB auf der SSD und werden erst bei Bedarf durch den Router geladen.

Standardmäßige 4-Bit-LLMs dieser Größe benötigen etwa 20 GB RAM, was die Kapazität eines iPhones übersteigt. Die Mixture-of-Experts-Architektur teilt das Modell in 40 Schichten mit je 256 kleinen Experten auf. Ein Router wählt pro Token genau 8 Experten aus. Die Attention-Berechnung verbleibt durchgehend im RAM zur Analyse des bisherigen Kontexts, während die eigentliche Informationsverarbeitung über gezielte SSD-Zugriffe auf die GPU gestreamt wird.

Speicherverwaltung und gestufte Quantisierung

  • Das Entfernen eines manuellen 9,8-GB-App-Caches führt zu 38 % schnellerer Performance.
  • Ungefähr 25 % der Experten bewältigen rund 80 % der Gesamtarbeit des Modells.
  • Eine gemischte Quantisierung aus 4-Bit und 2-Bit reduziert die Modellgröße von 19 GB auf 13 GB.

Bei 11 Tokens pro Sekunde würde der direkte Transfer aller Daten von der SSD eine Bandbreite von über 5 GB/s erfordern, was das Limit des iPhone-Flash-Speichers von 1,6 GB/s übersteigt. Die Auslagerung der Cache-Verwaltung an den iOS Page Cache nutzt den freien Arbeitsspeicher optimal für GPU und System. Durch die stärkere Komprimierung selten genutzter Experten auf 2-Bit schrumpft das Modell um 34 %, wodurch deutlich mehr Experten im RAM-Cache verbleiben können.

Software-Basis, Bugfixing und Installation

  • Die Anwendung basiert auf dem Open-Source-Projekt flash moe sowie dem iOS-Port flash ios.
  • Ein Fehler bei der Größenprüfung übersprang 2-Bit-Experten und verursachte Endlosschleifen bei der Textgenerierung.
  • Die Installation erfordert Xcode, einen kostenpflichtigen Apple-Developer-Account und einen 13 GB Modelltransfer via USB.

Ein Fehler in der Funktion async pre-read weight verglich Lesezugriffe ohne Berücksichtigung der halb so großen 2-Bit-Dateien. Nach der Korrektur dieser Längenprüfung in der Datei infer.m werden alle Experten korrekt geladen. Der Build-Prozess erfordert das Klonen des Repositories, die Anpassung der Bundle-ID im Xcode-Projekt sowie die direkte Übertragung des gestuften Modellpakets auf das Smartphone.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video