- Alors que la demande pour l’assistance au codage augmente, Meta a dévoilé Code Llama, élargissant les options de génération, de complétion et de débogage de code à partir de modèles ouverts
- Ce modèle est une version de Llama 2 entraînée en plus sur des données de code, capable de traiter des tâches de programmation à partir de prompts en code comme en langage naturel
- Il est proposé en tailles 7B, 13B, 34B et 70B, et le modèle 70B a été ajouté le 29 janvier 2024 comme modèle le plus grand et le plus performant de la gamme Code Llama
- La gamme se divise entre le modèle de base, un modèle spécialisé Python et une variante Instruct pour les instructions en langage naturel, à choisir selon la latence, les performances et l’usage visé
- L’usage pour la recherche et le commerce est gratuit, mais il faut respecter la licence et la politique d’utilisation autorisée, ainsi qu’évaluer la sécurité de la génération de code
Les tâches de code visées par Code Llama
- Code Llama est un grand modèle de langage pour le code capable de générer du code à partir de prompts textuels
- Il vise des performances de pointe sur les tâches de code parmi les LLM ouverts, avec le potentiel d’accélérer et de rendre plus efficaces les workflows des développeurs
- Il peut servir d’outil de productivité et d’apprentissage, en abaissant la barrière à l’entrée pour les personnes qui apprennent à coder et en aidant les programmeurs à écrire des logiciels plus robustes et mieux documentés
- Meta publie Code Llama sous une licence communautaire identique à celle de Llama 2
Llama 2 entraîné davantage sur des données de code
- Code Llama est une version spécialisée pour le code obtenue en entraînant davantage Llama 2 sur un dataset dédié au code
- Il accepte en entrée à la fois du code et des prompts en langage naturel, et peut générer du code ainsi que du texte en langage naturel lié au code
- Exemple de prompt : « Écris une fonction qui affiche la suite de Fibonacci »
- Il peut aussi être utilisé pour la complétion et le débogage de code
- Les langages pris en charge incluent Python, C++, Java, PHP, Typescript (JavaScript), C#, Bash
Choisir selon la taille et le contexte
- Code Llama est disponible en 7B, 13B, 34B et 70B paramètres
- Les modèles 7B, 13B et 34B ont été entraînés sur 500B tokens de code et de données liées au code, et le modèle 70B sur 1T tokens
- Les modèles de base et Instruct en 7B et 13B ont aussi été entraînés à la fonctionnalité fill-in-the-middle (FIM), ce qui permet d’insérer du code au milieu d’un code existant
- Cela permet de prendre directement en charge des tâches comme la complétion de code
- Le choix de la taille dépend du mode de déploiement et des exigences de latence
- Le modèle 7B peut être servi sur un seul GPU
- Les modèles 34B et 70B offrent les meilleurs résultats et une meilleure assistance au codage
- Les modèles 7B et 13B sont plus rapides et donc mieux adaptés aux tâches nécessitant une faible latence, comme la complétion de code en temps réel
- Les modèles Code Llama offrent une génération stable jusqu’à un contexte de 100 000 tokens
- Tous les modèles ont été entraînés avec des séquences de 16 000 tokens
- Ils montrent des améliorations jusqu’à des entrées de 100 000 tokens
Trois variantes : base, Python et Instruct
- La gamme Code Llama se divise en trois variantes
- Code Llama : modèle de base pour le code
- Code Llama - Python : modèle spécialisé Python
- Code Llama - Instruct : modèle affiné pour comprendre les instructions en langage naturel
- Code Llama - Python a été affiné en plus sur 100B tokens de code Python
- Python est le langage le plus fréquemment utilisé dans les benchmarks de génération de code
- Python et PyTorch jouent un rôle important dans la communauté IA
- Code Llama - Instruct est une variante dont l’entraînement a été poursuivi avec des entrées d’instructions en langage naturel et les sorties attendues
- Il est conçu pour mieux comprendre ce que les personnes attendent d’un prompt
- Il a été affiné pour générer des réponses utiles et sûres en langage naturel
- Pour la génération de code avec Code Llama, il est recommandé d’utiliser la variante Code Llama - Instruct
- Code Llama et Code Llama - Python ne sont pas conçus pour suivre des instructions en langage naturel et ne sont donc pas recommandés pour des tâches générales en langage naturel
- Code Llama est destiné aux tâches spécialisées liées au code et ne convient pas comme modèle de base pour d’autres usages
Publication supplémentaire de Code Llama 70B
- Lors d’une mise à jour du 29 janvier 2024, Code Llama 70B a été publié
- 70B est le modèle le plus grand et le plus performant de la gamme Code Llama
- Il est proposé dans les mêmes trois versions que Code Llama, toutes gratuites pour un usage de recherche et commercial
- CodeLlama - 70B : modèle de base pour le code
- CodeLlama - 70B - Python : modèle 70B spécialisé Python
- Code Llama - 70B - Instruct 70B : modèle affiné pour comprendre les instructions en langage naturel
Benchmarks et évaluation de la sécurité
- L’évaluation des performances a été menée avec deux benchmarks de code
- Dans les benchmarks, Code Llama montre de meilleures performances que les LLM ouverts spécialisés pour le code et que Llama 2
- Code Llama 34B obtient 53,7 % sur HumanEval et 56,2 % sur MBPP
- C’était l’un des meilleurs niveaux parmi les solutions ouvertes de pointe publiées, et un niveau comparable à ChatGPT
- Avant la publication, Meta a mis en place plusieurs mesures de sécurité et a évalué quantitativement, dans le cadre du red teaming, le risque de génération de code malveillant
- Des prompts demandant explicitement du code malveillant ont été conçus
- Les réponses de Code Llama ont été comparées et notées face à celles de GPT-3.5 Turbo de ChatGPT
- Les résultats ont montré que Code Llama produisait des réponses plus sûres
- Les détails du red teaming mené par des experts en IA responsable, sécurité offensive, développement de malware et ingénierie logicielle figurent dans le papier de recherche
Ressources publiques et usage responsable
- La recette d’entraînement de Code Llama est publiée dans le dépôt GitHub
- Les poids du modèle sont également disponibles
- Le papier de recherche couvre le développement de Code Llama, la méthode de test des benchmarks, les limites, les problèmes connus, les mesures d’atténuation et les pistes à étudier ensuite
- Le Responsible Use Guide a également été mis à jour
- Définition des politiques de contenu et des mesures d’atténuation
- Préparation des données
- Affinage du modèle
- Évaluation et amélioration des performances
- Réponse aux risques au niveau des entrées et des sorties
- Mise en place de mécanismes de transparence et de signalement dans l’interaction utilisateur
- Les développeurs doivent évaluer le modèle avec des benchmarks spécialisés pour le code
- Des recherches sur la sécurité sont recommandées pour les cas d’usage spécialisés du code, comme la génération de malware, de virus informatiques et de code malveillant
- L’utilisation de jeux de données de sécurité pour l’évaluation automatique et humaine, ainsi que le red teaming basé sur des prompts adversariaux, est également recommandée
Son rôle dans l’écosystème des modèles ouverts pour le code
- Code Llama est conçu pour soutenir les ingénieurs logiciels dans de nombreux domaines, dont la recherche, l’industrie, les projets open source, les ONG et les entreprises
- Il reste encore de nombreux cas d’usage au-delà de ce que peuvent couvrir le modèle de base et le modèle Instruct
- Meta espère que Code Llama encouragera d’autres acteurs à exploiter Llama 2 pour créer de nouveaux outils pour la recherche et les produits commerciaux
- Ressources liées :
1 commentaires
Avis sur Hacker News