- Petals permet de générer du texte et d’effectuer du fine-tuning sans charger un grand modèle de langage entier sur une seule machine, en n’exécutant qu’une partie du modèle sur un GPU domestique ou via Google Colab
- Prend en charge Llama 3.1 jusqu’à 405B, Mixtral 8x22B, Falcon 40B+ et BLOOM 176B, ce qui permet de manipuler de grands modèles même avec du matériel personnel
- Le système fonctionne selon une structure de type BitTorrent où chaque utilisateur charge le fragment de modèle dont il s’occupe, puis se connecte à un réseau de participants qui fournissent les autres fragments
- Les performances en inférence mono-lot atteignent jusqu’à 6 tokens/sec sur Llama 2 70B et jusqu’à 4 tokens/sec sur Falcon 180B, soit un niveau suffisant pour des chatbots et des applications interactives
- Il offre un contrôle plus large qu’une API LLM classique, avec le choix des méthodes de fine-tuning et d’échantillonnage, ainsi que l’accès aux chemins internes du modèle et aux hidden states
Exécuter de grands modèles de manière distribuée
- Petals vise à exécuter de grands modèles de langage chez soi, en fonctionnant comme BitTorrent, où plusieurs utilisateurs fournissent différentes parties du modèle
- Les utilisateurs ne chargent pas le modèle entier, mais seulement une partie du modèle, puis rejoignent le réseau qui fournit le reste
- Modèles pris en charge :
- Llama 3.1 : jusqu’à 405B
- Mixtral : 8x22B
- Falcon : 40B+
- BLOOM : 176B
- La génération de texte et le fine-tuning spécifique à une tâche peuvent être réalisés avec un GPU domestique ou Google Colab
- Performances en inférence mono-lot :
- Llama 2 70B : jusqu’à 6 tokens/sec
- Falcon 180B : jusqu’à 4 tokens/sec
- Cette vitesse est suffisante pour des chatbots et des applications interactives
Une plage de contrôle plus large qu’une API
- Petals va au-delà des API LLM traditionnelles en permettant de choisir directement les méthodes de fine-tuning et d’échantillonnage
- Il est possible d’exécuter des chemins personnalisés à travers le modèle ou d’examiner les hidden states
- Il combine la praticité d’une API avec la flexibilité de PyTorch et de 🤗 Transformers
- Un notebook Colab prêt à l’emploi et la documentation GitHub sont disponibles
- Il existe aussi une méthode de participation pour fournir un GPU et augmenter la capacité de Petals, et les actualités du développement peuvent être suivies sur Discord
- Ce projet fait partie de l’atelier de recherche BigScience
1 commentaires
Avis de Hacker News
Intéressant. Il semble que les poids du modèle soient découpés par couches et distribués sur plusieurs machines ; chaque machine, une fois prête, s’enregistre dans une grande table de hachage, puis effectue l’inférence ou le fine-tuning « en équipe » pour les couches dont elle est responsable.
C’est encore à un stade précoce, mais nous travaillons à l’hébergement des poids de modèles pour https://github.com/jmorganca/ollama dans un registre Docker. La raison principale est l’adressage par contenu : Ollama peut vérifier à chaque fois que les bons poids ont été téléchargés et, à terme, récupérer les poids à partir du contenu lui-même plutôt que via un nom ou une URL susceptible de changer.
L’étape suivante pourrait consister à découper les modèles par couches et à stocker chaque couche indépendamment, afin de les utiliser pour ce type d’usage, ou encore pour télécharger et exécuter de plus grands modèles sur plusieurs machines « locales ».
Les règles de HN disent aussi : « N’utilisez pas HN principalement à des fins de promotion ; publier occasionnellement votre propre travail est acceptable, mais l’usage principal du site doit être la curiosité. »
Dans ce cas aussi, il aurait largement suffi de parler du travail de l’OP sans ajouter un backlink gratuit vers le projet.
La partie « peut être fine-tuné pour une tâche » m’a fait lever un sourcil.
Le fine-tuning d’un 70B n’est pas simplement difficile : même si vous pouvez attendre aussi longtemps qu’il le faut, c’est littéralement impossible sans louer des instances cloud très coûteuses ou acheter un PC au prix d’une maison.
S’il existait une « horde d’entraînement llama », j’y participerais volontiers.
Si je comprends bien, un modèle à N milliards de paramètres peut être fine-tuné avec un GPU disposant d’un peu moins de N gigaoctets de VRAM.
Pour un modèle de 70B paramètres, ce serait quelque chose comme une A100 ?
Par ailleurs, Lambda Cloud permet de fine-tuner un modèle 70B pour 2 dollars par million de tokens, et Replicate pour moins de 10 dollars.
Si l’on considère qu’un LLM apprend chaque livre indépendamment, il semble qu’on pourrait simplement additionner les deux deltas des poids du LLM.
Un LLM entraîné est-il composable d’une manière ou d’une autre ? Par exemple, si deux modèles font confiance aux mêmes données à 99 %, mais diffèrent seulement sur 1 %, faut-il vraiment deux modèles entièrement séparés, ou peut-on partager le calcul avec d’autres personnes ayant la même opinion sur les 99 %, puis créer des modèles dérivés qui corrigent les différences entre leurs modèles de confiance ?
Ma compréhension des réseaux de neurones est basique, mais manipuler les poids de cette manière tout en conservant l’utilité du modèle ne me paraît pas complètement absurde.
Je pose la question parce qu’il me semblerait utile de savoir sur quelles phrases deux LLM de même performance sont d’accord et sur lesquelles ils sont en désaccord. On pourrait alors remonter de ces différences aux différences dans les données d’entraînement. Cela ne serait sans doute possible que lorsque les écarts sont faibles.
À l’inverse, si deux LLM de même performance représentent plutôt une occasion manquée de créer un modèle plus puissant, et si l’analyse des désaccords est aussi trop coûteuse, on se retrouve dans un monde assez différent.
Cela ne signifie pas que l’on puisse prendre ces couches d’adaptation et les combiner arbitrairement, mais entraîner différents modèles en partageant une base de poids commune est déjà un problème résolu.
Comment empêcher un participant malveillant de modifier la sortie de sa partie dans un calcul plus vaste ? Même s’il n’existe pas de moyen de produire une sortie réseau choisie par l’attaquant, si de nombreux nœuds rejoignent le réseau et renvoient simplement des résultats absurdes, il semble qu’ils puissent pratiquement lancer une attaque par déni de service contre le système.
En outre, les clients peuvent faire circuler les données par plusieurs chemins non recouvrants dans le réseau et vérifier que les résultats concordent.
Cela permet de repérer les attaquants fréquents, mais n’offre pas une protection à 100 % ; donc si une garantie d’exactitude complète est nécessaire, je pense que les gens constitueront des swarms privés. Par exemple, si vous n’avez pas assez de GPU pour faire tourner seul un LLM, mais que vous connaissez des propriétaires de matériel fiables, vous pouvez créer un swarm Petals privé afin d’exécuter ensemble un LLM sur du matériel géographiquement distribué et de traiter des données.
La première question qui m’est venue a été : « Qu’en est-il de l’économie ? » D’après la FAQ :
Les incitations de Petals reposent-elles sur des cryptomonnaies, la blockchain, etc. ? Non. Petals est un système entièrement décentralisé sur tous les autres aspects, mais pour les incitations, ils travaillent sur un système centralisé similaire aux kudos d’AI Horde. Ils ne prévoient pas de proposer un service permettant d’échanger ces points contre de l’argent ; il faut donc les voir comme des points de « jeu » utilisés au sein du système.
Petals est un projet centré sur le machine learning, destiné aux chercheurs et ingénieurs en machine learning, et n’a pas de lien avec la finance. La raison pour laquelle ils ont choisi de centraliser le système d’incitation est qu’il est beaucoup plus facile à développer et à maintenir, ce qui leur permet de se concentrer sur le développement de fonctionnalités utiles aux chercheurs en machine learning.
https://github.com/bigscience-workshop/petals/wiki/FAQ:-Freq...
https://lite.koboldai.net/
https://tinybots.net/artbot
https://aihorde.net/
En fait, si quelqu’un sur HN veut tester un modèle affiné spécifique de 13B à 70B, je peux l’héberger cet après-midi :
https://huggingface.co/models?sort=modified&search=70B+gguf
https://www.sheepit-renderfarm.com/home
Comme cela peut ne pas suffire pour tout le monde, ils introduisent aussi des « bloom points », une incitation explicite pour les personnes qui donnent du temps GPU au swarm public. Quand le système sera prêt, le site affichera les principaux contributeurs, et ceux qui auront gagné des points pourront les utiliser pour de l’inférence ou du fine-tuning avec une priorité plus élevée ou des garanties de sécurité renforcées, voire les échanger contre d’autres récompenses.
Cela dit, on dirait quand même qu’ils veulent une forme de jeton centralisé
Pour préciser, je ne veux pas dire qu’il faudrait connecter le « jeton » de Petals à un système de paiement. Je veux dire qu’en général, qu’ils soient décentralisés ou non, les appels à des clusters de modèles de machine learning utiliseront probablement des paiements en cryptomonnaie, qui fournissent à la fois un moyen d’authentification et de paiement.
Petals est une bonne implémentation du calcul décentralisé pour l’utilisation de modèles, et semble avoir de la valeur à long terme.
Je voulais partager ma 3080 Ti, mais après avoir exécuté les commandes du guide de démarrage, il semble y avoir un problème de versions de dépendances : https://github.com/bigscience-workshop/petals/wiki/Run-Petal...
ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub' (~/.local/lib/python3.8/site-packages/huggingface_hub/__init__.py)Il semble qu’on puisse héberger son propre swarm de serveurs [0]
Je me demande quelles sont, grosso modo, les performances de fine-tuning d’un cluster Petals « privé ».
[0] https://github.com/bigscience-workshop/petals/wiki/Launch-yo...
Vraiment génial. J’aimerais que cela rende ce domaine accessible à des milliers, voire des millions de développeurs supplémentaires.
J’ai toujours pensé que le crowdsourcing était l’avenir. Que ce soit pour l’information ou le calcul.
En réalité, les « ressources » existent déjà ; ce n’est qu’une question de répartition.
J’ai déjà utilisé Petals dans un ancien projet. J’ai aussi partagé mon GPU et écrit du code pour le projet.
La partie Petals était abstraite pour moi, et l’expérience d’écriture du code était ordinaire.
Je n’ai publié ce projet nulle part et je ne sais pas vraiment ce qu’il est devenu. Dans l’ensemble, c’était quelque chose mené par environ cinq personnes.