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 !
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기