NLG : l’essentiel sur Azure OpenAI
Le 16 janvier, Microsoft a annoncé la disponibilité générale d’Azure OpenAI, un service permettant aux entreprises d’exploiter les capacités des modèles de la famille GPT-3. Cet article détaille les fonctionnalités de ce service qui accueillera « bientôt » les modèles motorisant les applications ChatGPT et Dall-E 2.
Avant même qu’il fasse grand bruit auprès du grand public avec son agent conversationnel ChatGPT et son générateur d’images Dall-E2, Microsoft a acheté l’exploitation commerciale des modèles de génération de textes en langage naturel (NLG) d’OpenAI.
OpenAI propose avant tout des modèles d’IA capables de traiter des textes, des images et du code, déclinés à partir d’un modèle de langage fondamental : GPT-3. Ses déclinaisons ont été entraînées sur un superordinateur mis sur pied par Microsoft.
Depuis lors, Microsoft incorpore ces technologies dans différents services. L’entreprise a commencé par exploiter Codex, le modèle de génération de code d’OpenAI, pour lancer GitHub Copilot. Elle utilise les modèles GPT-3 pour enrichir les capacités d’Azure Cognitive Services et de Power BI, tandis que ses équipes développent Microsoft Designer, un outil reposant sur le modèle sous-jacent de l’application Dall-E 2 pour créer du contenu marketing et des mockups. Comme prévu en novembre 2021, Microsoft a lancé la disponibilité générale d’Azure OpenAI.
Qu’est-ce qu’Azure OpenAI ?
Réservé aux développeurs et aux équipes de data science, Azure OpenAI est une édition entreprise des services actuellement proposés par la startup. Azure OpenAI reprend les API REST d’OpenAI, mais donne également la possibilité d’accéder aux modèles issus de GPT-3.5 depuis un SDK Python et le Studio Azure OpenAI.
En outre, Microsoft permet à ses clients de protéger les données d’entraînement et les modèles personnalisés au repos à l’aide de leurs propres clés de chiffrement. Azure OpenAI prend en charge Customer LockBox, afin de gérer ou de limiter l’accès des données aux responsables du support de Microsoft, en cas de panne. Comme la plupart des services proposés par le fournisseur, Azure OpenAI supporte Azure AD, ainsi que les outils de supervision Azure Resource Health, Cost Analysis et Metrics & Diagnostics.
Le service dispose par ailleurs d’un outil de filtration de contenu. Il s’agit du même système disponible dans Azure Cognitive Service : les utilisateurs peuvent ainsi faire une ontologie des mots et des requêtes à bannir.
Trois grandes familles de modèles
Dans le détail, Azure OpenAI donne accès à trois familles de modèles. Les modèles estampillés GPT-3 (ou série de base) peuvent comprendre et générer du texte. Les modèles Codex expliquent et génèrent du code, tandis que les modèles Embedding sont capables de comprendre et d’utiliser des représentations vectorielles de textes et de code facilement interprétables par des modèles de machine learning et de deep learning.
Dans chacune de ces catégories, le service permet d’utiliser les modèles ad hoc ou affinés (fine tuned en VO). Par exemple, dans la famille GPT-3, il existe quatre grands modèles plus ou moins généralistes : Ada, Babbage, Curie et Davinci.
Ada est le modèle le plus rapide, mais également le plus simple : il permet d’extraire des entités nommées dans un texte, d’effectuer des classifications, de corriger des adresses ou de repérer des mots-clés.
Babbage est réservé à la classification et au classement de la correspondance entre des documents et les éléments d’une requête dans un moteur de recherche.
Plus étoffé, Curie permet d’effectuer des classifications complexes, des traductions, des analyses de sentiment et des résumés.
Enfin, Davinci est le modèle le plus complet : il comprend des intentions complexes, des relations de cause à effet, il effectue des résumés pour différents types d’audience, etc. Il est aussi le plus coûteux. Ce qui les différencie ? Leur profondeur de dimension, le nombre de paramètres, le temps d’entraînement et les jeux de données utilisés. Dans le doute, Microsoft et OpenAI recommandent d’utiliser Davinci.
Plus tard, Microsoft donnera accès par API à Dall-E 2 et à ChatGPT aux entreprises à travers Azure OpenAI afin que les développeurs intègrent eux-mêmes les sorties de ces deux modèles dans leurs applications.
Le géant du cloud est tributaire de son partenaire. En novembre dernier, OpenAI a fourni une API pour son modèle de génération d’images DALL-E 2, accessible en bêta publique. Concernant ChatGPT, OpenAI vient de lancer une liste d’attente pour obtenir l’interface de programmation par-dessus la technologie qui motorise l’agent conversationnel. Il faut donc bien distinguer l’offre technique Azure OpenAI des applications Web proposées aux grands publics par OpenAI.
Des modes d’apprentissage adaptés aux développeurs et aux data scientists
À partir d’Azure OpenAI Studio, les utilisateurs – des data scientists ou des développeurs peuvent « orienter » les modèles en fonction de leurs cas d’usage. Ils n’ont pas accès aux hyperparamètres des IA, mais réalisent des actions d’apprentissage contextuel en langage naturel, pour « guider » les réponses des modèles.
Il existe trois approches pour cet apprentissage contextuel (zero-shot, one-shot et few-shot) suivant le nombre d’exemples fournis au modèle par l’utilisateur pour réaliser une tâche. Le développeur peut ainsi ne pas guider l’apprentissage, fournir un seul exemple ou plusieurs centaines, par exemple s’il souhaite automatiser la création d’une FAQ.
Les data scientists, eux, peuvent « fine tuner » certains modèles en leur fournissant des données d’entraînement et de validation (aux formats CSV, TSV, JSON ou XLSX), puis en leur indiquant des paramètres d’entraînement (nombre d’époques, taille des batchs, précision de la compréhension, etc.) pour enfin vérifier leur performance et les déployer.
Une fois l’entraînement terminé, les développeurs peuvent intégrer les modèles via API au sein de leurs applications. En clair, Azure OpenAI pourrait être considéré comme une version évoluée d’IBM Watson.
Une machine à POC
Pour l’instant, plusieurs entreprises ont testé les fonctionnalités d’Azure OpenAI. Moveworks, éditeur d’une plateforme RH propulsée à l’IA s’en sert pour créer des FAQ. La division Web du média Al Jazeera explore les capacités de traduction, de génération de résumés, ou encore d’aide au respect « de règles et de styles » formalisés par la rédaction. Le cabinet KPMG, lui, veut s’en servir pour trouver des données liées aux impôts enfouis dans la documentation interne des entreprises, en vue de compléter des bilans ESG.
Il semble encore tôt pour intégrer ce type de service de deep learning dans de véritables produits. En réalité, les modèles d’OpenAI s’intègrent mal dans certaines applications. Par exemple, Microsoft veut combiner Azure Cognitive Search et Azure OpenAI afin de pousser des réponses pertinentes à une question. Or, Azure Cognitive Search n’a de cognitif que le nom : il s’agit d’un moteur de recherche propulsé par les « processeurs » Apache Lucene et d’autres couches sémantiques propriétaires.
Il faut donc envoyer la requête de l’utilisateur vers le moteur de recherche, pousser les résultats et traduire la requête en commande compréhensible par le modèle NLG afin qu’il génère un résumé à partir des documents trouvés, puis renvoyer le tout à l’usager. De surcroît, dans sa note de transparence, Microsoft conseille aux entreprises de limiter l’ampleur des cas d’usage et les capacités attribuées aux modèles. Le fait de rendre public un équivalent de ChatGPT n’est pas une pratique recommandée par le fournisseur.
Les modèles affinés, chers à entraîner et à héberger
Outre ces étapes supplémentaires (et sans même évoquer les problématiques de droits d’auteur), cela pose des questions d’explicabilité et de coûts. Premièrement, il n’est pas sûr que le modèle puisse « expliquer » pour quelles raisons il a sélectionné certains extraits pour « écrire » un résumé. Deuxièmement, un tel cas d’usage nécessite d’indexer des documents, puis de les analyser avec un modèle de deep learning, deux étapes particulièrement chères à large échelle.
Actuellement, Microsoft Azure calque son modèle économique sur celui d’OpenAI. Les tarifs de Microsoft pour l’inférence des modèles vont de 0,0004 dollar pour 1 000 tokens (Ada) jusqu’à 0,02 dollar pour 1 000 tokens (Davinci).
Petit point sur la tokenisation
Pour rappel, la tokenisation vise à diviser un texte en séquences communes de caractères (des syllabes ou mots d’une syllabe) pour faciliter la reconnaissance et la prédiction de mots par un algorithme de NLP. Selon le calculateur fourni par OpenAI, les 1 990 premiers signes (ou 306 mots) de cet article peuvent être divisés en 646 tokens. Cette mesure peut varier suivant la langue et la longueur des mots utilisés dans un texte. En règle générale, en anglais, un token équivaut à quatre signes, donc 100 signes correspondent à 75 tokens.
L’entraînement – ou plutôt l’affinage des modèles – est facturé de 20 dollars de l’heure (Ada) jusqu’à 84 dollars de l’heure (Davinci). En sus de payer l’utilisation de ces modèles personnalisés, leur coût d’hébergement oscille entre 0,05 dollar de l’heure et 34 dollars de l’heure. En clair, personnaliser un modèle variant de GPT-3 et le maintenir est onéreux.
Azure OpenAI est pour l’instant disponible dans cinq régions cloud Azure : East US, Central US, South Central US, West US 2 et West Europe.