Ferret : un grand modèle de langage multimodal
(github.com/apple)- Ferret est un MLLM de bout en bout qui prend en entrée des cibles d’instruction en format libre et ancre leur position dans la réponse, avec pour objectif la référence et l’ancrage à granularité fine, sans contrainte de localisation
- Ses composants clés sont Hybrid Region Representation et Spatial-aware Visual Sampler, qui permettent au MLLM de prendre en charge la référence et l’ancrage open-vocabulary à granularité fine
- Le projet fournit environ 1,1 million d’exemples du dataset GRIT, Ferret-Bench, des deltas de checkpoints 7B et 13B, ainsi que les procédures d’entraînement, d’évaluation et d’exécution de la démo
- L’entraînement est basé sur un environnement 8×A100 80GB ; avec moins de GPU, il faut ajuster la combinaison
per_device_train_batch_size,gradient_accumulation_stepsetnum_gpusafin de conserver la taille de batch globale - Les données et le code sont réservés à la recherche, le dataset est sous licence CC BY NC 4.0 pour un usage non commercial uniquement, et il faut également respecter les conditions de licence de LLaMA, Vicuna et GPT-4
Objectifs et architecture de Ferret
- Ferret est un MLLM de bout en bout présenté comme « Refer and Ground Anything Anywhere at Any Granularity »
- Il vise à accepter des entrées de référence sous n’importe quelle forme et à ancrer les objets visés dans la réponse
- Ses contributions principales se résument en trois points
- Ferret Model : utilise Hybrid Region Representation et Spatial-aware Visual Sampler pour permettre la référence et l’ancrage open-vocabulary à granularité fine
- GRIT Dataset : un vaste dataset hiérarchique et robuste d’instruction tuning ground-and-refer d’environ 1,1 million d’exemples
- Ferret-Bench : un benchmark d’évaluation multimodal qui demande à la fois référence/ancrage, sémantique, connaissances et raisonnement
Publication et état des modèles
- Le 8 octobre 2024, Ferret-UI a été publié
- Présenté comme un MLLM centré sur l’interface utilisateur, capable d’exécuter efficacement des tâches de referring, grounding et reasoning
- Le 10 juillet 2024, Ferret-v2 a été accepté à COLM 2024
- Le 15 février 2024, Ferret a été accepté en Spotlight à ICLR 2024
- Le 14 décembre 2023, les checkpoints Ferret 7B et 13B ont été publiés
- Le 30 octobre 2023, le code du modèle FERRET et Ferret-Bench ont été publiés
Installation et conditions d’entraînement
- L’installation suit un flux consistant à cloner le dépôt puis à installer les paquets dans un environnement Conda
python=3.10pip install -e .pycocotoolsprotobuf==3.20.0
- Pour l’entraînement, des paquets supplémentaires sont nécessaires : ninja et
flash-attn --no-build-isolation - L’environnement de référence pour l’entraînement de FERRET comprend 8 GPU A100 avec 80GB de mémoire chacun
- Pour entraîner avec moins de GPU, il faut conserver la taille de batch globale
- Taille de batch globale =
per_device_train_batch_size×gradient_accumulation_steps×num_gpus
- Taille de batch globale =
- Les hyperparamètres de fine-tuning utilisent une configuration similaire à LLaVA (Vicuna)
- FERRET-7B : Global Batch Size 128, Learning rate
2e-5, Epochs 3, Max length 2048, Weight decay 0 - FERRET-13B : Global Batch Size 128, Learning rate
2e-5, Epochs 3, Max length 2048, Weight decay 0
- FERRET-7B : Global Batch Size 128, Learning rate
Modèles de base et utilisation des checkpoints
- Avant l’entraînement, il faut préparer les poids du modèle de base Vicuna v1.3
- Les poids du projector de préentraînement de phase 1 de LLaVA sont également requis
- projector 7B
- projector 13B
- Les checkpoints publics sont fournis non pas comme modèles préentraînés complets, mais sous forme de delta par rapport à Vicuna
- L’utilisateur doit d’abord obtenir les poids de Vicuna, puis télécharger le delta 7B ou 13B de Ferret, et appliquer l’offset aux poids Vicuna avec le script
ferret.model.apply_delta - Les weight differentials fournis par Apple sont sous licence CC-BY-NC ; LLaMA et les autres logiciels tiers restent soumis à leurs propres conditions
Évaluation et exécution de la démo
- L’évaluation est détaillée dans un document séparé,
EVAL.md - La démo locale utilise une interface web Gradio et nécessite un entraînement FERRET ainsi qu’un usage local des checkpoints
- Le flux d’exécution de la démo se déroule en trois étapes
- lancer le controller :
ferret.serve.controller - lancer le serveur web Gradio :
ferret.serve.gradio_web_server - lancer le model worker qui effectue l’inférence sur GPU :
ferret.serve.model_worker
- lancer le controller :
- Le model worker gère un seul modèle, indiqué avec
--model-path - Une fois le chargement du modèle terminé et le message « Uvicorn running on ... » affiché, on peut actualiser l’interface web Gradio pour voir le modèle lancé dans la liste
Restrictions d’usage et sources
- Les données et le code sont fournis uniquement à des fins de recherche
- L’usage est limité au respect des licences de LLaMA, Vicuna et GPT-4
- Le dataset est sous licence CC BY NC 4.0 et n’autorise qu’un usage non commercial
- Les modèles entraînés à partir de ce dataset ne doivent pas être utilisés en dehors d’un cadre de recherche
- Le projet s’appuie sur la base de code LLaVA et sur la base de code LLM de Vicuna
1 commentaires
Avis de Hacker News
On en est déjà au multimodal ? Si Google n’arrive pas à faire mieux que des descriptions d’images du niveau « logo d’entreprise » dans l’accessibilité sur ce terrain, je pense retourner chez Apple.
Apple doit certes aussi réduire les bugs et faire en sorte que VoiceOver ne donne plus l’impression de s’effondrer au moindre contact, mais même sans LLM, les descriptions d’images sont déjà nettes et claires.
Par exemple, c’est plutôt du genre « logo vert sur fond noir », alors que Google, comme je le disais, est plutôt proche de « logo d’entreprise ». Ça ressemble au résultat qu’on obtient quand l’IA est crowdsourcée plutôt qu’entraînée sur de bonnes données de haute qualité.
Elle utilise la famille de modèles Flamingo : https://deepmind.google/discover/blog/tackling-multiple-task...
Des rumeurs disent aussi que la prochaine version de macOS / iOS intégrera des fonctionnalités LLM.
À voir aussi sur le sujet : « LLM in a flash: Efficient Large Language Model Inference with Limited Memory »
Apple semble préparer de grandes avancées dans l’inférence on-device avec ce type de LLM.
https://arxiv.org/abs/2312.11514
L’article est ancien (octobre 2023), mais les poids viennent de sortir (décembre 2023).
https://lifearchitect.ai/models-table/
Apple a pu sembler discrète sur les LLM, mais elle a continué à faire évoluer régulièrement sa stack IA matériel+logiciel sans publicité tapageuse.
Si une nouvelle version d’iOS rend soudainement les fenêtres de chat OpenAI/Bard ridiculement dépassées, je pense qu’Apple pourrait prendre le dessus sur Microsoft/OpenAI et Google.
Si une part importante des usages de l’IA bascule vers le matériel Apple, ce serait aussi une menace pour Nvidia, tandis qu’Arm et TSMC pourraient en profiter.
Elle utilisera plus probablement la même technologie « simplement » pour des améliorations progressives de produits comme Siri ou l’autocomplétion du clavier, et je pense que c’est la bonne direction.
Elle ne cherche pas de capital-risque, et son cœur de métier n’est pas menacé par l’IA en tant qu’« évolution de la recherche ».
Côté produit, jusqu’ici, tout ce qu’on entend, c’est surtout que le M3 Max est adapté à l’exécution de modèles de machine learning.
Tant qu’un vrai produit grand public n’est pas prêt, il suffit de faire des mentions de pure forme lors des réunions financières pour gérer les analystes.
Il faudrait aussi beaucoup de temps pour regagner la confiance des développeurs, et je doute que cela arrive.
Peux-tu définir ce que signifie « MLLM » ?
J’aimerais qu’Apple sorte, dès l’an prochain si possible, un iPhone avec un bon assistant LLM privé on-device.
Le matériel semble bien adapté à ça.
Si ça sort comme ça, je pourrais rompre mon cycle de remplacement habituel d’environ 4 ans et acheter un nouveau téléphone. Pour moi, Siri est quasiment inutilisable.
Il sera intéressant de voir si les fonctionnalités différeront selon qu’on est en ligne ou hors ligne, ou si elles seront entièrement hors ligne.
Un article pour le contexte : https://archive.is/en3VL
C’est très proche de ce qu’on attend d’un outil vocal : on peut lui parler comme à une personne normale, au lieu d’énoncer à voix haute des commandes spécifiques comme avec Siri.
https://jackcook.com/2023/09/08/predictive-text.html
J’utilise un iPhone récent, mais je le vois très rarement fonctionner en pratique.
Pour l’instant, il semble soit trop lent pour suivre mon rythme de frappe, soit trop petit pour proposer beaucoup de suggestions utiles.
Aujourd’hui encore, on peut pousser ChatGPT à dire des choses absolument horribles, et si Apple sort quelque chose on-device, on pourra aussi en faire un mauvais robot.
Personnellement, je pense que les LLM ne sont pas encore sûrs pour des usages grand public en production.
« FERRET a été entraîné sur 8 GPU A100 de 80 Go de mémoire » : même Apple n’a visiblement pas échappé au piège CUDA
C’est amusant de voir qu’après avoir été dans une relation d’hostilité morale avec Nvidia, ils en deviennent partiellement dépendants
Mais s’ils décident de s’y lancer vraiment, ils pourraient investir dans leur propre infrastructure de calcul
Nvidia est aujourd’hui le roi du calcul GPU, et développer du matériel comparable n’est ni une petite affaire ni bon marché, mais Apple est très bien placé pour y parvenir s’il décide d’investir
Même en cas de tensions entre entreprises, si un processus devient moins cher ou plus simple, les sociétés sont prêtes à l’accepter
Même le Studio et le Mac Pro ressemblent plutôt à des puces de laptop assemblées entre elles ; pour les charges lourdes, il faut du matériel lourd
Je sais que leurs relations avec Nvidia se sont détériorées, mais j’aimerais qu’ils renforcent l’écosystème AMD/ROCm
Bien sûr, il est très probable qu’Apple prépare aussi quelque chose en interne dans ce domaine. Avec des dizaines de milliards de dollars d’actifs liquides, ils doivent probablement en consacrer une bonne partie à la R&D
Au final, ces modèles de deep learning tournent sur n’importe quel matériel, et avec une légère perte de performance on peut facilement remplacer un type de matériel par un autre
Fondamentalement, cela se rapproche d’une commodité générique
Quelqu’un sait quel est le meilleur modèle open source utilisable commercialement et capable de tourner localement sur iPhone ?
C’est open source et ça s’exécute nativement sur les principales plateformes. J’ai aussi partagé des vidéos où ça tourne sur iPad Mini, Pixel 7, iPhone 12, Surface Pro (Windows 10 & Ubuntu Jellyfish) et Mac (architectures Intel & M)
Ce n’est absolument pas une application finalisée. Je voulais utiliser de l’IA on-device dans Flutter, donc j’ai commencé par porter llama.cpp, et j’envisage ensuite de porter des implémentations récentes comme whisper.cpp ou bark.cpp
Dépôt : https://github.com/BrutalCoding/aub.ai
Sur les appareils Apple, vous pouvez utiliser ceci : https://testflight.apple.com/join/XuTpIgyY
L’app est compatible avec n’importe quel fichier GGUF, mais il faut que le format de prompt soit ChatML pour que l’UI de chat / les bulles de conversation ne deviennent pas bizarres. Je ne l’ai pas encore rendu personnalisable, car ce n’est qu’une application d’exemple pour le plugin. Cela dit, je travaille activement à la peaufiner vers la forme visée
Cela dit, côté utilisabilité, l’app ChatGPT4 est nettement meilleure. Le modèle est meilleur aussi, et les fonctions multimodales incluant texte/vision/voix ainsi que l’UI sont meilleures
« Les données et le code sont destinés et licenciés uniquement à un usage de recherche. Leur utilisation est également limitée aux usages conformes aux contrats de licence de LLaMA, Vicuna et GPT-4. Le jeu de données est sous licence CC BY NC 4.0 et n’autorise que les usages non commerciaux ; les modèles entraînés avec ce jeu de données ne doivent pas être utilisés à d’autres fins que la recherche »
Attends, comment GPT-4 se retrouve là-dedans ?