- 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
stop n’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
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
Aucun commentaire pour le moment.