Meta ajoute un autre lama à son troupeau, et celui-ci sait coder. Jeudi, Meta a dévoilé « Code Llama », un nouveau modèle de langage étendu (LLM) basé sur Llama 2, conçu pour aider les programmeurs en générant et en débogant du code. Il vise à rendre le développement de logiciels plus efficace et accessible, et il est gratuit pour une utilisation commerciale et de recherche.
Tout comme ChatGPT et GitHub Copilot Chat, vous pouvez demander à Code Llama d’écrire du code à l’aide d’instructions de haut niveau, telles que « Écrivez-moi une fonction qui génère la séquence de Fibonacci ». Ou cela peut aider au débogage si vous fournissez un échantillon de code problématique et demandez des corrections.
En tant qu’extension de Llama 2 (publié en juillet), Code Llama s’appuie sur les LLM disponibles en poids que Meta développe depuis février. Code Llama a été spécifiquement formé sur les ensembles de données de code source et peut fonctionner sur divers langages de programmation, notamment Python, Java, C++, PHP, TypeScript, C#, les scripts Bash, etc.
Notamment, Code Llama peut gérer jusqu’à 100 000 jetons (fragments de mots) de contexte, ce qui signifie qu’il peut évaluer des programmes longs. À titre de comparaison, ChatGPT ne fonctionne généralement qu’avec environ 4 000 à 8 000 jetons, bien que des modèles de contexte plus longs soient disponibles via l’API d’OpenAI. Comme Meta l’explique dans son article plus technique :
En plus d’être une condition préalable à la génération de programmes plus longs, le fait d’avoir des séquences d’entrée plus longues ouvre de nouveaux cas d’utilisation passionnants pour un LLM de code. Par exemple, les utilisateurs peuvent fournir au modèle plus de contexte à partir de leur base de code pour rendre les générations plus pertinentes. Cela aide également au débogage de scénarios dans des bases de code plus volumineuses, où rester au courant de tout le code lié à un problème concret peut être un défi pour les développeurs. Lorsque les développeurs sont confrontés au débogage d’une grande partie du code, ils peuvent transmettre toute la longueur du code dans le modèle.
Code Llama de Meta est disponible en trois tailles : versions à 7, 13 et 34 milliards de paramètres. Les paramètres sont des éléments numériques du réseau neuronal qui sont ajustés pendant le processus de formation (avant la sortie). Un plus grand nombre de paramètres signifie généralement une plus grande complexité et une plus grande capacité pour des tâches nuancées, mais ils nécessitent également plus de puissance de calcul pour fonctionner.
Les différentes tailles de paramètres offrent des compromis entre vitesse et performances. Bien que le modèle 34B soit censé fournir une aide au codage plus précise, il est plus lent et nécessite plus de mémoire et de puissance GPU pour fonctionner. En revanche, les modèles 7B et 13B sont plus rapides et mieux adaptés aux tâches nécessitant une faible latence, comme la complétion de code en temps réel, et peuvent fonctionner sur un seul GPU grand public.
Meta a également publié deux variantes spécialisées : Code Llama-Python et Code Llama-Instruct. La variante Python est optimisée spécifiquement pour la programmation Python (« affinée sur 100 milliards de jetons de code Python »), qui est un langage important dans la communauté de l’IA. Code Llama-Instruct, quant à lui, est conçu pour mieux interpréter l’intention de l’utilisateur lorsqu’il est fourni avec des invites en langage naturel.
De plus, Meta indique que les modèles de base et d’instruction 7B et 13B ont été formés avec la capacité « fill-in-the-middle » (FIM), qui leur permet d’insérer du code dans le code existant, ce qui facilite la complétion du code.
Licence et ensemble de données
Code Llama est disponible avec la même licence que Llama 2, qui fournit des poids (les fichiers de réseau neuronal entraînés requis pour exécuter le modèle sur votre machine) et permet la recherche et l’utilisation commerciale, mais avec certaines restrictions énoncées dans une politique d’utilisation acceptable.
Meta a déclaré à plusieurs reprises sa préférence pour une approche ouverte de l’IA, bien que son approche ait été critiquée pour ne pas être entièrement « open source », conformément à l’Open Source Initiative. Pourtant, ce que Meta fournit et permet avec sa licence est bien plus ouvert qu’OpenAI, qui ne met pas à disposition les poids ou le code de ses modèles de langage de pointe.
Meta n’a pas révélé la source exacte de ses données de formation pour Code Llama (en affirmant qu’elles sont basées en grande partie sur un « ensemble de données quasi-dédupliqué de code accessible au public »), mais certains suspect ce contenu récupéré du site Web StackOverflow peut être une source. Sur X, Leandro von Werra, data scientist chez Hugging Face, a partagé une discussion potentiellement hallucinée sur une fonction de programmation qui incluait deux vrais Noms d’utilisateur StackOverflow.
Dans le document de recherche Code Llama, Meta déclare : « Nous obtenons également 8 % de nos échantillons de données à partir d’ensembles de données en langage naturel liés au code. Cet ensemble de données contient de nombreuses discussions sur le code et des extraits de code inclus dans les questions ou réponses en langage naturel. »
Néanmoins, von Werra aimerait que des détails soient cités à l’avenir. « Ce serait formidable pour la reproductibilité et le partage des connaissances avec la communauté des chercheurs de divulguer quelles sources de données ont été utilisées pendant la formation », a écrit von Werra. « Plus important encore, ce serait formidable de reconnaître que ces communautés ont contribué au succès des modèles résultants. «