Zum Inhalt springen

Technik

Welche Modelle wirklich auf MLX laufen

Wie Sie vor dem Herunterladen von acht Gigabyte erkennen, ob ein Modell von Hugging Face auf Apple Silicon lädt: das Format, die Architektur, die Quantisierung und die vier Fallen, die man leicht übersieht.

Aktualisiert 2026-09-12Gemessen 2026-09-07

Eine Modellseite auf Hugging Face sagt Ihnen nicht, ob das Ding auf Ihrem Mac laufen wird. Sie erfahren es nach dem Herunterladen, aus einer Fehlermeldung, die ein Feld in einer Datei nennt, die Sie noch nie geöffnet haben.

Alles Folgende lässt sich aus der Dateiliste eines Repositories und seiner config.json prüfen, in etwa zwei Anfragen. Es gilt für MLX allgemein und nicht nur für Runlix: Die Fallen stecken im Format und in den Modellkonfigurationen, und sie erwischen jede Laufzeitumgebung, die diese liest.

Erste Frage: Gibt es eine Safetensors-Datei?

MLX lädt Safetensors. Kein GGUF, keine PyTorch-.bin, kein ONNX, kein GGML.

Das ist die mit Abstand häufigste Enttäuschung, und der Grund dafür ist, dass das meiste Material zum Thema «lokal ausführen» überhaupt nicht von MLX handelt: Es handelt von llama.cpp, dessen GGUF-Container mit Safetensors nicht austauschbar ist. GGUF ist der Container von llama.cpp; er bringt eigene Quantisierungsverfahren und eigene Metadaten mit, und ihn zu lesen hieße, diesen Container zu implementieren. Ein Modell, das nur als GGUF veröffentlicht ist, läuft nicht auf MLX, und keine Konfiguration der Welt ändert daran etwas.

Die praktische Abkürzung: Suchen Sie nach einer Fassung des Modells bei mlx-community. Diese Organisation veröffentlicht Modelle erneut, umgewandelt in MLX-Safetensors, meist in mehreren Quantisierungen — und wenn es eine gibt, ist sie fast immer das Richtige zum Herunterladen.

Ein Repository, in dem nur pytorch_model.bin liegt, fällt ebenfalls aus, was Leute überrascht, weil die Gewichte ja «da» sind. Ein echtes Beispiel: BAAI/bge-m3 veröffentlicht ausschließlich PyTorch-Gewichte und lädt deshalb nicht — und der Grund ist das Format, nicht die Architektur, die durchaus unterstützt wird.

Zweite Frage: Was sagt model_type?

Öffnen Sie die config.json im Repository — Hugging Face zeigt sie im Browser an — und suchen Sie model_type. Diese Zeichenkette entscheidet, welche Implementierung die Gewichte liest, und wenn sie nichts implementiert, lädt das Modell nicht.

Zwei Dinge über diese Zeichenkette lohnen sich zu wissen, weil beide zu falschen Schlüssen führen.

Es gibt Aliasnamen. mistral ist, was die Implementierung angeht, ein anderer Name für llama: Die Architektur hat dieselbe Form, also läuft ein Mistral-Modell überall dort, wo llama läuft, obwohl der Name nichts davon andeutet. Die Bibliothek von MLX führt dafür eine Umschlüsselungstabelle, und die ist das Richtige zum Nachschlagen — nicht eine Liste, die jemand abgetippt hat.

Bildmodelle verstecken sich hinter Namen von Textmodellen. gemma3 und qwen2_5_vl haben einen model_type, der wie der eines Textmodells aussieht, und wer zuerst die Architektur prüft, winkt ein Bildmodell durch. Die verlässlichen Anzeichen stehen woanders im Repository: eine preprocessor_config.json, ein Block vision_config in der config.json, oder ein Name, der _vl, vision, llava oder paligemma enthält. Nach denen sehen Sie vor der Familie.

Dritte Frage: Wie ist es quantisiert?

Quantisierte MLX-Modelle tragen in der config.json einen Block quantization mit der Anzahl der Bits und der Gruppengröße. Vier Bit ist der Normalfall und funktioniert gut; acht Bit kostet mehr Speicher und liegt näher am Original.

Die Falle hier heißt Quantisierung pro Tensor. Manche Veröffentlichenden quantisieren verschiedene Tensoren unterschiedlich genau und halten das als Abbildung in der Konfiguration fest statt als eine einzige Einstellung. Eine Laufzeitumgebung, die eine Quantisierung auf das ganze Modell anwendet, liest diese Gewichte mit der falschen Bitzahl — und das scheitert nicht laut. Es erzeugt Zahlen, die falsch sind und trotzdem noch wie Text aussehen.

Ein echtes Beispiel, das darüber stolpert: Qwen3.8-27B-Uncensored-OptiQ-4bit. Der Name sagt vier Bit; die Konfiguration sagt für einige Tensoren etwas anderes.

Vierte Frage: Erklärt die Konfiguration etwas Exotisches?

Drei Felder führen zu stiller Unrichtigkeit statt zu sauberem Scheitern, und deshalb verweigert eine sorgfältige Laufzeitumgebung sie, statt zu raten.

rope_scaling beschreibt, wie die Positionsinformation gedehnt wird, um einen längeren Kontext zu erreichen. default, llama3 und yarn sind die üblicherweise implementierten Verfahren. Etwas anderes bedeutet, dass die Positionen anders berechnet werden, als das Modell trainiert wurde, und die Ausgabe wird plausibel und verschlechtert sein statt sichtbar kaputt.

Über YaRN im Besonderen lohnt sich zu wissen: Wenn es mscale_all_dim erklärt, skaliert es auch die Aufmerksamkeit und nicht nur die Frequenzen. Das zu übersehen erzeugt keinen Fehler — es erzeugt Logits, die alle um denselben Faktor danebenliegen, sodass die Rangfolge weiterhin vernünftig aussieht, während die Werte es nicht sind.

sliding_window begrenzt, wie weit die Aufmerksamkeit zurückreicht. Und hier ist die Falle, eine schöne: Qwen2.5 erklärt sliding_window: 131072 und setzt anschließend use_sliding_window: false. Eine Prüfung, die nur das erste Feld liest, weist ein völlig einwandfreies Modell ab. Man muss beide lesen.

layer_types taucht bei Modellen auf, die über die Schichten hinweg verschiedene Arten von Aufmerksamkeit mischen. Alles außer voller Aufmerksamkeit auf jeder Schicht heißt, dass das Modell ein Verhalten erwartet, das eine einfache Implementierung nicht liefert.

Fünfte Frage: Passt es hinein?

MLX läuft auf der GPU, und auf Apple Silicon teilt sich die GPU den Speicher mit allem anderen. Die Obergrenze ist nicht die RAM-Zahl auf der Verpackung: Sie ist die Arbeitsmenge, die Metal empfiehlt, und die liegt darunter. Auf einer Maschine mit 24 GB kamen dabei 23347 MB heraus — und das ist die Grenze für alles, nicht nur für Gewichte.

Eine grobe Schätzung, die sich hält: Die Gewichte auf der Platte kommen dem Speicher nahe, den sie belegen, und ein langer Prompt kostet spürbar mehr obendrauf. An einem kleinen llama gemessen lag der Spitzenverbrauch bei einem Prompt von 4096 Token beim 1,68-fachen der Gewichte. Die Gewichtsgröße zu verdoppeln ist eine sichere Planungszahl.

Ein Vier-Bit-Modell, dessen Dateien zusammen 8 GB ergeben, will also rund 16 GB frei haben, um mit langen Prompts bequem zu sein — was auf einer 16-GB-Maschine heißt, dass es das Einzige ist, was Sie laufen lassen.

Eine Modellkarte lesen, ohne sich täuschen zu lassen

Modellkarten schreiben Leute, die mit ihrem Modell zufrieden sind, was in Ordnung ist, und sie sind nicht dafür geschrieben, Ihnen zu sagen, ob es lädt. Drei Gewohnheiten helfen.

Ignorieren Sie die Parameterzahl im Namen und sehen Sie sich die Dateigrößen an. «7B» sagt etwas über die Architektur, nicht darüber, was Sie herunterladen. Dasselbe 7B-Modell gibt es als 15 GB Gewichte in 16 Bit, als 8 GB in 8 Bit und als 4 GB in 4 Bit, und der Name ist in allen drei Fällen identisch. Die Dateiliste ist die ehrliche Zahl.

Ignorieren Sie Benchmark-Tabellen zu diesem Zweck vollständig. Sie sagen nichts darüber, ob das Format stimmt, und ein Modell, das gut abschneidet und nicht lädt, schneidet auf Ihrer Maschine gar nicht ab.

Sehen Sie an, was das Repository tatsächlich enthält, statt was die Karte beschreibt. Häufig beschreibt eine Karte das Originalmodell, während das Repository eine Umwandlung enthält, oder umgekehrt. Dateien haben keine Meinungen.

Wenn die Antwort „noch nicht“ ist

Zwischen «läuft» und «läuft nicht» gibt es eine mittlere Antwort, und die zu verstehen lohnt sich, weil dort viele Modelle landen.

Die Bibliothek von MLX implementiert weit über hundert Architekturen. Jede einzelne Laufzeitumgebung implementiert weniger — Runlix sechs —, und der Unterschied ist auf keiner Seite ein Mangel: Eine übersetzte Architektur muss gegen eine Referenz geprüft werden, bevor man ihr trauen kann, und diese Prüfung ist es, die Zeit kostet.

Es lohnt sich also, zwei Listen zu prüfen statt einer: die eigenen Architekturen der Laufzeitumgebung und die der Bibliothek. Eine Familie, die in der zweiten steht und nicht in der ersten, ist noch nicht — bekannt, übersetzbar, und wartet auf ihre Prüfung. Eine Familie, die in keiner steht, ist eine andere Geschichte: Heute führt sie niemand auf MLX aus, und das Warten auf eine Laufzeitumgebung ändert daran nichts.

Was Ihnen das alles nicht sagt

Alles Obige handelt davon, ob die Gewichte laden und Zahlen erzeugen. Es sagt nichts darüber, ob das Modell etwas taugt, ob es Ihre Sprache gut spricht, ob seine Lizenz erlaubt, was Sie vorhaben, oder ob die Quantisierung es etwas gekostet hat, das für Ihre Aufgabe zählt.

Vier-Bit-Quantisierung im Besonderen ist nicht umsonst zu haben. Meist ist sie ein guter Tausch, bei kleinen Modellen manchmal nicht — je kleiner das Modell, desto mehr hat jedes einzelne Bit getan. Wenn ein Vier-Bit-Modell Sie enttäuscht, ist die Acht-Bit-Fassung desselben Modells das billigere Experiment, verglichen mit einem Modellwechsel.

Die Kurzfassung

Prüfen Sie vor dem Herunterladen fünf Dinge, in dieser Reihenfolge:

  1. Safetensors vorhanden — sonst aufhören;
  2. kein Bildmodell — zuerst preprocessor_config.json und vision_config prüfen, denn der Name verrät es Ihnen nicht;
  3. model_type ist implementiert — im Wissen, dass es Aliasnamen gibt und mistral llama bedeutet;
  4. die Quantisierung ist eine Einstellung und keine Abbildung pro Tensor;
  5. rope_scaling, sliding_window und layer_types sind gewöhnlich — und lesen Sie beide Felder zum Sliding Window.

Warum «ich weiß es nicht» eine echte Antwort ist

Jede dieser Prüfungen kann ohne Ergebnis bleiben: Das Repository antwortet vielleicht nicht, oder es hat gar keine config.json. Die Versuchung ist zu raten, weil ein Urteil nützlicher wirkt als ein Achselzucken.

Ist es nicht. Eine Laufzeitumgebung, die rät, wenn sie es nicht sagen kann, rät irgendwann falsch, und zwar überzeugt, und Sie verbringen die Fehlersuche mit der falschen Hypothese. Nichtwissen gehört ausgesprochen.

Runlix führt diese Prüfungen für Sie aus, in der Zeile, vor dem Herunterladen — mit dem Grund neben dem Urteil, auch dann, wenn der Grund lautet, dass es sich nicht ermitteln ließ. Aber es geht um die Prüfungen, nicht um das Werkzeug: Es sind fünf Fragen an eine Datei, die jeder lesen kann, und sie zu kennen ist mehr wert als jede Anwendung, die sie stellvertretend beantwortet.