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!
Community Posts
No posts yet. Be the first to write about this video!
Write about this video