Modèles et laboratoires

Qu’est-ce que Code Llama, et un modèle gratuit peut-il vraiment vous aider à programmer?

· Par Robert Scales · 5 min de lecture

Réponse courte

Code Llama est une famille de modèles de programmation que Meta a publiée le 24 août 2023, obtenue en entraînant davantage Llama 2 sur du code, en tailles de 7, 13 et 34 milliards de paramètres, gratuite pour la recherche et l’usage commercial. Il écrit et explique du code à partir de demandes en langage courant, et Meta rapporte que sa plus grande version obtient à peu près les mêmes résultats que ChatGPT à deux tests de programmation courants.

Hier, Meta a publié Code Llama, un ensemble de grands modèles de langage spécialisés en programmation. Demandez-lui en langage courant « une fonction qui renvoie la suite de Fibonacci » et il écrit le code; montrez-lui un bloc de code et il peut expliquer ce qu’il fait ou aider à trouver un bogue.

Le mot important est publié. Comme pour Llama 2 le mois dernier, Meta offre les poids du modèle en téléchargement sous la même licence communautaire, qui permet la recherche et l’usage commercial. Les assistants de programmation les plus connus, comme Codex d’OpenAI et GitHub Copilot, sont des services auxquels on accède par Internet. Code Llama peut tourner sur vos propres machines.

Ce que Meta a publié

Code Llama part de Llama 2, le modèle généraliste de Meta, et poursuit son entraînement sur une grande collection de code. Meta le décrit comme un Llama 2 aux compétences en programmation plus aiguisées. Il prend en charge de nombreux langages populaires, dont Python, C++, Java, PHP, TypeScript et JavaScript, C# et Bash, le langage des scripts en ligne de commande.

Il existe trois tailles et trois variantes.

VersionÀ quoi elle sert
Code Llama (de base)Génération et complétion de code en général
Code Llama - PythonEntraînement supplémentaire sur 100 milliards de jetons de code Python
Code Llama - InstructRéglé pour suivre des consignes en langage courant et répondre de façon utile et sûre

Chaque variante existe en 7, 13 et 34 milliards de paramètres, les nombres internes qu’un modèle apprend. Chaque taille a été entraînée sur 500 milliards de jetons (des morceaux de mots ou, dans le code, des fragments de mots-clés et de symboles) de code et de texte lié au code.

Comment il fonctionne

Trois caractéristiques ressortent.

Le remplissage au milieu (fill-in-the-middle). La plupart des modèles de langage ne font que poursuivre un texte à partir de la fin. Les modèles 7B et 13B ont aussi été entraînés à insérer du code au milieu d’un fichier existant, à partir de ce qui vient avant et après. C’est exactement ce dont la complétion automatique d’un éditeur a besoin : vous tapez souvent à l’intérieur d’une fonction, pas au bas du fichier.

Un long contexte. L’entraînement a utilisé des tranches de 16 000 jetons, mais Meta affirme que les modèles restent stables avec des entrées allant jusqu’à 100 000 jetons. Le contexte, c’est la quantité de texte qu’un modèle peut considérer à la fois. Un long contexte veut dire que vous pouvez coller plusieurs fichiers d’un projet pour que les suggestions collent à votre code réel.

Le choix de la taille. Les tailles font un compromis entre qualité et vitesse. Meta indique que le modèle 7B peut fonctionner sur une seule carte graphique (GPU) et qu’il est assez rapide pour la complétion en temps réel, tandis que le modèle 34B donne les meilleurs résultats, mais demande plus de matériel.

Un exemple montre comment vous pourriez utiliser la version Instruct :

Prompt
Écris une fonction Python appelée is_palindrome qui prend une chaîne et renvoie True si elle se lit de la même façon dans les deux sens, sans tenir compte des espaces, de la ponctuation et des majuscules. Ajoute trois courts cas de test.

Une bonne réponse nettoiera la chaîne (ne garder que les lettres et les chiffres, les mettre en minuscules), la comparera avec son inverse et montrera des tests comme "A man, a plan, a canal: Panama" qui renvoie True. Peu importe ce que le modèle écrit, exécutez les tests vous-même avant de lui faire confiance.

Quels sont ses résultats?

Meta a testé les modèles sur deux bancs d’essai courants. HumanEval demande à un modèle de compléter une fonction Python à partir de sa description; MBPP (Mostly Basic Python Programming) lui demande d’écrire de courts programmes à partir d’une phrase qui décrit la tâche. Les résultats correspondent à la proportion de problèmes résolus correctement du premier coup.

ModèleHumanEvalMBPP
Code Llama 34B53,7 %56,2 %

Meta affirme que ce sont les meilleurs résultats parmi les modèles offerts ouvertement, à égalité avec ChatGPT, et que Code Llama surpasse Llama 2 et les autres modèles de code ouverts. Comme toujours avec des bancs d’essai rapportés par l’entreprise elle-même, des tests indépendants au cours des prochaines semaines montreront si ces résultats tiennent sur de vrais projets.

Meta a aussi mené un test de sécurité, en demandant aux modèles du code clairement malveillant et en comparant les réponses avec celles de GPT-3.5 Turbo. L’entreprise rapporte que les réponses de Code Llama étaient plus sûres. Plus de détails, dont les limites connues, se trouvent dans l’article de recherche qui l’accompagne.

Pourquoi c’est important

Pour les développeurs, la nouvelle, c’est un modèle de programmation qui, selon les mesures de Meta, mène le peloton des modèles offerts ouvertement et qu’on peut gratuitement télécharger, examiner et adapter. Une entreprise peut le faire tourner dans son propre réseau pour que son code source n’en sorte jamais, ou en faire l’ajustement fin sur sa propre base de code. VentureBeat le qualifie de rival immédiat de Codex, de Copilot et des autres assistants de programmation.

Pour les personnes qui apprennent, Meta présente Code Llama comme un moyen d’abaisser la barrière pour ceux qui commencent à programmer, et comme un outil de productivité et d’enseignement pour écrire des logiciels mieux documentés. Un modèle qui explique le code ligne par ligne peut être un tuteur patient, à condition de continuer à vérifier son travail.

Il y a des limites. Meta ne recommande pas les modèles de base ou Python pour la conversation générale, parce qu’ils ne sont pas conçus pour suivre des consignes de tous les jours. Et comme tous les modèles de langage, Code Llama peut produire du code qui a l’air correct, mais qui est faux ou pas sécuritaire.

À essayer : prenez une courte fonction que vous avez écrite, ou tirée d’un tutoriel, et demandez à un modèle de programmation de l’expliquer ligne par ligne. Demandez-lui ensuite de suggérer une amélioration et un cas de test. Vérifiez les deux en exécutant le code : l’explication correspondait-elle à ce qui se passe réellement?

Quelle version de Code Llama devriez-vous utiliser?

Si vous voulez demander du code en langage courant, comme le font la plupart des débutants, utilisez Code Llama - Instruct. Meta la recommande pour la génération de code parce qu’elle a été réglée pour suivre des consignes et donner des réponses utiles et plus sûres.

Si vous intégrez la complétion automatique dans un éditeur, le modèle de base 7B ou 13B est plus logique, puisque ces tailles prennent en charge le remplissage au milieu et répondent rapidement. Si votre travail se fait presque entièrement en Python, la version Python y est spécialisée. Choisissez la taille 34B quand la qualité compte plus que la vitesse et que vous avez le matériel nécessaire.

Peu importe votre choix, lisez la licence et la politique d’utilisation acceptable de Meta avant de bâtir un produit, et traitez chaque suggestion comme une ébauche. Exécutez le code, lisez les tests et gardez une personne aux commandes de ce qui est livré.

Sources

  1. Introducing Code Llama, a state-of-the-art large language model for coding — Meta AI, 24 août 2023
  2. Meta releases Code Llama, a new open source LLM geared for programming — VentureBeat (Carl Franzen), 24 août 2023

Recevez gratuitement le Guide de l’intelligence artificielle

Abonnez-vous à l’infolettre hebdomadaire et recevez le guide gratuit : ce qui a changé en IA cette semaine, une leçon, un prompt à essayer. Désabonnement en un clic.

Ce que nous faisons de votre adresse

Retour en haut

Affichage

Vos choix sont enregistrés dans ce navigateur seulement. Aucune donnée n’est transmise.

Taille du texte
100 %
Couleurs
Lecture
Autres réglages
Déclaration d’accessibilité