Modèle / jeu de données
salesforce/CodeGen avatar
salesforce/CodeGen

CodeGen de Salesforce : une famille de modèles de synthèse de programmes, du prototype CodeGen1 à CodeGen2.5

CodeGen is a family of open-source model for program synthesis. Trained on TPU-v4. Competitive with OpenAI Codex.

5 180 étoiles420 forksPythonApache-2.0
GitHub

En bref

De quoi s’agit-il ?
Le dépôt salesforce/CodeGen distribue les poids et le code d'inférence de quatre générations de modèles de génération de code, sous licence Apache-2.0. Voici ce que le matériel fourni permet réellement d'affirmer, et ce qu'il laisse dans l'ombre.
À qui s’adresse-t-il ?
CodeGen convient à un lecteur qui veut charger un modèle de génération de code en quelques lignes avec transformers, sans pipeline propriétaire, et qui accepte de vérifier lui-même les tailles, les révisions et les conditions d'usage. Il ne convient pas à qui cherche un service d'inférence clé en main, un guide de déploiement en production ou une documentation d'exploitation : le dépôt ne fournit rien de tout cela.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 105 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Ce que le dépôt publie, et pour qui

Le dépôt salesforce/CodeGen est la publication officielle des modèles CodeGen1 et CodeGen2, couvrant les tailles 350M, 1B, 3B, 7B et 16B, destinés à la synthèse de programmes. Il s'agit d'un dépôt de publication de modèles, pas d'un framework. Le README ne décrit ni serveur d'inférence, ni API, ni outil en ligne de commande : il renvoie vers le Hub Hugging Face pour les poids et donne des extraits Python pour les charger. Le public visé est donc celui qui sait déjà manipuler transformers et torch, et qui veut évaluer ou intégrer ces modèles dans son propre code. Les mentions de versions dans la section News situent la chronologie : CodeGen1.0 en mars 2022, CodeGen2.0 en mai 2023, CodeGen2.5 en juillet 2023. Le README affirme que CodeGen2.5 surpasse des modèles de 16 milliards de paramètres avec seulement 7 milliards. C'est une revendication de l'équipe, pas un résultat reproduit ici.

Le mécanisme : des poids sur le Hub, une génération causale standard

Le fonctionnement visible tient en une chaîne courte. Un tokenizer et un modèle sont instanciés depuis le Hub via AutoTokenizer.from_pretrained et AutoModelForCausalLM.from_pretrained. Le prompt est encodé avec return_tensors="pt", puis model.generate produit une séquence de tokens, que tokenizer.decode reconvertit en texte. Rien dans le matériel ne décrit d'architecture interne, de format de données d'entraînement ou de schéma de serving. Deux détails techniques ressortent toutefois des extraits. D'abord, CodeGen2.0 et CodeGen2.5 exigent trust_remote_code=True, ce qui signifie que le chargement exécute du code Python fourni avec le modèle : c'est un point de vigilance concret, pas une formalité. Ensuite, les exemples CodeGen1.0 et CodeGen2.0 passent truncate_before_pattern à decode, avec des motifs comme r"\n\n^#", "^'''" ou "\n\n\n", pour couper la sortie au premier séparateur ressemblant à une frontière de bloc. L'exemple CodeGen2.5, lui, appelle decode sans ce paramètre. Le README ne commente pas cette différence, et on ne peut pas en déduire si elle relève du choix rédactionnel ou d'un changement de comportement.

Mise en route : trois extraits, trois contrats différents

Les commandes utiles sont les identifiants de modèles et les appels de chargement. Pour CodeGen1.0 : tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-2B-mono") et model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-2B-mono"). Pour CodeGen2.0 : "Salesforce/codegen2-7B", avec trust_remote_code=True et revision="main" en arguments supplémentaires. Pour CodeGen2.5 : "Salesforce/codegen25-7b-mono", avec trust_remote_code=True côté tokenizer uniquement dans l'extrait fourni. Ces trois blocs ne sont pas interchangeables : le suffixe mono désigne une variante, et le README ne documente nulle part la liste complète des variantes disponibles ni ce que mono recouvre exactement. La seule indication est le lien vers la recherche Hugging Face sur salesforce+codegen. Autrement dit, la découverte des modèles réellement publiés passe par le Hub, pas par le dépôt. Le prompt d'exemple est identique dans les trois cas : "# this function prints hello world". C'est un test de fumée, pas un cas d'usage réaliste.

L'entraînement vit ailleurs, et le dépôt ne le cache pas

La section Training renvoie à la bibliothèque Jaxformer, hébergée dans un dépôt séparé, pour le prétraitement des données, l'entraînement et le fine-tuning. C'est une séparation nette : salesforce/CodeGen ne contient pas la chaîne d'entraînement. Le README précise que les modèles ont été entraînés sur TPU-v4, et le sujet tpu-acceleration figure dans les métadonnées du dépôt. Pour quiconque envisage de reproduire l'entraînement ou de fine-tuner sérieusement, cela implique de changer de dépôt et probablement de matériel. Le matériel fourni ne dit rien sur les coûts, les durées, les volumes de données ni les hyperparamètres. Il ne dit rien non plus sur la compatibilité de Jaxformer avec des accélérateurs non-TPU. Toute affirmation sur ce point serait une extrapolation.

La limite la plus concrète : un dépôt de recherche, pas un produit

L'avertissement éthique du README est explicite : la publication est destinée à la recherche, en soutien à un article académique, et les modèles, jeux de données et code ne sont pas conçus ni évalués pour toutes les utilisations en aval. Le texte recommande d'évaluer les questions d'exactitude, de sûreté et d'équité avant tout déploiement, et renvoie à la politique d'usage acceptable de Salesforce ainsi qu'à sa politique IA. Ce n'est pas une clause de style : cela signifie que le dépôt ne fournit aucune garantie de qualité de génération, aucun filtre de sortie, aucune évaluation de sûreté. Un lecteur qui cherche un composant à brancher directement dans un IDE ou un pipeline de revue de code se trompe d'outil. De même, l'absence de releases récupérées et l'absence de page d'accueil dans les métadonnées suggèrent que le suivi de version se fait par commit et par publication de poids, pas par versionnement sémantique du dépôt. Un projet qui dépend d'une version figée devra épingler une révision de modèle précise, comme le montre l'argument revision="main" dans l'extrait CodeGen2.0.

Face à quoi le comparer, et sur quel critère

Le README lui-même pose la comparaison la plus utile : CodeGen1.0 est présenté comme au niveau d'OpenAI Codex à l'époque de sa sortie, en mars 2022. La différence d'approche est structurelle, pas seulement quantitative. Codex était accessible via une API hébergée, sans poids téléchargeables dans le cadre de cette publication. CodeGen distribue des poids sous Apache-2.0, ce qui autorise l'auto-hébergement et l'inspection, au prix d'assumer soi-même l'infrastructure, la quantification, la latence et la maintenance. Le choix se joue donc entre contrôle et exploitation déléguée. Un lecteur qui a besoin d'un service géré ne trouvera rien ici. Un lecteur qui a besoin de faire tourner un modèle sur sa propre machine, ou de l'adapter, trouvera des poids et un chemin de chargement en quelques lignes. La comparaison entre CodeGen2.5 et les modèles de 16 milliards de paramètres relève, elle, du discours de l'équipe et non d'un protocole reproductible décrit dans le matériel.

Licence, maintenance et coût de mise à jour

Le dépôt est publié sous Apache-2.0, une licence permissive qui autorise l'usage commercial et la modification, sous réserve des obligations habituelles de conservation des mentions et d'état des modifications. Ce point mérite d'être distingué de l'avertissement éthique du README, qui restreint l'usage prévu à la recherche et renvoie à des politiques d'usage acceptable externes. Un lecteur qui envisage un usage commercial doit lire ces deux textes ensemble et, si l'ambiguïté compte pour son cas, consulter un juriste : rien dans le matériel fourni ne tranche cette articulation. Sur la maintenance, le dépôt n'est pas archivé et le dernier push répertorié date du 2 juin 2026, mais aucune release n'a été récupérée. Le coût de mise à jour se concentre donc sur la compatibilité transformers et sur le suivi des révisions de modèles sur le Hub, puisque l'extrait CodeGen2.0 épingle revision="main", une valeur qui bouge. Épingler un hash de révision plutôt que main est le seul levier concret que le matériel permette de recommander.

Conclusion éditoriale

CodeGen convient à un lecteur qui veut charger un modèle de génération de code en quelques lignes avec transformers, sans pipeline propriétaire, et qui accepte de vérifier lui-même les tailles, les révisions et les conditions d'usage. Il ne convient pas à qui cherche un service d'inférence clé en main, un guide de déploiement en production ou une documentation d'exploitation : le dépôt ne fournit rien de tout cela. Avant tout essai, confirmez sur le Hub Hugging Face que l'identifiant exact du modèle visé existe, lisez l'avis d'usage acceptable de Salesforce, et gardez en tête que l'entraînement passe par jaxformer, un dépôt distinct dont les détails ne figurent pas dans le matériel analysé ici.

Sources officielles

  1. Issues
  2. License: Apache-2.0
  3. README
  4. salesforce/CodeGen on GitHub
Notes de la communauté

Notes de la communauté