Les trois méthodes essentielles pour évaluer un nouveau modèle de langage

The three essential methods for evaluating a new language model.

Comment vérifier si le dernier et le plus populaire Modèle de Langage Géant (LLM) correspond à vos besoins

Image de l'auteur (utilisant Stable Diffusion)

De quoi s’agit-il ?

De nouveaux LLM sont publiés chaque semaine, et si vous êtes comme moi, vous vous demandez peut-être : Est-ce que celui-ci correspond enfin à tous les cas d’utilisation pour lesquels je veux utiliser un LLM ? Dans ce tutoriel, je partagerai les techniques que j’utilise pour évaluer les nouveaux LLM. Je présenterai trois techniques que j’utilise régulièrement – aucune d’entre elles n’est nouvelle (en fait, je ferai référence à des articles de blog que j’ai déjà écrits), mais en les regroupant toutes, je gagne un temps considérable chaque fois qu’un nouveau LLM est publié. Je présenterai des exemples de tests sur le nouveau modèle OpenChat.

Pourquoi est-ce important ?

En ce qui concerne les nouveaux LLM, il est important de comprendre leurs capacités et leurs limites. Malheureusement, il peut être un peu fastidieux de comprendre comment déployer le modèle et de le tester systématiquement. Ce processus est souvent manuel et peut prendre beaucoup de temps. Cependant, avec une approche standardisée, nous pouvons itérer beaucoup plus rapidement et déterminer rapidement si un modèle vaut la peine d’investir plus de temps, ou s’il faut l’abandonner. Alors, commençons.

Premiers Pas

Il existe de nombreuses façons d’utiliser un LLM, mais lorsque nous réduisons les utilisations les plus courantes, elles sont souvent liées à des tâches ouvertes (par exemple, générer du texte pour une publicité), des applications de chatbot et la génération améliorée par la récupération (RAG). En conséquence, j’utilise des méthodes pertinentes pour tester ces capacités dans un LLM.

0. Déploiement du modèle

Avant de commencer l’évaluation, nous devons d’abord déployer le modèle. J’ai du code prêt à l’emploi pour cela, où nous pouvons simplement remplacer l’ID du modèle et l’instance sur laquelle le déployer (dans cet exemple, j’utilise Amazon SageMaker pour l’hébergement du modèle) et nous sommes prêts à partir :

import jsonimport sagemakerimport boto3from sagemaker.huggingface import HuggingFaceModel, get_huggingface_llm_image_uritry:  role = sagemaker.get_execution_role()except ValueError:  iam = boto3.client('iam')  role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']model_id = "openchat/openchat_8192"instance_type = "ml.g5.12xlarge" # 4 x 24GB VRAMnumber_of_gpu = 4health_check_timeout = 600 # how much time do we allow for model download# Hub Model configuration. https://huggingface.co/modelshub = {  'HF_MODEL_ID': model_id,  'SM_NUM_GPUS': json.dumps(number_of_gpu),  'MAX_INPUT_LENGTH': json.dumps(7000),  # Max length of input text  'MAX_TOTAL_TOKENS': json.dumps(8192),  # Max length of the generation (including input text)}# create Hugging Face Model Classhuggingface_model = HuggingFaceModel(  image_uri=get_huggingface_llm_image_uri("huggingface",version="0.8.2"),  env=hub,  role=role, )model_name = hf_model_id.split("/")[-1].replace(".", "-")endpoint_name = model_name.replace("_", "-")# deploy model to SageMaker Inferencepredictor = huggingface_model.deploy(  initial_instance_count=1,  instance_type=instance_type,   container_startup_health_check_timeout=health_check_timeout,  endpoint_name=endpoint_name,)  # send requestpredictor.predict({  "inputs": "Salut, je m'appelle Heiko.",})

Il est bon de noter que nous pouvons utiliser le nouveau Conteneur d’Inférence Hugging Face LLM pour SageMaker, car le nouveau modèle OpenChat est basé sur l’architecture LLAMA, qui est prise en charge dans ce conteneur.

1. Terrain de jeu

Utiliser le notebook pour tester quelques prompts peut être fastidieux, et cela peut aussi décourager les utilisateurs non techniques d’expérimenter avec le modèle. Une façon beaucoup plus efficace de vous familiariser avec le modèle, et d’encourager les autres à faire de même, consiste à construire un terrain de jeu. J’ai déjà expliqué comment créer facilement un tel terrain de jeu dans cet article de blog . Avec le code de cet article de blog, nous pouvons mettre en place rapidement un terrain de jeu.

Une fois que l’aire de jeu est établie, nous pouvons introduire quelques stimuli pour évaluer les réponses du modèle. Je préfère utiliser des stimuli ouverts, où je pose une question qui nécessite un certain degré de bon sens pour y répondre :

Comment puis-je améliorer mes compétences en gestion du temps ?

Image de l'auteur

Et si le canal de Suez n’avait jamais été construit ?

Image de l'auteur

Les deux réponses semblent prometteuses, suggérant qu’il pourrait être intéressant d’investir davantage de temps et de ressources dans les tests du modèle OpenChat.

2. Chatbot

La deuxième chose que nous voulons explorer est la capacité du modèle à être utilisé comme un chatbot. Contrairement à l’aire de jeu, où le modèle est toujours sans état, nous voulons comprendre sa capacité à “se souvenir” du contexte dans une conversation. Dans cet article de blog, j’ai décrit comment configurer un chatbot en utilisant le modèle Falcon. C’est une opération simple, et en changeant le point de terminaison SageMaker, nous pouvons le diriger vers le nouveau modèle OpenChat.

Voyons comment ça se passe :

Image de l'auteur

Les performances en tant que chatbot sont assez impressionnantes. Il y a eu une instance, cependant, où OpenChat a tenté de mettre fin brusquement à la conversation, coupant en plein milieu d’une phrase. Cet incident n’est pas rare, en fait. Nous n’observons généralement pas cela avec d’autres chatbots car ils utilisent des mots d’arrêt spécifiques pour obliger l’IA à cesser de générer du texte. L’apparition de ce problème dans mon application est probablement due à la mise en œuvre de mots d’arrêt dans mon application.

En dehors de cela, OpenChat a la capacité de maintenir le contexte tout au long d’une conversation, ainsi que d’extraire des informations cruciales à partir d’un document. Impressionnant. 😊

3. Récupération augmentée par génération (RAG)

La dernière tâche que nous voulons tester consiste à utiliser LangChain pour certaines tâches de RAG. J’ai constaté que les tâches de RAG peuvent être assez difficiles pour les modèles open source, nécessitant souvent que j’écrive mes propres stimuli et analyseurs de réponses personnalisés pour obtenir les fonctionnalités souhaitées. Cependant, ce que j’aimerais voir, c’est un modèle qui fonctionne de manière optimale “prêt à l’emploi” pour les tâches de RAG standard. Cet article de blog fournit quelques exemples de telles tâches. Voyons à quel point il se comporte bien. La question que nous poserons est :

Qui est le Premier ministre du Royaume-Uni ? Où est-il ou elle né(e) ? À quelle distance se trouve son lieu de naissance de Londres ?

Image de l'auteur

C’est sans aucun doute la meilleure performance que j’ai vue d’un modèle open source en utilisant le stimulus standard de LangChain. Cela n’est probablement pas surprenant, étant donné qu’OpenChat a été affiné pour les conversations de ChatGPT, et que LangChain est adapté aux modèles OpenAI, en particulier ChatGPT. Néanmoins, le modèle a été capable de retrouver avec précision les trois faits en utilisant les outils à sa disposition. Le seul inconvénient était que, finalement, le modèle n’a pas reconnu qu’il possédait toutes les informations nécessaires et qu’il pouvait répondre à la question de l’utilisateur. Idéalement, il aurait dû déclarer : “J’ai maintenant la réponse finale” et fournir à l’utilisateur les faits qu’il avait recueillis.

Image de l'auteur

Conclusion

Dans cet article de blog, je vous ai présenté trois techniques d’évaluation standard que j’utilise tout le temps pour évaluer les LLM. Nous avons observé que le nouveau modèle OpenChat se comporte exceptionnellement bien dans toutes ces tâches. Étonnamment, il semble très prometteur en tant que LLM sous-jacent pour une application de RAG, nécessitant probablement simplement des stimuli personnalisés pour déterminer quand il a atteint la réponse finale.

Il est à noter que ceci n’est pas une évaluation exhaustive, ni n’a pour objectif de l’être. Au lieu de cela, cela donne une indication de savoir si un modèle particulier vaut la peine d’investir plus de temps et de mener des tests plus approfondis. Il semble qu’OpenChat vaut définitivement la peine d’y consacrer du temps 🤗

N’hésitez pas à utiliser tous les outils, à les étendre et à les personnaliser, et commencez à évaluer les LLM qui suscitent votre intérêt en quelques minutes.

Heiko Hotz

👋 Suivez-moi sur IPGirl et LinkedIn pour en savoir plus sur l’IA générative, l’apprentissage automatique et le traitement du langage naturel.

👥 Si vous êtes basé à Londres, rejoignez l’un de nos Meetups NLP London.

Image par l'auteur

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Elon Musk met en garde contre la montée de la superintelligence en Chine

L’entrepreneur renommé Elon Musk a récemment fait les gros titres avec sa déclaration audacieuse lors d’u...

Apprentissage automatique

Rencontrez Video-ControlNet un nouveau modèle de diffusion de texte à vidéo révolutionnaire qui façonne l'avenir de la génération de vidéo contrôlable.

Ces dernières années, il y a eu un développement rapide dans la génération de contenu visuel basé sur le texte. Entra...

AI

10 Types d'algorithmes de regroupement en apprentissage automatique

Introduction Avez-vous déjà pensé à la façon dont de vastes volumes de données peuvent être démêlés, révélant des mot...

AI

Optimisez pour la durabilité avec Amazon CodeWhisperer

Cet article explore comment Amazon CodeWhisperer peut aider à optimiser le code pour la durabilité grâce à une effica...