J'ai fait tourner un modèle à 35 milliards de paramètres sur mon iPhone (IA locale)

BBetter Stack
컴퓨터/소프트웨어가전제품/카메라스마트폰/모바일

스크립트

00:00:00Ce modèle de 35 milliards de paramètres tourne directement sur mon iPhone. J'arrive à générer 11 jetons par
00:00:06seconde grâce à de l'ingénierie astucieuse pour laquelle il n'a jamais été conçu. Dans cette vidéo, je vais
00:00:11vous montrer exactement comment faire de même. Ce que j'exécute ici est un modèle de mélange d'experts (MoE).
00:00:21Il compte 35 milliards de paramètres, ce qui représente environ 20 Go sous forme de fichier 4 bits classique, et devrait résider dans la RAM.
00:00:28Mais grâce à un ensemble de techniques comme le streaming des experts depuis le SSD à la demande, les poids qui doivent réellement
00:00:33rester en mémoire descendent à seulement 1,4 Go. Je vais vous expliquer comment tout cela fonctionne, puis nous
00:00:39passerons à la configuration de l'iPhone elle-même. La plupart des modèles résident entièrement en RAM, mais l'avantage des modèles
00:00:45de mélange d'experts est qu'une seule petite partie est active à un instant donné. Cela signifie que les parties inactives
00:00:51du modèle peuvent simplement rester sur le SSD en attendant leur tour. L'astuce pour faire tourner de plus grands modèles
00:00:56avec une mémoire limitée est de ne charger en streaming que les experts nécessaires. Nous faisons tourner Qwen
00:01:023.5, la variante de 35 milliards de paramètres, et le « A3B » à la fin signifie que seuls environ 3 milliards de ces paramètres
00:01:10sont actifs pour un jeton donné. Il comporte 40 couches, chacune avec 256 petits experts plus un expert partagé. Un routeur
00:01:19sélectionne 8 de ces experts par jeton. Un seul jeton n'exécute donc qu'environ 3 milliards de paramètres sur les 35 milliards
00:01:26au total. Normalement, l'ensemble du modèle est divisé et réside entièrement en mémoire, mais cela ne
00:01:32rentrerait jamais sur un iPhone. À la place, les parties dont chaque jeton a besoin — les plongements (embeddings), l'attention, les routeurs
00:01:39et l'expert partagé — ne sont chargées qu'une seule fois et restent en RAM tout le temps, soit environ
00:01:441,4 Go. Et les experts — 40 fichiers d'environ 300 Mo chacun, totalisant 12 gigaoctets — restent sur le SSD. Pour chaque jeton,
00:01:53l'attention tourne sur le GPU, puis le routeur choisit 8 experts et le moteur lit ces 8 experts directement du SSD
00:02:00vers la mémoire GPU pour les exécuter avec l'expert partagé. Cela se produit dans chacune
00:02:06de ces 40 couches, soit 320 petites lectures pour chaque jeton. Si vous ne connaissez pas le mécanisme d'attention,
00:02:14c'est la partie du modèle qui revoit tout l'historique de la conversation pour déterminer
00:02:19quels mots précédents sont importants pour prédire le suivant. L'attention tourne sur chaque jeton quoi
00:02:25qu'il arrive, elle doit donc rester en mémoire. Les experts sont la partie qui effectue la réflexion sur un jeton une fois que
00:02:31l'attention a établi le contexte. Mais comme seuls 8 de ces experts sont utilisés, nous pouvons laisser
00:02:36le reste sur le disque. Il n'y a aucun cache d'experts dans l'application. Chaque lecture passe par le système d'exploitation,
00:02:42et iOS conserve les experts récents dans son propre cache de pages tant qu'il a de la RAM disponible. Les auteurs
00:02:49avaient créé leur propre cache de 9,8 Go puis l'ont supprimé, ce qui a rendu l'exécution 38 % plus rapide car
00:02:55sur Mac ou iPhone, toute RAM allouée à l'application est de la RAM retirée au GPU et à ce cache de pages.
00:03:03C'est ce cache qui fait le plus gros du travail. À 11 jetons par seconde, si chaque expert provenait du stockage flash,
00:03:09le téléphone nécessiterait plus de 5 Go/s en lecture, alors que la mémoire flash de l'iPhone ne dépasse pas environ 1,6 Go/s.
00:03:15La majorité des experts proviennent donc de la RAM gérée par l'OS. L'astuce suivante est la quantification étagée.
00:03:22La quantification compresse les poids d'un modèle pour qu'ils prennent moins de place, mais elle réduit aussi
00:03:29leur précision et affecte donc l'intelligence. Toutefois, avec ce modèle, environ 25 % des
00:03:35experts traitent près de 80 % du travail. Les experts les plus sollicités restent en 4 bits, et les moins sollicités
00:03:41sont quantifiés en 2 bits, ce qui les rend 44 % plus petits. Le fichier global réduit de 34 %, passant de 19 Go à
00:03:5013 Go
00:03:57modèle en mode réflexion. Il faut avouer que le téléphone chauffe fort, littéralement juste en disant « bonjour », je le sens
00:04:03chauffer dans ma main, donc évitez de faire exploser votre téléphone en le testant. J'ai même un peu
00:04:08peur de taper des requêtes trop complexes de crainte que ça ne me fonde dans la main.
00:04:14Le moteur spécifique que nous utilisons est un projet appelé Flash MoE créé par Dan Woods. Il avait été écrit pour un
00:04:19MacBook, et il existe un portage iOS minimal appelé Flash iOS qui intègre ce même moteur dans une app iPhone,
00:04:26ce qui me permet de faire tourner le tout sur mon téléphone. Au départ, j'ai eu un bug où la réflexion du
00:04:31modèle bouclait à l'infini : il commençait très bien, puis au bout de 10 mots, il répétait
00:04:35indéfiniment les deux mêmes tokens. Pour corriger ça, j'ai mis à jour la fonction « async pre-read weight » afin qu'elle vérifie
00:04:41la lecture de chaque expert par rapport à sa propre taille. Les experts 2 bits font la moitié de la taille des experts 4 bits,
00:04:48donc avant le correctif, tous les experts 2 bits échouaient au contrôle de taille et étaient ignorés silencieusement. Le modèle tournait
00:04:54en fait avec la moitié de ses experts, d'où la boucle infinie. Si cette vidéo vous plaît, vous nous feriez
00:04:59une immense faveur en vous abonnant à la chaîne pour qu'on puisse continuer à vous proposer du contenu gratuit tous les jours. Pour
00:05:05installer tout ça sur votre téléphone, vous devez cloner le dépôt, appliquer le correctif de pré-lecture mentionné dans
00:05:11metal infer slash infer.m, puis configurer l'équipe et le bundle ID dans le projet Xcode. Un compte développeur Apple payant
00:05:18est requis. Compilez en version release et installez sur votre iPhone. Téléchargez le modèle quantifié
00:05:24pré-paqueté qui fait environ 13 Go, puis transférez-le sur l'app via USB, ce qui prend environ 7 minutes.
00:05:30Sur le téléphone, ouvrez l'app Flash MoE, touchez le modèle et commencez à discuter. Si vous souhaitez tester l'exécution
00:05:36de modèles locaux sur votre Mac pour obtenir un débit de tokens encore plus rapide, regardez la vidéo suivante. C'était Warren de
00:05:43Better Stack, merci mille fois d'avoir regardé et je vous dis à très bientôt dans la prochaine vidéo !

핵심 요약

L'exécution locale d'un modèle MoE de 35 milliards de paramètres sur iPhone devient possible à 11 jetons par seconde en conservant 1,4 Go d'éléments fixes en RAM et en lisant dynamiquement les experts quantifiés depuis le SSD.

하이라이트

  • Un modèle Mixture of Experts (MoE) de 35 milliards de paramètres peut tourner sur un iPhone à une vitesse de 11 jetons par seconde.

  • Le chargement dynamique réduit l'empreinte mémoire vive (RAM) nécessaire de 20 Go à seulement 1,4 Go.

  • Une quantification étagée en 2 bits et 4 bits réduit la taille totale des fichiers du modèle de 19 Go à 13 Go, soit une baisse de 34 %.

  • L'utilisation exclusive du cache de pages natif d'iOS au lieu d'un cache applicatif dédié accélère l'exécution de 38 %.

  • L'exécution du modèle nécessite l'envoi de 13 Go de données via USB et un compte développeur Apple payant pour installer l'application Xcode.

타임라인

Architecture du modèle MoE et streaming depuis le SSD

  • Le modèle Qwen 3.5 A3B n'active que 3 milliards de paramètres sur ses 35 milliards totaux pour chaque jeton.
  • Les éléments permanents comme l'attention et les routeurs occupent 1,4 Go en RAM, tandis que 12 Go d'experts restent stockés sur le SSD.
  • Chaque jeton déclenche 320 lectures individuelles sur le stockage SSD à travers 40 couches de données.

Les modèles de mélange d'experts (MoE) n'activent qu'une fraction de leurs paramètres à un instant donné. Pour Qwen 3.5 A3B, 8 experts sur 256 sont sélectionnés par couche via un routeur. Charger uniquement les composants critiques (embeddings, attention, routeur, expert partagé) en RAM permet de conserver l'essentiel du modèle sous forme de 40 fichiers de 300 Mo sur le stockage flash.

Gestion du cache iOS et optimisation par quantification

  • L'élimination du cache mémoire applicatif au profit du cache de pages d'iOS augmente la vitesse d'exécution de 38 %.
  • La quantification étagée compresse 75 % des experts secondaires en 2 bits et conserve les 25 % les plus sollicités en 4 bits.
  • Le débit théorique nécessaire de 5 Go/s est compensé par le cache RAM géré directement par le système d'exploitation.

L'allocation de RAM dédiée dans une application iOS réduit la mémoire disponible pour le GPU et le système de cache de pages du noyau. La suppression du cache personnalisé de 9,8 Go permet à iOS d'optimiser les lectures flash dont le débit matériel plafonne à 1,6 Go/s. En parallèle, la quantification hybride cible la loi des 80/20, où un quart des experts effectue l'essentiel du travail, réduisant la taille du modèle à 13 Go sans dégrader les performances.

Débogage du moteur Flash MoE et procédure d'installation

  • Une boucle infinie de génération de jetons provenait de l'échec du contrôle de taille des experts quantifiés en 2 bits.
  • Le correctif nécessite de modifier la fonction de pré-lecture asynchrone dans le fichier metal infer/infer.m.
  • L'installation requiert une compilation Xcode avec un compte développeur payant et le transfert d'un fichier de 13 Go par câble USB.

Le moteur Flash MoE, initialement développé par Dan Woods pour macOS, présente une erreur lors du traitement des poids 2 bits. La vérification stricte rejetait les fichiers d'experts de demi-taille, ce qui forçait le modèle à tourner avec la moitié de ses composants et entraînait la répétition de tokens. La résolution de ce bug exige une modification du code source avant la compilation Release dans Xcode et le transfert direct du modèle sur le téléphone.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기