Vier Mac minis werden zum KI-Cluster

!-- RSPEAK_STOP -->
Inhaltsverzeichnis

Will man lokale KI-Sprachmodelle laufen lassen, braucht man vor allem eins: Viel schnell angebundenen Speicher. Apples Mac minis mit M4 Pro erreichen 273 GByte pro Sekunde, damit kann man gut arbeiten. Allerdings ist bei maximal 64 GByte Speicherausbau Schluss – zu wenig für große Sprachmodelle. c't 3003 hat deshalb versucht, vier Mac minis per Thunderbolt 5 zu einem Cluster mit insgesamt 192 GByte Speicher zusammenzuschließen. Zum Einsatz kam die experimentelle Software Exo.

Transkript des Videos

(Hinweis: Dieses Transkript ist für Menschen gedacht, die das Video oben nicht schauen können oder wollen. Der Text gibt nicht alle Informationen der Bildspur wieder.)

Guckt mal hier, ich habe hier vier wirklich mini kleine Mac minis mit USB-C-Kabeln zusammengeschlossen und mir daraus einen KI-Cluster gebaut. Passt komplett auf meine Handfläche und hat 192 Gigabyte schnellen Speicher. Möglich macht es Exo. Das ist eine Open-Source-Software, die beliebig viele Geräte über ein Netzwerk zu einem Cluster zusammenclustert, um da dann große KI-Sprachmodelle drauf laufen zu lassen. Das Ding funktioniert angeblich sogar auf Telefonen. Klingt gut? Ja, finde ich auch. Aber erst mal gucken, wie das in der Praxis so läuft. Ich habe es für euch ausführlich ausprobiert.

Als Bonus kriegt ihr direkt noch einen kleinen Thunderbolt-5-Kabel-Test und erfahrt, wie sich Mac minis auch einzeln mit KI-Sprachmodellen schlagen. Bleibt dran.

Liebe Hackerinnen, liebe Internetsurfer, herzlich willkommen hier bei...

Ja, große KI-Sprachmodelle lokal laufen zu lassen, das ist spätestens seit dem Deep-Seek-Hype etwas, das viele von euch und auch ich gerne machen wollen. Das Problem ist nur, man braucht für volle Deep-Seek-Qualität über 700 GB schnellen Speicher. Am besten sogar Grafikspeicher. Aber ja, die Consumer-Grafikkarte mit den meisten Speicher ist zurzeit die RTX 5090 und die ist a) super teuer, b) nahezu unmöglich zu bekommen und c) hat die auch nur 32 GB.

Ja, und die Variante einfach normalen RAM zu verwenden, also kein Videospeicher, ja das ist langsam und hat auch andere Tücken, da haben wir auch schon ein Video zu gemacht. Es gibt aber auch noch eine dritte Möglichkeit. Wenn man nicht ein Gerät hat mit genug schnellem Speicher, dann kann man auch einfach mehrere nehmen. Das verspricht auf jeden Fall Exo von Exo Labs. Das ist eine Open-Source-Software, die große KI-Sprachmodelle, also Large Language Models, also LLMs, so nenne ich die ab jetzt auch hier in diesem Video, dynamisch auf alle Geräte aufteilt, die in dem Exo-Cluster vorhanden sind.

Das klingt erstmal kompliziert, aber das ist es gar nicht, denn man startet einfach Exo auf mehreren Geräten und dann finden die sich automatisch, wenn die im gleichen Netzwerk sind. Und jetzt sagt ihr wahrscheinlich "Boah, Netzwerk, das ist ja lahm, also super viele Geräte, unter anderem auch Mac minis, haben ja nur eine 1-Gbit/s-Ethernet-Buchse, wenn es hochkommt, haben Computer mal 2,5 Gbit/s und das sind ja nur 300 MB/s, das ist doch viel zu lahm für so einen Cluster."Ja, dann sage ich, man könnte ja Mac minis mit M4 Pro nehmen, die haben Thunderbolt 5, das soll ja 80 Gbit/s können, also zumindest in der Theorie. Cool, habe ich aber mal Apple gefragt, ob sie mir ein paar von den Kistchen ausleihen können und ein paar Tage später hatte ich dann vier Mac minis, also mit M4-Pro-System-on-a-Chip und mit 14-Core-CPU und 20-Core-GPU und 48 GB Arbeitsspeicher. 2339 Euro kosten die pro Stück, es gäbe nur noch eine einzige bessere Version und das sind die mit 64 GByte Speicher, die kosten dann 2569 Euro.

Achso, übrigens nur die Mac Minis mit M4 Pro haben Thunderbolt 5, die mit normalen M4 haben nur Thunderbolt 4, dafür gibt es die auch schon ab 699 Euro. Ja, also jedenfalls, als das Paket dann von Apple kam mit den vier Rechnern drin, dachte ich erst so, hä, die haben doch viel zu wenig geschickt oder haben da Leute was rausgeklaut, weil das ist doch viel zu leicht, der Karton hier. Aber ne, die Dinger sind wirklich so klein und leicht, da ist auch nur das kleine Computerchen drin und ein Stromkabel und das war's. Das ist schon ziemlich elegant, finde ich, muss man schon sagen.

Kleiner Test mit drei Sprachmodellen

Ja, und dann habe ich erst mal einen ausgepackt, also wirklich eine ganz andere Sportart als mein fetter KI-PC mit RTX 4090 oder unser Server mit 1,5 TByte RAM, der einen Heidenlärm macht und natürlich auch viel Strom verbraucht. Und ja, was soll ich sagen, ich habe Ollama ausprobiert, weil das das einfachste und unproblematischste LLM-Anzapfprogramm ist und auf allen Plattformen läuft und das habe ich dann mit drei Sprachmodellen getestet. Phi-4 von Microsoft, DeepSeek im 32-Milliarden-Parameter-Destillat und ein minikleines Llama 3.2, das nur 2 GB groß ist.

Ja, und dieser klitzekleine Mac mini zapft alle drei Sprachmodelle schneller an als unser fetter CPU-Server mit 1,5 TB RAM. Bei Llama 3.2 3B ist der Mac mini mit über 60 Token pro Sekunde sogar mehr als doppelt so schnell wie der Server, aber mein KI-Rechner mit 4090-Grafikkarte ist dann aber nochmal deutlich schneller. Der macht bei Phi-4 246 Token pro Sekunde, der Mac mini erreicht hier nur knapp 24. Allerdings, das muss man auch sagen, die RTX 4090 in meinem KI-Rechner hat nur 24 GB RAM, der Mac mini hat das Doppelte und kostet mindestens 1000 Euro weniger als mein KI-PC.

Ich habe hier aber ja nicht nur einen Mac mini, sondern gleich vier, also jetzt mal los clustern hier. Und ich muss zugeben, das klang in meinem Kopf alles erstmal total einfach. Irgendwie Thunderbolt-5-Kabel reinstecken und dann geht das schon irgendwie alles automatisch. Aber nee, so einfach war das nicht. Alleine die benötigten Kabel. Das Original TB5-Kabel von Apple kostet zum Beispiel heftige 79 Euro. Braucht man das Original? Ich habe deshalb einmal das teure Apple-Kabel gekauft und jeweils deutlich günstigere von Cakoble für 30 Euro, Eudobel für 27 Euro und eins von Connbull auch für 30 Euro.

Ja, also los geht's. Erstmal nur zwei Macs verkabelt, manuell in den Netzwerkeinstellungen bei Thunderbolt Bridge manuelle IP-Adressen vergeben, dann mal iperf3 installiert, damit man die Bandbreite messen kann, nämlich gucken kann, ob die Verbindung auch wirklich über Thunderbolt hergestellt wird und nicht über Ethernet. Und das Ergebnis hat mich tatsächlich einigermaßen beeindruckt. Da gehen echt bis zu 64 Gigabit pro Sekunde drüber, also 64 mal so viel wie der Ethernet-Port des Mac minis maximal schafft. Das sind 8 Gigabyte, also pro Sekunde. Das sind zwei DVDs pro Sekunde für die Älteren von euch, die das noch kennen. Ich finde es krass.

Aber man merkt auch, dass alleine das Daten rüberschieben per TB5 schon auch Arbeit ist für die Mac minis. 20 Prozent Auslastung zeigen mir die Systeme hier an. Das steigt dann sogar auf 30 Prozent, wenn ich iperf mit sechs Streams gleichzeitig benutze. Und dann wird das auch langsamer, was darauf hindeuten könnte, dass das System throttlet, weil es zu heiß wird. Und das ist jetzt nur die Verbindung zwischen zwei Macs.

Achso, noch mal ganz wichtig: Alle vier von mir gekauften Kabel haben gut funktioniert, nur das Connbull-Kabel, da habe ich nur 61 statt 64 Gigabit wie mit den anderen gemessen. Also ist ein minimaler Unterschied, aber allgemein funktionieren die alle gut. Ich habe übrigens auch mal zwei ganz normale USB-C-Kabel, die bei mir so rumlagen dran gehängt. Und die haben tatsächlich nur ein Drittel der Bandbreite geschafft. Also das ist schon sinnvoll, echte TB5-Kabel zu kaufen, aber man muss keine 80 Euro ausgeben. Und bei Eudobel, ey, ich lese immer Dödel, da kriegt ihr sogar fast so eine schöne Textilummantelung wie bei Apple. Wunderbar, ne?

Der Cluster-Aufbau

Ja, ein bisschen vom Thema abgekommen, ich wollte ja alle vier Macs miteinander verbinden. Also daisy-chaine ich jetzt das mal, also jeweils ein Kabel zwischen eins und zwei, zwei und drei, drei und vier. Wieder IP-Adressen manuell vergeben. Ja, und das klappt auch. Ich kann auf Mac 4 den iPerf-Server, der auf Mac 1 läuft, ansprechen, aber wegen der daisy-chain Verkabelung gehen die Daten halt durch alle Rechner. Und deshalb kommt er jetzt auch deutlich weniger an als nur mit so einer Zweifachverbindung. Aber es ist trotzdem natürlich noch viel schneller als, sagen wir mal, 10-Gigabit-Ethernet.

Ich habe mit den Machern von Exo gesprochen und die sagen, dass es besser wäre, einen TB5-Hub zu benutzen. Den hatte ich nicht da. Achso, achso, und eine Verbindung ins große Internet, die brauchen die Rechner ja auch noch, weil die sich die Sprachmodell-Weights runterladen müssen. Dafür habe ich alle Mac minis nochmal per Ethernet ins Netz gehängt. Die Geräte haben jetzt also zwei IP-Adressen, jeweils eine für die Thunderbolt-Bridge und eine fürs Internet. Man kann hier bei Mac OS in den Netzwerkeinstellungen ganz einfach die Priorität festlegen. Da habe ich die Thunderbolt-Bridge dann ganz nach oben geschoben, weil Exo erstmal versuchen soll, die anderen Geräte über Thunderbolt anzusprechen, weil es halt viel schneller ist.

Exo-Installation

Jetzt also Exo installieren. Weil die Exo-Macher, also Exo Labs, noch ziemlich früh in der Entwicklung sind, muss man sich von GitHub den Quellcode holen. Exo ist ein Python-Projekt. Ich habe keine Ahnung von Python, aber trotzdem weiß ich, wie nervig irgendwelche Abhängigkeiten und unterschiedlichen Versionen da sein können. Deshalb habe ich Exo in einer isolierten Umgebung mit Conda installiert. Das klingt jetzt komplizierter als es ist, denn das ist ganz einfach. Einfach auf anaconda.com gehen, dann "Download Now" klicken, "Skip Registration", wenn ihr euch nicht registrieren wollt, und dann euer Betriebssystem aussuchen.

Bei mir ist es ja Mac, also Apple Silicon. Runterladen, doppelklicken und einfach hier immer auf "Weiter" und schon läuft Anaconda. Das Gute ist, dass auch gleich ein Python mit installiert worden ist. Und dann Terminal auf, dann ein neues Python-Environment kreieren mit conda create -n exo python=3.12 . Einmal bestätigen, dann die Umgebung aktivieren mit conda activate exo. Das müsst ihr übrigens auch immer wieder machen, wenn ihr Exo benutzen wollt. Einfach conda activate exo. Dann das Projekt klonen mit git clone https://github.com/exo-explore/exo.git. Also wenn ihr git noch nicht installiert habt, meldet sich jetzt macOS und bietet an, das automatisch zu installieren. Also git und dann klonen und dann mit cd exo in den Exo-Ordner reingehen und dann pip install . (mit Punkt!) Ja und wenn ihr dann exo eintippt, dann startet Exo und sagt dann ganz oben "1 node", ein Node. Das ist jetzt ein bisschen wenig für ein Cluster, also habe ich das gleiche bei den anderen drei Mac minis auch gemacht. Und nice, die Dinger haben sich echt auf Anhieb automatisch gefunden und bilden jetzt einen Cluster aus vier Nodes.

Das wird ja jetzt auch so schön in ASCII-Grafik dargestellt und sehr charming auch diese Teraflop-Temperatur-Anzeige. Und hier oben steht dann eine URL, weil Exo ein kleines Web-UI aufmacht. Ja und hier kann man dann im Browser mit dem Cluster interagieren. Zum Beispiel hier erstmal Weights runterladen für ein Sprachmodell. Draufklicken und dann beginnen alle vier Einzelrechner die Weights runterzuladen. Ja und das Ding kann man dann so ChatGPT-mäßig bedienen.

Großer LLM-Test

In der Praxis hat das mit den kleinen Modellen auch ganz gut funktioniert, allerdings war die Inferenzgeschwindigkeit auf dem Cluster immer geringer als auf den Einzel-Mac minis. Hier zum Beispiel V4, das schaffte auf dem Cluster 7,6 Token pro Sekunde. Auf dem einzelnen Mac waren das 22,3. Mit Ollama und mit Exo alleine, also wenn Exo alleine läuft, sogar 23,9. Dass das schneller ist bei so einem alleinlaufenden Exo, das liegt daran, dass Exo auf Macs die MLX-Engine benutzt. Die ist ein bisschen besser auf Apple Silicon optimiert als Ollama und die läuft deswegen auch ein bisschen schneller.

Ja aber im Clusterbetrieb war das bei mir immer langsamer. Aber das ist ja auch irgendwie logisch, weil die ganze innere Verbindung der einzelnen Nodes, das passiert ja nur über Thunderbolt 5, was ja deutlich langsamer ist als die interne M4 Pro Speicherbandbreite von 273 Gigabyte pro Sekunde. Also nicht Gigabit, sondern Gigabyte. Das sind fast 2200 Gigabit pro Sekunde. Versus die läppischen, die mich gerade noch total beeindruckt haben, aber im Vergleich läppischen 65-Gigabit-pro-Sekunde-Thunderbolt-Verbindung. Also Faktor 30 ungefähr.

Und was man positiv anerkennen muss, der Cluster läuft auf jeden Fall nicht 30-mal so langsam. Also nur ein bisschen langsamer. Ist also schon ganz cool, dass die da schon hinbekommen haben, die Exo-Leute. Aber jetzt kommen wir zum eigentlich Interessantem, weil man will ja nicht ein Cluster benutzen, damit die kleinen Sprachmodelle da langsamer drauf laufen, sondern wir wollen ja große Sprachmodelle laufen lassen, die größer sind als der Speicher eines Einzelgeräts.

Ja und da wird es jetzt leider ein bisschen schwierig, denn ich habe wirklich viel Zeit mit diesem Cluster verbracht. Bis nachts habe ich eben im Büro gesessen und da gefrickelt. Also viele Tage und ja es gab immer Probleme und es ist immer irgendwie die Verbindung abgebrochen. Und Exo hat dann auf einmal nicht mehr vier, sondern nur noch zwei und dann wieder nur noch drei und dann wieder nur noch einen Rechner gefunden. Und damit sind dann auch ständig die Downloads abgebrochen. Ich musste also immer manuell neu starten.

Ich habe das dann irgendwann einzeln auf den Rechnern ausgeführt, also den Download und die Sprachmodelle also erstmal auf den einzelnen Nodes einzeln runtergeladen. Dann habe ich es einmal geschafft, ein Sprachmodell, was größer war als der Speicher eines Geräts, nämlich so ein DeepSeek R1 Lama Destillat mit 70 Milliarden Parametern, was 96 GB groß war, also deutlich größer als die 48 GB Unified RAM eines Mac minis. Also das lief aber mit 1,5 Token pro Sekunde wirklich sehr langsam. Und wie gesagt, das war nur einmal, dass es geklappt hat, sonst habe ich es nicht hinbekommen. Also ja, schwierig.

Ich werde noch weiter mit dem Cluster experimentieren, während das Video hier im Schnitt bearbeitet wird. Also wenn ich da noch neue Erkenntnisse habe, dann hänge ich die hier irgendwie noch an. Kleines Update hier nochmal. Ich habe auf meinem Cluster tatsächlich noch mal noch größere Sprachmodelle zum Laufen bekommen, nämlich DeepSeek Coder. Das Ding ist 123 GB groß und das lief allerdings mit 0,4 bis 0,5 Token pro Sekunde, also super langsam. Aber es funktioniert. Also das kann ich nicht anders sagen. Gut.

Und was ich tatsächlich noch herausgefunden habe, dass Exo nicht unter Windows läuft, weil eine Komponente UV Loop, das ist eine Abhängigkeit, die funktioniert nicht unter Windows. Das heißt, wenn man das unter Windows laufen lassen will, dann geht es nur mit dem Windows Subsystem für Linux, WSL. Damit kriegt man es zum Laufen unter Windows. Auf unserem großen Linux Server ohne GPU habe ich das mit ziemlich viel Handarbeit zumindest gestartet bekommen, also das Exo, aber leider dann beim LLM Abrufen auch wieder nur Fehlermeldungen gesehen.

Ja, und ich habe am Anfang ja auch erwähnt, dass Exo auch auf Handys laufen soll. Ja, und es gab zeitweise mal eine iOS-Version, die haben die Exo-Macher aber wieder zurückgezogen. Bald soll wieder eine kommen. Na ja, mal gucken, wie es so weitergeht.

Mein Fazit

Also Exo schreibt hier direkt am Anfang der GitHub-Seite "Dies hier ist experimentelles Software mit Bugs." Und ja, die Entwicklung ist ganz offensichtlich noch im Frühstadium. Aber ich finde, es wird schon jetzt sehr deutlich, dass Exo auf jeden Fall großes Potenzial hat. Also ich halte es für möglich, dass das in Zukunft wirklich produktiv einzusetzen ist. Im Moment ist Exo wirklich erst mal nur gut für Experimente. Wir bleiben da auf jeden Fall dran. Ja, und mal sehen, was da noch kommt. Man muss ja leider auch sagen, dass man auch mit den 192 Gigabyte meines 4er Mac mini Clusters nicht so wirklich weit kommt, weil ja zum Beispiel das vollständige DeepSeek R1 und V3 über 700 Gigabyte brauchen.

Und klar, in die 192 Gigabyte meines Clusters kriegt man natürlich ein paar ordentliche LLMs rein. Aber LLMs in der Größe können meiner Erfahrung nach alle noch nicht mit Cloud LLMs wie die von OpenAI, xAI oder Anthropic mithalten. Die Nützlichkeit von lokal laufenden LLMs ist zurzeit also sowieso noch begrenzt. Also zumindest wenn man keine 720 Gigabyte Speicher hat. Ich meine, es gibt auch Leute, die das auf der SSD laufen lassen. Aber das ist wirklich nicht praxistauglich, auch wenn ich das auch mal ausprobieren will.

Naja. Wenn es euch nur um viel schnellen Speicher geht, dann seid ihr übrigens mit einem Mac Studio mit 192 Gigabyte Shared RAM besser und günstiger bedient als mit dem 4er-Mac-mini-Cluster aus diesem Video hier. Auf dem MacStudio laufen LLMs auch schneller als auf dem Cluster. Und es ist ja auch von Nvidia Project Digits angekündigt, diese Kistchen sollen 128 Gigabyte schnellen Speicher mitbringen.

Ich habe aus diesem Test auf jeden Fall was mitgenommen. Und zwar, ja, also die Mac minis, die hauen auf jeden Fall was weg. Vor allem, wenn man die Größe und die Leistungsaufnahme betrachtet, aber halt als Einzelrechner und nicht im Cluster. Ja, und was ich noch mitgenommen habe, Thunderbolt 5 ist wirklich ganz schön schnell. Thunderbolt 5 gibt es natürlich auch im Rahmen von USB 4.2.0 für Nicht-Macs, aber da ist das Angebot bislang noch sehr begrenzt. Ja, wie seht ihr das alles? Gerne in die Kommentare schreiben und natürlich abonnieren. Tschüss!


c't 3003 ist der YouTube-Channel von c't. Die Videos auf c’t 3003 sind eigenständige Inhalte und unabhängig von den Artikeln im c’t Magazin. Die Redakteure Jan-Keno Janssen, Lukas Rumpler, Sahin Erengil und Pascal Schewe veröffentlichen jede Woche ein Video.

Das könnte Ihnen auch gefallen