Comme son nom l’indique, Azure OpenAI se base sur les services d’OpenAI, la société américaine célèbre pour le lancement de ChatGPT.
Nous allons découvrir comment cette collaboration permet aujourd’hui de créer un produit personnalisé basé sur le LLM (Large Language Model) le plus connu de ce début d’année.
Avant de commencer : un peu d’historique
L'histoire de la collaboration entre Microsoft et OpenAI remonte à plusieurs années, lorsque Microsoft a investi massivement dans OpenAI.
En 2019, Microsoft investissait déjà un milliard de dollars dans la société tandis qu’en 2020, ils faisaient l’acquisition d’une licence exclusive pour l'utilisation de GPT-3, le modèle de langage développé par OpenAI. En janvier 2023, Microsoft a franchi une étape majeure en investissant 10 milliards de dollars supplémentaires en échange contre 75% des profits futurs d'OpenAI et obtenant une participation de 49% dans la société.
Au même moment Microsoft a commencé à intégrer les solutions d'OpenAI, notamment le modèle GPT-3.5, dans son offre B2C (le moteur de recherche Bing) et Cloud (Azure).
Vue d'ensemble d'Azure OpenAI
La nouvelle offre Azure OpenAI est une extension de la gamme de services d'intelligence artificielle proposés par Azure, qui incluait déjà d’autres solutions d’IA, telles que Speech Studio, Language Studio, Vision Studio, et bien d’autres.
Le récent ajout d'OpenAI permet aux clients de construire de solutions personnalisées basées sur les modèles GPT-3.5 et GPT-4 en fournissant deux fonctionnalités essentielles :
- Fine-Tuning d’un modèle ;
- Bring Your Own Data (en Preview) : ajout d’une source de données personnalisée à partir de fichiers textuels.
En plus des API REST traditionnelles, Azure propose également un SDK Python ainsi qu'une interface Web orientée no-code. L'objectif déclaré d'Azure OpenAI Service est de rendre la mise en service d’une solution d'IA Générative accessible à tout type de profil, y compris des personnes n’ayant jamais programmé auparavant.
Fine Tuning ou Bring Your Own Data
Azure OpenAI offre deux services principaux pour la création d'un chat personnalisé, à savoir :
- Fine-tuning : un processus qui permet d'adapter un modèle existant à de nouveaux cas d’utilisation ou l’ajout de fonctionnalité qui n’était pas initialement présente dans le modèle. Par exemple, le Fine Tuning peut être nécessaire pour la compréhension d’un vocabulaire avancé, pour la prise en charge d’un nouveau langage de programmation ou pour opérer de l’analyse de données dans de contextes inconnus par le modèle original.
- Bring Your Own Data : afin d’augmenter la base de connaissance du modèle avec des données spécifiques à une entreprise ou à un nouveau une case mais utilisant un vocabulaire pour la plupart générique. Ceci peut par exemple être utile lors de la création d’un “ChatGPT” fournissant des informations internes à l’entreprise ou pour créer un moteur de recherche personnalisé pour vos utilisateurs.
Concepts Principaux
Pour créer un service personnalisé basé sur OpenAI, plusieurs éléments sont nécessaires.
Voici les principaux building blocks :
- Deployment : Dans le contexte d'Azure OpenAI Service, le déploiement fait référence à l'environnement dans lequel le service est hébergé. Il permet de gérer différentes versions de modèles et de déployer des endpoints pour le service.
- Model : Le modèle est au cœur du service. Pour les versions personnalisées basées sur OpenAI, au moment de la rédaction de cet article (juillet 2023) il est possible d’utiliser des modèles tels que gpt-35-turbo 0613 (GPT Turbo 3.5 de juin); gpt-35-turbo 0301 (GPT Turbo 3.5 de mars); gpt-35-turbo-16k 0613 (GPT Turbo 3.5 avec support de 16k tokens de juin) et gpt-4 (sur demande).Bien évidemment, chaque modèle a ses spécificités et peut avoir un impact sur le pricing et le comportement du service.
- Cognitive Search : La solution Azure Cognitive Search fait référence à une base de données comparable à Elasticsearch qui servira de base de connaissances pour le modèle. Ces données sont stockées séparément du modèle lui-même et ne dépendent pas de la version du modèle utilisé. Cela permet de conserver la base de connaissances même en cas de changement de modèle.
- Blob Storage : Pour créer et entraîner le modèle personnalisé, il est nécessaire de disposer d'un système de stockage pour les données brutes. Via Blob Storage, que l’on peut considérer comme étant l’équivalent de AWS S3, Azure offre des solutions de stockage adaptées à ces besoins, permettant de traiter, analyser et utiliser les données pour l'entraînement et le développement du modèle.
Il est important de noter qu’au moment de l’écriture de cet article, le déploiement d'un service personnalisé basé sur OpenAI nécessite une demande d'accès spécifique auprès d'Azure. Dans notre expérience, la réponse (positive) est arrivée dans les heures suivantes l’émission de la demande. Une fois l'accès accordé, il sera bien évidemment possible de commencer à utiliser les fonctionnalités d'OpenAI Studio et d'exploiter les avantages des modèles et des outils mis à disposition.
Fine Tuning
Afin d’opérer du Fine Tuning, l’étape principale sera de préparer des datasets d'entraînement (training) et de validation pour affiner les modèles. Ces ensembles de données vous permettent de spécifier des exemples supplémentaires qui aideront le modèle à mieux comprendre le domaine d'application. Ainsi, il est recommandé d'avoir des centaines voire des milliers d'exemples pour obtenir des résultats pertinents.
Dans Azure OpenAI, le processus d'ajout des datasets peut passer par la console Web ou par l’API. Une fois les ensembles de données ajoutés, il sera possible de lancer des tâches de fine-tuning. Le résultat de cette opération sera un fine-tune-results qui pourra être utilisé comme modèle de votre Chat personnalisé.
Bring Your Own Data
En ce qui concerne Bring Your Own Data, la fonctionnalité est similaire à celle exposée par le plugin OpenAI "Retrieval Plugin", sauf qu’elle se retrouve ici pré-configurée avec les autres services Azure, et notamment Cognitive Search et Blob Storage.
Concernant Azure Cognitive Search, il a été adapté pour prendre en charge les cas d'utilisation de recherche par vecteur, grace à une mise à jour récente.
Pour rappel, la recherche par vecteurs est nécessaire à la réalisation de recherche « nearest neighbor » et qui est à la base de l’indexation des tokens dans un LLM. Autrement dit, lorsqu'un utilisateur effectue une recherche, le texte est transformé en vecteurs et comparé à la base documentaire également représentée par des vecteurs correspondants. Cette approche permet de trouver des corrélations et des résultats pertinents.
Le sourcing des données dans “Bring Your Own Data” est actuellement possible de trois manières :
- Manuelle, à partir d'une instance Cognitive Search préexistante ;
- Semi-automatique, en indexant le contenu d'un conteneur Blob Storage qui sera ensuite déversé dans Cognitive Search ;
- Entièrement automatique, en utilisant une interface d'upload de fichier qui s'affichera directement dans la console Azure OpenAI.
Dans les modalités 2 et 3, les formats supportés sont actuellement .txt, .md, .html, .pdf, .docx et .pptx avec une limite de 16Mo par fichier.
Démo
Puisque une séquence d’images vaut plus qu’un article entier, nous vous proposons une courte démo réalisée pour montrer la création d’un chat basé sur Bring Your Own Data avec Azure OpenAI.
Notre retour d’expérience
Dans notre démo, nous avons ajouté une base documentaire personnalisée à Azure OpenAI, composée d'articles et de podcasts issus des publications d'Hymaïa.
Dans notre démo il est possible de voir un résultat de recherche plutôt pertinent, qui suit les instructions (mise en forme en bullet points) et garde le contexte en occasion de la question « tu peux m’en dire plus sur le dernier point ? ». Aussi, il est important de le rappeler, l’échange s’est déroulé entièrement en langue française.
Dans la suite de nos expérimentations (hors démo) tout n’est pas parfait cependant. Par exemple, en réponse à des questions telles que "Qui est François ?" ou "Qui est Aramis Auto ?", l'IA a effectivement fourni des réponses basées sur les informations de la base documentaire, mais certaines d’entre elles n'étaient pas tout à fait exactes en raison d'une compréhension limitée des textes.
De plus, lorsqu'on lui a demandé de répondre de manière humoristique, la précision concernant le ton de la réponse a semblé avoir été totalement ignorée.
Dans nos itérations, nous avons également remarqué que le découpage des paragraphes des textes source jouait un rôle important dans la compréhension du texte : lorsque les contenus présentaient de longs paragraphes (c'est-à-dire des blocs de textes séparés par des sauts de ligne), les informations qu’ils contenaient ne semblaient avoir été prises en considération. Cela semble être en accord avec les limitations connues concernant les LLM.
D’un point de vue de l’interface utilisateur et de l’expérience no-code, Azure OpenAI présente encore des hics assez répandus, notamment des ressources qui, dans nos tests, ne se créaient pas correctement ou des messages d’erreur indéchiffrables. Ceci est certainement dû à la jeunesse du service, dont la partie “Bring Your Own Data” est actuellement en “Preview”.
Propriété et sécurité de la donnée
L’une des problématiques les plus à même de susciter de l’inquiétude, à juste titre, concernant le développement de services basées sur l’IA Générative est la propriété et la sécurité de la donnée. Autrement dit, qui est le propriétaire des informations utilisées pour fine-tuner un modèle ou étendre sa base de connaissance ? Et avec quels acteurs ces informations sont partagées ?
Côté Azure, la réponse est formulée dans l’article Data, privacy, and security for Azure OpenAI Service de la Knowledge base d’Azure.
Deux éléments sont à considérer :
- Par défaut, les services Azure OpenAI intègrent un service d’Abuse Monitoring dont le but est de “détecter et atténuer les instances de contenu récurrent et/ou de comportements suggérant une utilisation du service d'une manière susceptible de violer le Code de conduite ou d'autres conditions applicables au produit”. Le service de Abuse Monitoring est appliqué par défaut à votre projet et une demande spécifique et motivée doit être soumise afin de le désactiver.
- En revanche, les données de fine tuning ou “Bring Your Own Data” ne sont pas utilisées pour re-entrainer ou améliorer les modèles de base ou tiers. Également, aucun prompt ou aucune réponse n’est re-injectée dans le modèle - ce qui permettra d’éviter de fuite de données de votre organisation.
Coûts
En ce qui concerne les coûts, cela dépend de 3 éléments de l’architecture de la solution : Blob Storage, Cognitive Search et Azure OpenAI.
Azure Cognitive Search est disponible à partir d’un minimum de 75 $ par mois pour une instance de 2 Go et 3 Search Units. Il est aussi important de noter que le plan gratuit n’est pas compatible avec la solution Azure OpenAI.
En ce qui concerne l'inférence des requêtes, le prix varie en fonction du nombre de tokens supportés. Pour la version gpt3.5, le tarif est de 0,002 $ pour 1000 tokens, tandis que pour les versions gpt4 8k et gpt4 32k, les tarifs sont respectivement de 0,06 $ et 0,12 $ pour 1000 tokens.
Vers un paysage concurrentiel élargi
Azure OpenAI n'est plus le seul sur le marché de l’IA Générative. D'autres fournisseurs majeurs, tels que GCP et AWS proposent ou proposeront bientôt des solutions similaires. Les solutions de GCP se baseront notamment sur les LLM PaLM et PaLM 2, tandis qu'AWS, avec Bedrock, offrira des modèles tiers tels que Claude d'Anthropic et Jurassic-2 d'AI21.
Il est donc prévu que la concurrence s'intensifie dans ce domaine, offrant ainsi davantage de choix aux utilisateurs.
Informations accessoires sur cet article
Cet article a été rédigé en partie grâce à un outillage composé par MacWhisper de Jordi Bruin, basé sur OpenWhisper, utilisé pour convertir en format textuel une présentation interne issue de notre HymaDay de juin, et ChatGPT, dont nous nous sommes servis pour synthétiser le texte et améliorer la forme.