Ein tausend Dollar teures iPhone kann nicht rechnen
(journal.rafaelcosta.me)- Auf dem iPhone 16 Pro Max kommt es bei der Ausführung von MLX-LLMs zu fehlerhaften numerischen Ausgaben, während derselbe Code auf dem iPhone 15 Pro und dem MacBook Pro normal funktioniert
- Tensorwerte weichen um mehr als eine Größenordnung ab, und selbst bei identischer Eingabe werden die Ergebnisse verfälscht
- Als Ursache wird ein Hardwarefehler in der Neural Engine oder im Metal-basierten ML-Rechen-Stack vermutet
- Auch Apple-Intelligence-Funktionen zeigen ähnliche Instabilitäten, etwa fehlgeschlagene Downloads, was einen Zusammenhang möglich erscheinen lässt
- Der Entwickler betont anhand dieses Falls, dass man beim Debugging auch physische Hardwareprobleme berücksichtigen sollte
Fehler bei der Ausführung von MLX-LLMs entdeckt
- Auf dem iPhone 16 Pro Max wird bei der Ausführung eines MLX-basierten LLMs bedeutungsloser Output (gibberish) erzeugt
- Derselbe Code läuft auf dem iPhone 15 Pro und dem MacBook Pro normal
- Die CPU-Auslastung schnellt auf 100 %, und da kein „stop“-Token erzeugt wird, läuft die Ausgabe endlos weiter
- Obwohl dasselbe Modell und derselbe Prompt verwendet wurden, werden die Tensor-Ausgabewerte ungewöhnlich groß
- Auf dem iPhone 15 Pro:
[53.875, 62.5625, -187.75, ...] - Auf dem iPhone 16 Pro Max:
[191.5, 23.625, 173.75, ..., 1298, -147.25, -162.5] - Die Eingabewerte waren identisch, doch in den Zwischenschritten der Berechnung wurden die Zahlen stark verfälscht
- Auf dem iPhone 15 Pro:
Probleme mit Apple-Intelligence-Funktionen
- Über die Apple-Intelligence-API sollte eine Funktion zur Ausgabenkategorisierung implementiert werden, doch der Download der Modellunterstützung schlug fehl
- Auch nach mehrfachen Änderungen in den Einstellungen ließ sich die Funktion nicht aktivieren
- Im Apple-Community-Forum berichteten ebenfalls zahlreiche Nutzer vom selben Problem (12 Seiten an Beiträgen)
- Deshalb wurde der Zugriff auf Apple Intelligence aufgegeben und auf einen MLX-basierten Ansatz umgestellt
Debugging-Prozess und Ursachensuche
- Im Gemma-Modellcode von MLX wurden Breakpoints gesetzt, um die Tensorwerte jeder Schicht nachzuverfolgen
- Die Eingabewerte waren auf beiden Geräten identisch, aber auf dem iPhone 16 Pro Max wurden die Zahlen ab einer Zwischenstufe ungewöhnlich groß
- Auch auf dem Mac wurde dasselbe korrekte Ergebnis wie auf dem iPhone 15 Pro bestätigt
- Dadurch verfestigte sich die Überzeugung, dass es sich nicht um ein Code- oder Modellproblem, sondern um ein Hardwareproblem handelt
Möglichkeit eines Hardwaredefekts
- Möglich ist ein Rechenfehler in der Neural Engine des A18-Chips des iPhone 16 Pro Max oder im Metal-basierten ML-Ausführungspfad
- Da MLX Tensorberechnungen über Metal kompiliert, könnte ein Defekt in diesem Stack die verfälschten Ergebnisse verursacht haben
- Es wird auch erwähnt, dass die Probleme mit Apple Intelligence dieselbe Ursache haben könnten, eindeutige Belege gibt es jedoch nicht
Fazit und Lehren
- Das betroffene iPhone 16 Pro Max wurde als Gerät mit Hardwaredefekt identifiziert
- Nach dem Austausch gegen ein iPhone 17 Pro Max funktionierten anschließend alle Funktionen normal
- Der Entwickler betont aus dieser Erfahrung heraus, dass man beim Debugging nicht nur Software-, sondern auch physische Hardwareprobleme berücksichtigen sollte
- Drei Lehren:
- Fehler bei der LLM-Ausführung sind nicht immer ein Codeproblem
- Die Bedeutung von Vergleichstests in derselben Umgebung
- Selbst teure Hardware garantiert nicht unbedingt die Genauigkeit von ML-Berechnungen
1 Kommentare
Hacker-News-Kommentare
Das ist ungefähr so lustig wie die Frage: „Was ergibt Mond plus Sonne?“
Das hier ist aber ein anderes Phänomen. Apples API für numerische Berechnungen liefert auf manchen Geräten inkonsistente Ergebnisse. Das ist ein Problem, dem Apple Aufmerksamkeit schenken sollte
Denn Sonne(日) und Mond(月) zusammen ergeben 明 (Wiki-Link)
Antworten wie „Vollmond“ wären auch denkbar, aber es scheint keine eindeutig deterministische Antwort zu geben
Natürlich mit Backup, und wenn möglich am besten mit einem iCloud+-Plan. Für solche Probleme ist das die einfachste Lösung
Das spricht dafür, dass dieses iPhone 16 Pro Max einen Hardwaredefekt hatte
Das wird zum Beispiel auch in Intels Dokumentation erwähnt
Trotzdem ist es überraschend, dass das LLM auf dem iPhone 16 überhaupt nicht funktionierte. LLMs sind gegenüber Quantisierung (quantization) normalerweise ziemlich tolerant
Deshalb wollte ich das Problem zunächst aus diesem Grund abtun,
aber dass auf allen anderen Apple-Geräten dieselben Ergebnisse herauskamen und nur Apples eigenes LLM auf diesem einen Gerät versagte, war merkwürdig
Das wirkt weniger wie ein grundlegendes Problem als wie ein unerwarteter Ausfall. Dass Apple ein Gerät in diesem Zustand ausgeliefert hat, ist nicht gut
Wenn ich auf meinem Handy Mathematik mache, nutze ich einen HP Prime Emulator
Ein weiterer Lieblingsrechner ist free42 oder plus42 (Link)
Als CAS-Tool ist MathStudio unschlagbar (mathstud.io)
Es läuft auch im Browser, hat aber ebenso eine mobile App. Es fühlt sich an wie ein selbstgehostetes Wolfram Alpha
Immer noch intuitiv und schnell
Ich habe es so eingerichtet, dass es direkt über die Control-Center-Taste startet
Mein Ärgernis ist, dass man trotz dieses großen Bildschirms nicht durch den bisherigen Rechenverlauf scrollen kann
Ich möchte keine UI mehr sehen, die wie ein Nachbau eines Vierfunktionsrechners aus den 1990ern aussieht
MLX kann auch auf CPU, Apple-GPU (Metal) und NVIDIA-GPU (CUDA) laufen (Link)
Ich habe alle möglichen Einstellungskombinationen ausprobiert, aber die Vorschlagseingabe stoppt zufällig oder funktioniert fehlerhaft
Oder vielleicht eine Optimierung, um Leute zum Wechsel auf Spracheingabe zu bewegen
Wenigstens hat es nicht „7“ gesagt, also immerhin
Es wäre interessant gewesen, ein paar Apps aus dem App Store zu testen