Comment Installer le Nouveau LLM Apple Ferret sur son Mac
DĂ©veloppĂ© en collaboration avec lâUniversitĂ© Cornell, Apple a prĂ©sentĂ© trĂšs discrĂštement sur GitHub, son tout premier modĂšle de LLM, Ferret. Bien aprĂšs OpenAI, Meta ou encore Google, Apple se lance donc, Ă son tour, dans la course aux LLM. Lâapproche est toutefois diffĂ©rente. Open source et multimodal, ce modĂšle combine vision par ordinateur et traitement du langage naturel, offrant des capacitĂ©s uniques en termes de comprĂ©hension et dâanalyse du texte et des images. Plus puissant que GPT-4 dâOpenAI au dire dâApple, cette avancĂ©e promet dâenrichir les appareils de la firme, notamment en amĂ©liorant lâinterprĂ©tation des donnĂ©es et peut-ĂȘtre mĂȘme de Siri.
Ironie du sort, bien quâApple ait arrĂȘtĂ© dâutiliser et de supporter les produits de NVIDIA depuis 2016, son modĂšle Ferret a Ă©tĂ© dĂ©veloppĂ© en utilisant les cartes graphiques trĂšs performantes de NVIDIA, les A100. Le code source disponible sur GitHub ne fonctionne donc pas sur les produits de la Pomme.
Voyons comment y remĂ©dier et testons les capacitĂ©s et la rĂ©activitĂ© de cette toute premiĂšre version de Ferret sur nos machines âDesigned by Appleâ.
- CUDA, MPS et Prérequis
- Installation de Ferret
- Lancement de la démo de Ferret
- Test de la démo
- Optimisation du ModĂšle Ferret pour les Appareils Apple
- Conclusion
- Les +
- Les -
- Usages
CUDA, MPS et Prérequis
La plus grande adhĂ©rence du code de Ferret rĂ©side dans son utilisation de CUDA, le framework pour GPU de NVIDIA. Heureusement, la librairie utilisĂ©e est PyTorch qui a Ă©tĂ© portĂ©e et optimisĂ©e pour les GPU Apple Silicon. Le portage vers lâAPI Metal dâApple et son framework Metal Performance Shaders (MPS) sera dâautant plus simple.
Lâautre point Ă noter est la documentation sommaire sur lâinstallation et lâutilisation de Ferret sur le site de GitHub, preuve sâil en est, quâApple rĂ©serve son modĂšle LLM uniquement aux chercheurs comme le prĂ©cise ses conditions dâutilisation.
Alors cherchons ensemble comment faire tourner ce Ferret sur nos Mac. Pour cela, gardons en tĂȘte quâune quantitĂ© substantielle de mĂ©moire GPU est nĂ©cessaire. Nos tests ont Ă©tĂ© rĂ©alisĂ©s sur un MacBook Pro M1 Max dotĂ© de 64 Go de mĂ©moire.
Installation de Ferret
Ătape 1 : Configurer Git
Commencez par installer Git Large File Storage (LFS) pour gérer les tailles importantes des fichiers dont nous allons avoir besoin :
Ătape 2 : TĂ©lĂ©charger le Code Source de Ferret
Jâai adaptĂ© le code de Ferret pour les processeurs Silicon et le framework Metal Performance Shaders (MPS) dâApple. Il est disponible sur ce repo :
- La branche main contient le code dâorigine dâApple.
- La branche silicon contient ma version adaptée.
Cette structuration facilite la comparaison entre les deux versions.
Pour télécharger le code :
Ătape 3 : CrĂ©er un Environnement Virtuel Python
Ferret utilise Python, donc créons un environnement virtuel avec Conda pour isoler les dépendances :
Installez ensuite les dépendances nécessaires :
Ătape 4 : Installer le ModĂšle Vicuna
Placez le modÚle Vicuna dans le répertoire ./model
Ă la racine du projet :
Patientez pendant le téléchargement du modÚle.
Ătape 5 : TĂ©lĂ©charger les Poids de Ferret
Apple fournit un fichier avec les différences entre les poids de Vicuna et Ferret. Téléchargez-les :
Cette Ă©tape peut prendre un peu de temps.
Ătape 6 : Transformer Vicuna en Ferret
Pour appliquer les modifications de Ferret sur Vicuna :
Suivez les logs pour confirmer le bon dĂ©roulement de lâopĂ©ration :
Vous venez dâinstaller Ferret sur votre Mac !
Lancement de la démo de Ferret
La dĂ©mo fournie par Apple permet dâapprĂ©cier les capacitĂ©s du nouveau modĂšle via une interface web.
Ce dĂ©monstrateur inclut un contrĂŽleur, un serveur web Gradio et un worker de modĂšle qui charge les poids et effectue lâinfĂ©rence.
Lancez la démo avec ces commandes dans trois terminaux séparés :
Ătape 7 : Premier Terminal
DĂ©marrez le contrĂŽleur :
Attendez le message indiquant que le contrÎleur est opérationnel : Uvicorn running on http://0.0.0.0:10000 (Press CTRL+C to quit)
Ătape 8 : DeuxiĂšme Terminal
Lancez le serveur web :
Attendez que sâaffiche la ligne Running on local URL: http://0.0.0.0:7860
:
Ătape 9 : TroisiĂšme Terminal
Exécutez le worker de modÚle :
Surveillez les logs pour vérifier que tout fonctionne correctement : Uvicorn running on http://0.0.0.0:40000 (Press CTRL+C to quit)
Ătape 10 : AccĂ©der Ă la dĂ©mo
Cliquez sur lâadresse http://localhost:7860/ pour accĂ©der Ă lâinterface web de la dĂ©mo.
Test de la démo
Apple a inclus des tests avec images et prompts pré-remplis pour évaluer Ferret.
Testons-les !
Test 1 : Le chien et les furets
- SĂ©lectionnez la premiĂšre image (le chien blanc) dans
Examples
. - Dans
Referring Input Type
, choisissezSketch
. - Dessinez sur le chien et le furet dans
Image & Sketch
. - Cliquez enfin sur le bouton
Soumettre
en face du promptWhatâs the relationship between object [region0] and object [region1]?
Les rĂ©ponses varient, mais restent cohĂ©rentes avec lâimage et dĂ©pendent sans doute des pixels sĂ©lectionnĂ©s :
- Essai 1 :
The object [497, 303, 791, 658] is a dog, and itâs standing next to another dog [307, 507, 459, 690]. They seem to be enjoying their time together in the snow.
- Essai 2 :
The object [457, 283, 817, 701] is a dog, and the object [318, 498, 464, 707] is a ferret. The dog and the ferret appear to be sitting together in the snow, suggesting a friendly interaction or companionship.
Limitations
Ferret peut consommer beaucoup de mĂ©moire, et il peut ĂȘtre nĂ©cessaire de redĂ©marrer le worker de modĂšle entre deux tests. Sur mon MacBook M1 Max et ses 64 Go, 62 Go de RAM Ă©taient utilisĂ©es, 2 Go de fichiers mis en cache et 20 Go pour le fichier dâĂ©change.
Test 2 : Le ponton sur le lac
- SĂ©lectionnez la deuxiĂšme image (le ponton).
- Sans dessiner, soumettez le prompt en cliquant sur le bouton
Soumettre
en face du promptWhat are the things I should be cautious about when I visit here? Tell me the coordinates in response.
- RĂ©sultat :
When youâre on the dock [218, 535, 810, 993], you should be mindful of a few things. Firstly, the water [0, 518, 998, 997] is a crucial aspect, and you should be careful not to go too close to the edge [731, 543, 998, 591]. Secondly, the surrounding trees [875, 366, 940, 510] [707, 385, 757, 535] [650, 393, 695, 529] [512, 420, 540, 526] [775, 375, 818, 522] could pose a hazard if youâre not cautious. Lastly, itâs important to be aware of the path [218, 535, 810,] to ensure you stay on the right track to avoid any unintentional falls or injuries.
Test 3 : Le salon
- Choisissez la troisiĂšme image (le salon).
- Soumettez le prompt sans dessiner en cliquant sur le bouton
Soumettre
en face du promptDescribe the image in details.
- Ferret commence Ă nous rĂ©pondreâŠ
- RĂ©sultat :
- Ferret rĂ©dige lentement sa rĂ©ponse. On sent quâil se sent Ă lâĂ©troit dans les 64 Go de RAM.
- Il parvient tout mĂȘme Ă rĂ©diger ceci :
The image depicts a cozy living room [12, 1, 982, 989] with various pieces of furniture [490, 588, 709, 883] and decorations [244, 27, 394, 110] [247, 28, 274, 109] [378, 43, 411, 108]. In the center, there is a colorful, multicolored rug [90, 689, 746, 994] on the floor. A flat-screen TV [1, 394, 93, 723] is mounted on the left wall, with remotes [5, 679, 60, 734] placed nearby. Two couches [513, 421, 938, 769] [501, 577, 993, 995] are arranged in the room, with one along the right wall and another on the far end of the room. A few chairs are also present, scattered around the room. A dining table [710, 392, 954, 511] [
- Avant de planter lamentablement avec un
NETWORK ERROR DUE TO HIGH TRAFFIC. PLEASE REGENERATE OR REFRESH THIS PAGE. (error_code: 1)
- Dans les logs, on peut lire :
Caught Unknown Error MPS backend out of memory (MPS allocated: 26.50 GB, other allocations: 55.14 GB, max allowed: 81.60 GB). Tried to allocate 10.00 KB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 to disable upper limit for memory allocations (may cause system failure).
Pas de solution donc pour mon MacBook Pro, les 80 Go occupĂ©s par Ferret ne suffisent pasâŠ
Bilan des Tests
AprĂšs cette sĂ©rie de tests, il est clair que Ferret dĂ©montre une capacitĂ© impressionnante Ă analyser et dĂ©crire une image et Ă le retranscrire en langage naturel, offrant de nouvelles possibilitĂ©s. Cependant, il est Ă©galement apparu que Ferret peut ĂȘtre sujet Ă des problĂšmes de consommation Ă©levĂ©e de mĂ©moire, particuliĂšrement lors de traitements prolongĂ©s, entraĂźnant des lenteurs notables lorsque la mĂ©moire commence Ă ĂȘtre compressĂ©e, voire des plantages.
Lorsque Ferret fonctionne normalement, lâutilisation du GPU atteint des pics allant jusquâĂ 90%, signe que lâactivitĂ© du rĂ©seau de neurones a bien lieu dans cette partie du SoC (System on Chip). Par contraste, lâactivitĂ© du CPU se maintient Ă un niveau stable, autour de 20%.
Cependant, lâanalyse du suivi des consommations de ressources de Ferret rĂ©vĂšle que les pĂ©riodes de ralentissement dans les rĂ©ponses du modĂšle coĂŻncident avec les phases de compression de la mĂ©moire en RAM. LâactivitĂ© du GPU baisse alors aux alentours de 20% tandis que celle du CPU se maintient autour de 20%. Le problĂšme semble donc rĂ©sider dans la mĂ©moire, et on peut penser que le systĂšme effectue du swapping ou compresse/dĂ©compresse la mĂ©moire faute de suffisamment de RAM disponible pour le modĂšle et ses traitements.
Optimisation du ModĂšle Ferret pour les Appareils Apple
Suite Ă lâanalyse de lâinstallation et des essais du format 13B, il devient Ă©vident quâApple doit relever le dĂ©fi dâadapter son modĂšle pour le faire fonctionner de façon optimale sur ses Macs et ses iPhones. Pour cela, Apple envisagerait diverses stratĂ©gies, selon les rumeurs et les informations disponibles sur internet. Certaines de ces stratĂ©gies sont dĂ©jĂ bien Ă©tablies, tandis que dâautres proviennent directement de ses laboratoires de recherche :
Quantification du ModĂšle (Quantization)
La quantification rĂ©duit la prĂ©cision des poids du modĂšle, diminuant ainsi sa taille et sa consommation de ressources sans compromettre significativement la performance des prĂ©dictions. Alors que les modĂšles traditionnels peuvent utiliser des poids reprĂ©sentĂ©s par des nombres Ă virgule flottante de 32 bits (float32), la quantification rĂ©duit cette prĂ©cision Ă des formats plus compacts, tels que 16 bits (float16) ou mĂȘme 8 bits (int8). Cela est particuliĂšrement avantageux pour les iPhones, oĂč lâespace de stockage et la capacitĂ© de calcul sont plus limitĂ©s quâun Mac.
La disponibilitĂ© dâune version 7B de Ferret en est lâillustration.
Installation de la Version 7B de Ferret
Si vous avez dĂ©jĂ suivi les Ă©tapes pour installer le format 13B de Ferret, lâinstallation de la version 7B sera grandement simplifiĂ©e. La majoritĂ© des Ă©tapes dâinstallation restent identiques, Ă une exception prĂšs : il nâest pas nĂ©cessaire de recrĂ©er un environnement virtuel. Pour installer Ferret 7B, relancez les commandes en remplaçant tous les 13
par des 7
.
Sparsification et Ălagage (Pruning) du ModĂšle
Ce sont deux techniques liées de compression de modÚle. Elles visent à optimiser les réseaux de neurones en réduisant leur complexité, par exemple en diminuant le nombre de neurones ou en supprimant des connexions ayant des poids proches de zéro sans compromettre significativement les performances.
Distillation du ModĂšle
Câest une technique dâoptimisation de modĂšles. Elle consiste Ă transfĂ©rer la connaissance dâun grand modĂšle complexe (le modĂšle âprofesseurâ) Ă un modĂšle plus petit et plus simple (le modĂšle âĂ©tudiantâ). Lâobjectif est dâapprendre au modĂšle Ă©tudiant Ă reproduire les performances du modĂšle professeur tout en Ă©tant plus lĂ©ger et rapide Ă exĂ©cuter et en prĂ©servant la qualitĂ© des prĂ©dictions.
Déploiement Fractionné (Split)
Câest une mĂ©thode oĂč les tĂąches de calcul dâun modĂšle sont partagĂ©es entre les appareils locaux et le cloud. Cette approche permet de tirer parti des capacitĂ©s de calcul du cloud pour les opĂ©rations lourdes tout en effectuant des tĂąches plus lĂ©gĂšres localement. Cependant, cette stratĂ©gie semble peu probable pour Apple, qui privilĂ©gie des solutions entiĂšrement locales ou des optimisations internes. Apple vise Ă maintenir la confidentialitĂ© et la sĂ©curitĂ© des donnĂ©es de lâutilisateur en minimisant la dĂ©pendance au cloud.
Utilisation Avancée de la Mémoire Flash
Dans un article rĂ©cemment publiĂ© par des chercheurs de la Pomme LLM in a flash: Efficient Large Language Model Inference with Limited Memory on peut voir quâApple envisage dâutiliser la mĂ©moire flash pour stocker les paramĂštres des modĂšles. Ces paramĂštres sont ensuite dynamiquement transfĂ©rĂ©s vers la DRAM lors de lâinfĂ©rence, rĂ©duisant ainsi le volume de donnĂ©es Ă©changĂ©es et accĂ©lĂ©rant le traitement sur des dispositifs avec peu de DRAM, comme les iPhones. Cette approche, combinĂ©e Ă lâutilisation de techniques de gestion de donnĂ©es innovantes, telles que le fenĂȘtrage (windowing) et le regroupement lignes-colonnes (row-column bundling), optimise encore davantage la quantitĂ© de donnĂ©es Ă transfĂ©rer et indirectement la vitesse dâinfĂ©rence.
Conclusion
En rĂ©sumĂ©, lâintĂ©gration de Ferret, le dernier-nĂ© des modĂšles LLM dâApple, sur les machines Ă©quipĂ©es de processeurs Apple Silicon, reprĂ©sente une avancĂ©e notable dans le domaine de lâintelligence artificielle. MalgrĂ© quelques dĂ©fis inhĂ©rents Ă lâadaptation du code initial, conçu pour les GPU NVIDIA, les efforts de portage vers lâarchitecture Metal dâApple ont Ă©tĂ© trĂšs simples.
Cette avancée soulÚve des questions passionnantes sur la maniÚre dont Apple exécutera son modÚle de langage multimodal sur des appareils aux ressources plus limitées comme les iPhones.
Nul doute quâApple a dĂ©jĂ trouvĂ© le moyen de faire fonctionner son Ferret sur ses iPhones, en exploitant des techniques dâoptimisation avancĂ©es. La capacitĂ© dâApple Ă adapter de maniĂšre efficace des technologies de pointe Ă ses appareils montre leur maĂźtrise de lâIA dans leur Ă©cosystĂšme matĂ©riel et logiciel. Il sera intĂ©ressant de voir comment ces dĂ©veloppements influenceront lâexpĂ©rience utilisateur dans nos iPhones et Macs et quels seront les nouveaux usages quâApple introduira dans notre quotidien. Les rumeurs parlent dâune interface utilisateur complĂštement renouvelĂ©e dans iOS 18 ! Nous en saurons sĂ»rement plus lors de la WWDC 2024 en juin prochain.
Les +
Avantages de Ferret | Description |
---|---|
Capacités Multimodales | Combinaison de la vision par ordinateur et du traitement du langage naturel pour une compréhension et une analyse enrichies du texte et des images. |
Performance Améliorée | Capacité à exécuter des tùches complexes avec une efficacité accrue. |
Interaction Utilisateur OptimisĂ©e | AmĂ©lioration de lâinteraction avec les utilisateurs grĂące Ă une meilleure comprĂ©hension du langage naturel, de lâenvironnement extĂ©rieur et Ă des rĂ©ponses plus prĂ©cises. |
Potentiel dâInnovation | Ouverture vers de nouvelles possibilitĂ©s pour des applications innovantes dans divers domaines tels que la traduction, lâassistance vocale, la rĂ©alitĂ© augmentĂ©e et la rĂ©alitĂ© virtuelle. |
Les -
Inconvénients de Ferret | Description |
---|---|
ComplexitĂ© Technique | La mise en Ćuvre et lâoptimisation du modĂšle peuvent ĂȘtre complexes pour une utilisation sur des iPhones. |
Besoins en Ressources | MĂȘme optimisĂ©, le modĂšle nĂ©cessitera toujours des ressources significatives en termes de traitement et de mĂ©moire. |
Limites dâIntĂ©gration | LâintĂ©gration avec lâĂ©cosystĂšme existant dâapplications iOS pourrait ĂȘtre une vrai dĂ©fis. |
Consommation dâĂnergie | Lâutilisation avancĂ©e dâIA peut entraĂźner une augmentation de la consommation dâĂ©nergie, affectant lâautonomie de la batterie. |
ProblĂšmes de ConfidentialitĂ© | La gestion des donnĂ©es et la confidentialitĂ© peuvent ĂȘtre des prĂ©occupations, en particulier dans les applications sensibles Ă la vie privĂ©e. |
Usages
Fonctionnalité Potentielle de Ferret dans iOS et MacOS | Description et Impact |
---|---|
Traduction InstantanĂ©e | AmĂ©lioration significative de la traduction de textes en temps rĂ©el grĂące aux capacitĂ©s avancĂ©es dâapprentissage profond. Peut sâintĂ©grer Ă toutes les Apps de Safari Ă Pages. |
Assistant Vocal Optimisé | Amélioration de Siri (enfin !) pour une meilleure compréhension du langage naturel et des interactions plus naturelles et efficaces. |
RĂ©alitĂ© AugmentĂ©e et Virtuelle | Enrichissement des expĂ©riences de rĂ©alitĂ© augmentĂ©e et virtuelle via une analyse dâimage et de scĂšne plus sophistiquĂ©e dans les Apps Photos et Appareil photo. |
Assistance gĂ©nĂ©rative de texte et dâimages | Extraction des paroles dans Apple Music (avec traduction), aide Ă la gĂ©nĂ©ration de texte et dâimages dans Apple Pages et Keynote ou encore assistant de code dans Xcode. |