Un iPhone à mille dollars ne sait pas faire de calculs
(journal.rafaelcosta.me)- Sur l’iPhone 16 Pro Max, l’exécution d’un LLM avec MLX produit des valeurs numériques incorrectes, alors que le même code fonctionne normalement sur un iPhone 15 Pro et un MacBook Pro
- Les valeurs des tenseurs diffèrent de plus d’un ordre de grandeur, et les résultats sont altérés même avec la même entrée
- La cause probable serait un défaut matériel du Neural Engine ou de la pile de calcul ML basée sur Metal
- Les fonctions Apple Intelligence montrent elles aussi une instabilité similaire, comme des échecs de téléchargement, ce qui laisse envisager un lien
- À travers ce cas, le développeur souligne qu’il faut aussi envisager un problème matériel physique lors du débogage
Découverte d’une erreur d’exécution de MLX LLM
- Sur l’iPhone 16 Pro Max, l’exécution d’un LLM basé sur MLX génère une sortie incohérente (
gibberish)- Le même code fonctionne normalement sur un iPhone 15 Pro et un MacBook Pro
- L’utilisation CPU grimpe à 100 % et le token
stopn’est pas généré, ce qui maintient une sortie infinie
- Malgré l’utilisation du même modèle et du même prompt, les valeurs de sortie des tenseurs deviennent anormalement élevées
- Sur iPhone 15 Pro :
[53.875, 62.5625, -187.75, ...] - Sur iPhone 16 Pro Max :
[191.5, 23.625, 173.75, ..., 1298, -147.25, -162.5] - Les valeurs d’entrée étaient identiques, mais les nombres sont fortement déformés au cours des étapes intermédiaires du calcul
- Sur iPhone 15 Pro :
Problèmes avec les fonctions Apple Intelligence
- Une tentative d’implémenter une fonction de catégorisation des dépenses à l’aide de l’API Apple Intelligence a échoué, car le modèle pris en charge ne se téléchargeait pas
- Même après plusieurs changements dans les réglages, la fonction ne s’activait pas
- Sur les forums communautaires Apple, de nombreux utilisateurs signalent le même problème (12 pages de retours)
- Cela a conduit à abandonner l’accès à Apple Intelligence pour passer à une approche basée sur MLX
Processus de débogage et recherche de la cause
- Un point d’arrêt a été placé dans l’implémentation du modèle Gemma de MLX pour suivre les valeurs des tenseurs à chaque couche
- Les valeurs d’entrée étaient identiques sur les deux appareils, mais sur l’iPhone 16 Pro Max les chiffres devenaient anormalement grands dès les étapes intermédiaires
- Sur Mac aussi, les mêmes résultats corrects que sur l’iPhone 15 Pro ont été confirmés
- Cela a permis de conclure avec certitude qu’il s’agissait d’un problème matériel, et non du code ou du modèle
Possibilité d’un défaut matériel
- Une erreur de calcul pourrait se produire dans le Neural Engine de la puce A18 de l’iPhone 16 Pro Max ou dans le chemin de calcul ML basé sur Metal
- Comme MLX compile les opérations sur tenseurs via Metal, un défaut dans cette pile pourrait provoquer la déformation des résultats
- La possibilité d’une cause commune avec le problème Apple Intelligence est également évoquée, sans preuve claire à ce stade
Conclusion et enseignements
- L’iPhone 16 Pro Max concerné a été confirmé comme étant une unité présentant un défaut matériel
- Après remplacement par un iPhone 17 Pro Max, toutes les fonctions ont de nouveau fonctionné normalement
- À travers cette expérience, le développeur insiste sur le fait qu’en débogage, il faut envisager non seulement les problèmes logiciels, mais aussi les problèmes matériels physiques
- Trois enseignements :
- Une erreur d’exécution d’un LLM n’est pas toujours un problème de code
- L’importance des tests comparatifs dans un environnement identique
- Même un matériel coûteux ne garantit pas forcément la précision des calculs ML
1 commentaires
Avis Hacker News
C’est aussi absurde que de demander « que donne lune plus soleil ? »
Mais le phénomène observé ici est différent. L’API d’opérations numériques d’Apple renvoie des résultats incohérents sur certains appareils. C’est un problème auquel Apple devrait prêter attention
Parce que soleil (日) et lune (月) assemblés donnent 明 (lien Wiki)
On pourrait aussi répondre « pleine lune », mais il ne semble pas y avoir de réponse déterministe évidente
En faisant bien sûr une sauvegarde, et si possible avec un abonnement iCloud+. Pour ce genre de problème, c’est la solution la plus simple
Donc cet iPhone 16 Pro Max semble avoir eu un défaut matériel
C’est par exemple mentionné dans la documentation d’Intel
Cela dit, voir le LLM ne pas fonctionner du tout sur l’iPhone 16 est surprenant. Les LLM sont en général assez tolérants à la quantification
Au début, j’ai voulu écarter le problème pour cette raison, mais
le fait que tous les autres appareils Apple produisaient le même résultat, et que le LLM d’Apple échouait uniquement sur cet appareil, était étrange
Cela ressemble moins à un problème fondamental qu’à une défaillance inattendue. Qu’Apple ait expédié un appareil dans cet état n’est pas acceptable
Pour faire des maths sur mon téléphone aujourd’hui, j’utilise un émulateur HP Prime
Une autre calculatrice que j’utilise souvent est free42 ou plus42 (lien)
Pour les outils de CAS, MathStudio est le meilleur (mathstud.io)
Ça fonctionne aussi dans le navigateur, mais il y a également une appli mobile. Ça donne l’impression d’un Wolfram Alpha auto-hébergé
C’est toujours intuitif et rapide
Je l’ai configurée pour qu’elle se lance directement depuis le bouton du Centre de contrôle
Mon reproche, c’est que malgré un écran aussi grand, on ne peut pas faire défiler l’historique des calculs précédents
J’en ai assez des interfaces qui imitent les calculatrices à 4 fonctions des années 1990
MLX peut aussi s’exécuter sur CPU, GPU Apple (Metal) et GPU NVIDIA (CUDA) (lien)
J’ai essayé toutes sortes de combinaisons de réglages, mais le texte prédictif s’arrête aléatoirement ou dysfonctionne
Ou alors une optimisation destinée à pousser vers la saisie vocale
Au moins, il n’a pas répondu « 7 », c’est déjà ça
Tester quelques applis de l’App Store aurait probablement donné des résultats intéressants