État de l'Intelligence Artificielle appliquée à l'Ingénierie de la Qualité 2021-2022
Section 3.2 : Traitement du langage

Chapitre 3 par Capgemini

le NLG dans le développement logiciel

Métier ●○○○○
Technique ●●●●○

Download the "Section 3.2: Inform & Interpret" as a PDF

Use the site navigation to visit other sections and download further PDF content

 

By submitting this form, I understand that my data will be processed by Sogeti as described in the Privacy Policy.

Dans ce court chapitre, nous présentons quelques exemples concrets qui peuvent bénéficier de la génération en langage naturel (NLG). Il s'agit d'une technologie naissante avec de nombreuses utilisations potentielles, que nous commençons tout juste à étudier.

En mai 2020, OpenAI a dévoilé le plus grand réseau neuronal du monde, baptisé GPT-3, un modèle de langage de 175 milliards de paramètres. GPT-3 a été entraîné en utilisant pratiquement toutes les données publiques disponibles sur Internet et a surpassé les modèles de pointe dans une série de tâches de traitement du langage naturel (NLP), notamment la traduction, la réponse à des questions et les tests de cloze. GPT-3 est un gigantesque modèle de traitement du langage naturel, qui atteint l'état de l'art dans une série de tâches. Sa principale avancée est l'élimination de la nécessité d'un réglage fin spécifique à la tâche. L'une des tâches pour lesquelles GPT-3 est très performant est la génération de texte - dans notre cas, la génération de code.

Bien que GPT-3 ne nécessite aucun entraînement (un exemple d'apprentissage à zéro coup), ses performances déjà excellentes sont surpassées par l'apprentissage à un coup ou à quelques coups.

Après avoir établi la tâche linguistique, nous compilons une petite collection d'échantillons triés sur le volet. Dans l'apprentissage automatique plus typique, un grand ensemble de données est nécessaire, suivi d'une annotation. Cependant, les modèles de langue ont une fenêtre d'entrée limitée. L'invite textuelle et la complétion générée doivent avoir une longueur inférieure à 2048 tokens (environ 1500 mots) lors de l'utilisation de l'API OpenAI pour GPT-3. Dans le cadre de cette contrainte, nous devons communiquer très efficacement ce que nous attendons du modèle (le "prompt"), en nous appuyant sur le nouvel art de "l'ingénierie du prompt". Cela nécessite une très petite collection d'exemples, contrairement à l'apprentissage automatique standard, qui requiert entre 60 et 80 % du temps total consacré à la préparation des données.

Old Way Task Definition
Figure


L'API GPT-3 détermine le modèle optimal pour nos besoins. Elle applique de manière abstraite la "correspondance floue" à un très grand modèle. Elle recherche la correspondance la plus proche, et son comportement peut être influencé par plusieurs paramètres.

Nous combinons la compréhension du langage naturel (NLU) avec la génération du langage naturel (NLP) dans deux domaines. Bien que nous générions du code structuré, cela relève toujours de la NLG.

Cas d'utilisation : Génération de cas de test

La figure ci-dessous illustre le fonctionnement de GPT-3 avec SQL. Le format est de type question-réponse, dans lequel nous demandons à GPT-3 d'effectuer une action et il détermine la meilleure correspondance. L'ingénierie critique est la conception de l'invite utilisée pour choisir les cas appropriés pour demander GPT-3. La solution réelle sera similaire à celle-ci (que nous ne pouvons pas démontrer en raison de la protection de la propriété intellectuelle), en ce sens que les utilisateurs téléchargeront des cas de test et le code Python sera généré.

Figure:


Dans notre situation, nous fournissons des cas de test en entrée et recevons du code en sortie.

Cas d'utilisation : Génération de tests de couverture de code

La couverture du code est l'un des aspects les plus critiques des projets agiles car elle nous permet de construire des pipelines CI/CD. Si les programmeurs aiment écrire du code, ils ne sont pas aussi enthousiastes à l'idée de construire des cas de test. Généralement, ces cas de test de couverture de code sont écrits dans le même langage que le logiciel sous-jacent. GPT-3 est bien adapté à ce type de génération de code de test, car il est entraîné sur Github, entre autres sources, dans le cadre de ses données d'entraînement. Cela augmente considérablement la productivité des développeurs, car il leur suffit de vérifier que le code de couverture de test fourni par GPT-3 est exact. Cela devient un exercice de débogage plutôt qu'une tâche de programmation de la couverture du code.

Enseignements tirés de quelques mises en œuvre réelles

L'une des leçons les plus importantes que nous avons tirées des mises en œuvre chez les clients est la diversité des modèles qui existent au sein des différentes équipes. Étant donné que notre modèle de paire clé-valeur doit être entraîné sur des modèles spécifiques afin d'améliorer les performances, l'obtention de données d'entraînement suffisantes (échantillons pour chaque type de modèle) est une difficulté importante, d'autant plus lorsque des modèles plus récents sont utilisés dans les projets.

Lors de la démonstration de ces solutions basées sur GPT-3 à des clients, il arrive que l'on fasse de la survente ou que l'on croie que les modèles font tout. Ce n'est pas le cas. GPT-3 génère fréquemment du code obsolète et fait des appels à des bibliothèques obsolètes. Parfois, il ne fonctionne tout simplement pas correctement et produit des déchets. La conception de l'invite appropriée est un talent qui doit être acquis via une utilisation extensive de GPT-3 et l'expérimentation de la façon de configurer les paramètres du modèle. En juillet 2021, GPT-3 n'est intégré à aucun système en nuage, ce qui pose des problèmes de sécurité et d'intégration.

Des modèles plus récents comme CuBERT (Code Understanding BERT) sont constamment développés et il est essentiel de les utiliser pour les travaux NLP/NLU afin d'en améliorer la qualité.

About the author

Rajeswaran ViswanathanRajeswaran Viswanathan

Rajeswaran Viswanathan is the head of AI Center of Excellence in India. He has published many papers and articles. He is the author of proportion – A comprehensive R package for inference on single. Binomial proportion and Bayesian computations. It is most widely used for categorical data analysis. He has a passion for teaching and mentoring next generation of data scientists.

About Capgemini

Capgemini is a global leader in partnering with companies to transform and manage their business by harnessing the power of technology. The Group is guided everyday by its purpose of unleashing human energy through technology for an inclusive and sustainable future. It is a responsible and diverse organisation of 270,000 team members in nearly 50 countries. With its strong 50 year heritage and deep industry expertise, Capgemini is trusted by its clients to address the entire breadth of their business needs, from strategy and design to operations, fueled by the fast evolving and innovative world of cloud, data, AI, connectivity, software, digital engineering and platforms. The Group reported in 2020 global revenues of €16 billion.

Get the Future You Want  I  www.capgemini.com

 

 

 

Capgemini logo