RagModel existant suivi dans Weave, vous évaluez l’application mise à jour avec weave.Evaluation, puis vous publiez le nouveau modèle RAG dans le registre. Ce flux de travail s’adresse aux équipes qui entraînent des modèles et en effectuent le fine-tuning avec W&B Models, et qui souhaitent les intégrer à des applications LLM suivies et évaluées avec Weave.
Il s’agit d’un notebook interactif. Vous pouvez l’exécuter localement ou utiliser les liens suivants :
Prérequis
Commencez par installer les bibliothèques requises, configurer les clés API, vous connecter à Forge et créer un projet Weights & Biases.- Installez
weave,pandas,unsloth,wandb,litellm,pydantic,torchetfaiss-gpuavecpip.
- Ajoutez les clés API requises depuis votre environnement.
- Connectez-vous à Forge et créez un nouveau projet.
Télécharger ChatModel depuis le registre et implémenter UnslothLoRAChatModel
Dans ce scénario, la Model Team a déjà affiné le modèle Llama-3.2 avec la bibliothèque unsloth afin d’optimiser les performances, et le modèle est disponible dans W&B Registry. Au cours de cette étape, vous récupérez le ChatModel affiné depuis le registre, puis vous le convertissez en weave.Model pour le rendre compatible avec le RagModel.
Le
RagModel utilisé dans le code ci-dessous est un weave.Model de premier niveau qui peut être considéré comme une application RAG complète. Il contient un ChatModel, une base de données vectorielle et un prompt. Le ChatModel est lui aussi un weave.Model, qui contient le code permettant de télécharger un artifact depuis W&B Registry. Grâce à cette approche modulaire, vous pouvez remplacer le ChatModel par n’importe quel autre modèle de chat LLM au sein du RagModel. Pour plus d’informations, consultez le modèle dans Weave.ChatModel, utilisez unsloth.FastLanguageModel ou peft.AutoPeftModelForCausalLM avec des adaptateurs, afin de l’intégrer efficacement dans l’application. Une fois le modèle téléchargé depuis le registre, configurez la logique d’initialisation et de prédiction dans la méthode model_post_init. Le code nécessaire à cette étape est disponible dans l’onglet Use du registre : vous pouvez le copier directement dans votre implémentation.
Le code suivant définit la classe UnslothLoRAChatModel, qui permet de gérer, d’initialiser et d’utiliser le modèle Llama-3.2 affiné récupéré depuis le registre. UnslothLoRAChatModel s’appuie sur unsloth.FastLanguageModel pour optimiser l’inférence. La méthode model_post_init télécharge et configure le modèle, tandis que la méthode predict traite les requêtes des utilisateurs et génère les réponses. Pour adapter le code à votre cas d’usage, remplacez la valeur de MODEL_REG_URL par le chemin de registre de votre modèle affiné, et ajustez des paramètres tels que max_seq_length ou dtype en fonction de votre matériel ou de vos besoins.
Intégrer la nouvelle version de ChatModel dans RagModel
Construire une application RAG à partir d’un modèle de chat affiné vous permet de réutiliser des composants adaptés à vos besoins sans reconstruire l’ensemble du pipeline. Au cours de cette étape, vous récupérez le RagModel existant depuis votre projet Weave et mettez à jour son ChatModel afin qu’il utilise le modèle affiné. Remplacer le modèle de chat laisse intacts les autres composants, comme la base de données vectorielle et les prompts : la structure globale de l’application est ainsi préservée, tout en améliorant ses performances.
Le code suivant récupère l’objet RagModel à l’aide d’une référence issue du projet Weave. Il met ensuite à jour l’attribut chat_model du RagModel afin qu’il utilise la nouvelle instance UnslothLoRAChatModel créée à l’étape précédente. Il publie alors le RagModel mis à jour pour en créer une nouvelle version. Enfin, il exécute un exemple de requête de prédiction avec le RagModel mis à jour afin de vérifier qu’il utilise bien le nouveau modèle de chat.
Exécuter une weave.Evaluation
Une fois le RagModel mis à jour publié, l’étape suivante consiste à vérifier que le nouveau modèle de chat affiné se comporte comme prévu au sein de l’application. Dans cette étape, vous évaluez les performances du RagModel mis à jour à l’aide d’une weave.Evaluation existante. Vous confirmez ainsi que le nouveau modèle de chat affiné fonctionne comme prévu dans l’application RAG. Pour simplifier l’intégration et faciliter la collaboration entre les équipes Models et Apps, vous journalisez les résultats de l’évaluation à la fois dans le run W&B du modèle et dans le workspace Weave.
Dans Models :
- La synthèse de l’évaluation est journalisée dans le run W&B utilisé pour télécharger le modèle de chat affiné. Elle comprend les métriques de synthèse et les graphiques affichés dans une vue de workspace à des fins d’analyse.
- L’ID de la trace d’évaluation est ajouté à la configuration du run et renvoie directement à la page Weave, ce qui améliore la traçabilité pour l’équipe Model Team.
- Le lien vers l’artifact ou le registre du
ChatModelest stocké comme entrée duRagModel. - L’ID du run W&B est enregistré dans une colonne supplémentaire des traces d’évaluation afin d’offrir davantage de contexte.
RagModel mis à jour et journaliser les résultats dans W&B et Weave. Assurez-vous que la référence d’évaluation (WEAVE_EVAL) correspond à la configuration de votre projet.
Enregistrer le nouveau modèle RAG dans le registre
Maintenant que vous avez évalué leRagModel mis à jour, la dernière étape consiste à le publier dans le registre afin que d’autres équipes puissent le découvrir et le réutiliser. Pour que les équipes Models et Apps puissent utiliser ultérieurement le RagModel mis à jour, téléversez-le dans le registre en tant qu’artifact de référence.
Le code suivant récupère la version de l’objet weave et le nom du RagModel mis à jour, puis s’en sert pour créer des liens de référence. Il crée ensuite dans W&B un nouvel artifact dont les métadonnées contiennent l’URL Weave du modèle. Enfin, il journalise cet artifact dans le registre et le lie à un chemin de registre donné.
Avant d’exécuter le code, vérifiez que les variables ENTITY et PROJECT correspondent à votre configuration W&B et indiquez le bon chemin de registre cible. Cette opération conclut le flux de travail en publiant le nouveau RagModel dans l’écosystème W&B pour faciliter la collaboration et la réutilisation.
Une fois le code de cette section exécuté, votre RagModel mis à jour est disponible dans le registre en tant qu’artifact de référence, ce qui boucle l’aller-retour entre W&B Models et Weave.