Getty Images/iStockphoto
CodeGen : la génération de code vue par Salesforce
Le responsable du projet open source de génération de code de Salesforce évoque l'approche de l'entreprise en matière d'intelligence artificielle, ainsi que les prochaines étapes de la feuille de route pour les utilisateurs.
L’avenir du low-code et du no-code se situe au-delà des outils de programmation visuelle tels que Salesforce Flow et Microsoft Power Automate : le code sera généré automatiquement par l’IA sur la base de requêtes en langage naturel.
C’est du moins ce sur quoi mise Salesforce avec le projet CodeGen, actuellement en cours de développement. Il s’agit d’un modèle interactif de génération de code établi sur la synthèse de programmes.
Le projet open source sous licence BSD-3 a été présenté en avril 2022, après la publication d’un article de recherche en mars. Il s’appuie sur un modèle NLP autorégressif – un transformer « standard » –. Les équipes de Salesforce ont testé le modèle en faisant varier de 350 millions à 16 milliards le nombre de paramètres.
CodeGen a été entraîné successivement sur trois jeux de données « libres » contenant du langage naturel et du code C, C++, Python, Java, JavaScript et Go (Thepile, BigQuery et BigPython). Cette phase d’entraînement a été effectuée en collaboration avec Google Cloud, qui a donné aux équipes l’accès à ses nouvelles instances équipées des puces ASICS TPUv4, et à l’aide d’une librairie logicielle maison (JAXFormer) afin de gérer le parallélisme des traitements.
Une version de CodeGen est « monolingue », à savoir qu’elle a été entraînée pour apprendre uniquement du code Python, tandis que l’autre est multilangage de programmation. L’objectif du modèle est de prédire la prochaine variable de code en interprétant une commande effectuée en langage naturel. CogeGen a été pensé pour « deviner » une variable (évaluation à un tour) ou plusieurs, au cours d’un échange avec un utilisateur (évaluation à plusieurs tours). Résultat, selon les benchmarks effectués par les chercheurs de Salesforce, serait plus performant que le modèle Codex d’OpenAI, basé sur GPT-3. Pour rappel, Codex est à la fondation sur laquelle repose GitHub CoPilot, en disponibilité générale depuis le 21 juin 2022.
Silvio Savarese, vice-président exécutif et scientifique en chef de Salesforce, nous parle ici de Salesforce CodeGen et d’autres questions liées à l’IA. Ce professeur émérite de Stanford a rejoint l’entreprise en avril 2021 et a apporté avec lui son expertise en matière d’IA, de vision par ordinateur, d’apprentissage automatique, de robotique et de NLP. Il est à la tête d’une équipe de chercheurs qui « fournissent des technologies révolutionnaires », comme il le dit lui-même, ce qui inclut Salesforce CodeGen et d’autres projets, tels que des outils technologiques pour lutter contre la surcharge d’informations dans les environnements professionnels.
Quelle est la place de l’IA dans votre travail chez Salesforce ?
Silvio Savarese : Nous sommes vraiment intéressés par un usage de l’IA qui peut donner du pouvoir aux utilisateurs et aux clients grâce à de nouvelles capacités. Mais aussi, nous voulons nous assurer que ces nouvelles capacités offrent des expériences qui sont simples, personnalisées et de confiance. Ce sont les trois principaux aspects sur lesquels nous souhaitons mettre l’accent.
Nous sommes intéressés par l’exploitation des données de séries temporelles pour optimiser les opérations. Merlion était également un projet open source. Le but du travail est d’anticiper une forme complexe de défaillance des infrastructures, et de comprendre ce qui a mal tourné. Quelles en sont les causes et comment y remédier. C’est un des domaines que nous abordons.
Un autre domaine dans lequel l’entreprise investit consiste à permettre aux utilisateurs de consommer plus efficacement les informations relatives aux données. Nous aimons appeler cela « comment contrer » la surcharge d’informations lorsque nous sommes bombardés de données sur tous les canaux. [Nous explorons des technologies pour nous aider] à trouver des informations facilement et efficacement, à les résumer et à faire en sorte que l’intelligence artificielle nous aide à obtenir ce que nous voulons.
Genèse et cas d’usage de CodeGen
Pouvez-vous expliquer la genèse de Salesforce CodeGen ?
Silvio Savarese : Il s’agit d’une nouvelle façon de développer des logiciels. Plutôt que d’écrire directement des logiciels, nous voulons que les utilisateurs expliquent – décrivent – quel est le problème, en langage courant (pour l'instant, en anglais). Cela peut convenir à différents types de personas de développeurs : pour les développeurs plus expérimentés, l’idée est de les aider en prenant en charge certaines des parties les plus subalternes du processus de codage, afin qu’ils puissent se concentrer sur des aspects plus créatifs de leur travail. Les personnes qui ne codent pas ou qui codent peu peuvent entrer dans l’univers passionnant du développement de logiciels sans pratiquement aucune expérience.
Silvio SavareseChief Scientist, Salesforce
C’est une chose de faire des recherches sur une technologie, mais c’en est une autre de la produire. Que va-t-il falloir faire pour commercialiser Salesforce CodeGen ?
Silvio Savarese : Nous travaillons activement avec notre équipe interne chez Salesforce pour déployer cette technologie. Il y a différents groupes d’utilisateurs qui sont impatients de l’utiliser. Dès que nous aurons bien progressé, la prochaine étape consistera à la proposer aux développeurs liés à Salesforce, par le biais de la place de marché AppExchange, ou même à la proposer au public en open source.
Quelles ont été les utilisations les plus efficaces de CodeGen au sein de Salesforce ?
Silvio Savarese : Une application passionnante sur laquelle nous nous concentrons est destinée aux data scientists qui utilisent Tableau. Imaginez que nous voulions créer une application pour traiter certaines données. Notre équipe peut commencer par poser une question telle que : « Pouvez-vous créer une page où vous appuyez sur ce bouton, et traiter toutes ces données, calculer la moyenne, la variance ou autre ? » Mais l’utilisateur pour lequel nous l’avons créée peut écrire : « Oui, mais essayons d’ajouter quelques boutons supplémentaires ou d’autres fonctions pour pouvoir commencer à comparer ces données avec celles d’autres clients ».
D’autres applications potentielles que nous avons envisagées et qui s’inscrivent dans une perspective à plus long terme consistent à aider les développeurs à comprendre le code, de sorte que vous puissiez intégrer le code dans CodeGen, l’interpréter et lui redonner du sens à partir du langage naturel. Ainsi, vous pouvez voir cette fonction et dire : « Que fait cette fonction ? ».
La traduction de code d’un langage de programmation vers un autre est également quelque chose que CodeGen peut faire assez efficacement. C’est un travail en cours, mais c’est ainsi que nous voyons les choses évoluer.
Le NLP au service de la simplicité
Pour en revenir à la surcharge d’informations, comment votre équipe s’attaque-t-elle à ce problème ?
Silvio Savarese : Le principal défi est que nous sommes vraiment surchargés par beaucoup de contenu. Il est nécessaire de comprendre et de consommer les données avec précision, de manière plus efficace et plus intelligente. Le principal outil que nous développons utilise le traitement du langage naturel. L’idée est d’utiliser ces techniques qui nous permettent d’identifier et de rechercher des informations de manière très efficace.
Le plus important est de prendre des données et d’en donner une version plus concise. Cela peut être utile pour comprendre une conversation dans Slack ou une autre application de chat. Nous voulons résumer les conversations… dites-moi simplement de quoi parle cette conversation.
L’IA existe-t-elle, ou est-ce à tort que nous appelons le machine learning avancé « IA » ?
Silvio Savarese : À mon avis, la recherche s’est réellement concentrée sur le fait que l'IA doit apprendre à partir de grandes, grandes, grandes quantités de données. Et en raison de la capacité et de la complexité des réseaux de neurones, vous créez en quelque sorte d’énormes modèles pour traiter beaucoup d'informations.
Silvio SavareseChief Scientist, Salesforce
Je pense qu’il sera important d’aborder des situations où les informations sont en fait très limitées, d’effectuer une tâche où les données d’apprentissage sont disponibles en faibles quantités. C’est en fait ce que nous appelons « l’intelligence humaine ». Si vous demandez à un humain de jouer aux échecs et que, tout à coup, après quelques exemples, il est capable de maîtriser rapidement le jeu d’échecs, vous direz : « Oh, ce type est très intelligent ». Alors que si après des mois et des mois d’études, une personne devient un bon joueur d’échecs, vous êtes plutôt content, mais vous ne qualifiez pas nécessairement cette personne de génie.
Les êtres humains ont la capacité d’accomplir de nouvelles tâches – des tâches qui n’ont pas été vues lors d’une phase d’entraînement. On peut se dire : « Voyons voir ce qui est en quelque sorte lié, adjacent [à une tâche], puis rassembler les informations ». Je pense que c’est un domaine qui reste un terrain fertile pour la recherche en IA et c’est là que se trouvent tous ces produits passionnants que nous pouvons créer.
Salesforce a commencé par une approche très tactique et très axée sur les fonctionnalités de l’IA avec Einstein. Comment décririez-vous l’approche actuelle de Salesforce en matière d’IA ?
Silvio Savarese : Il ne s’agit pas d’ajouter plus d’outils, plus de boutons, plus de niveaux. Il s’agit plutôt de créer une expérience où l’utilisateur peut réellement communiquer avec la machine. Toute l’entreprise s’efforce de faciliter l’utilisation des outils, y compris l’IA, par les clients… avec des interfaces faciles à utiliser.