Affiner et déployer un LLM open source sur GPU à l'aide des actions rapides Data Science et AI
Introduction
Ce tutoriel vous explique comment utiliser le service Oracle Cloud Infrastructure (OCI) Data Science pour affiner un LLM open source à l'aide de la fonctionnalité d'actions rapides d'IA fournie par Data Science. Avec la facilité de pointer-cliquer, vous utiliserez les actions rapides de l'IA pour affiner un LLM Mistral fourni par Hugging Face, ce LLM affiné sur une FAQ publiée par NVIDIA. Les actions rapides d'IA sont ensuite utilisées pour déployer ce modèle réglé dans OCI sur une forme de GPU A10. Le code Python exécuté dans un bloc-notes Jupyter est ensuite utilisé pour montrer que la sortie du modèle réglé a le style et le ton souhaités qui sont similaires aux données d'entraînement NVIDIA.
Objectifs
- Lancez une session de bloc-notes Data Science dans OCI.
- Téléchargez la FAQ NVIDIA.
- Utilisez les actions rapides d'IA pour affiner un LLM Hugging Face sur cette FAQ, avec le réglage fin effectué sur une forme de GPU dans OCI.
- Utilisez les actions rapides d'IA pour repérer la courbe d'apprentissage du modèle affiné, afin de confirmer que le LLM réglé est adapté au déploiement.
- Utilisez les actions rapides d'IA pour déployer le LLM affiné sur GPU.
- Utilisez du code pour appeler l'adresse du modèle déployé.
- Utilisez le journal OCI pour surveiller le trafic vers l'adresse de ce modèle déployé.
- Utilisez python dans un bloc-notes Jupyter sur Data Science pour évaluer la qualité du modèle déployé.
Prérequis
- Bonne connaissance d'OCI Data Science.
- Accès à une location OCI dans une région disposant de formes GPU A10 ou supérieures disponibles.
- Stratégies OCI vous permettant de lancer un bloc-notes Data Science et d'utiliser des actions rapides d'IA pour affiner et déployer un LLM sur GPU. Pour obtenir des instructions détaillées sur les stratégies, reportez-vous à https://github.com/oracle-samples/oci-data-science-ai-samples/tree/main/ai-quick-actions/policies.
- Principal de ressource OCI activé de sorte que vous puissiez écrire des fichiers dans un bucket OCI Object Storage.
- Principal de ressource OCI activé de sorte que vous puissiez interagir avec un modèle déployé dans OCI.
- Compte Hugging Face avec un jeton actif.
Tâche 1 : provisionner une session de bloc-notes Data Science
-
Utilisez la console OCI pour créer un projet Data Science.
-
Accédez à ce projet et créez une session de bloc-notes Data Science comportant au moins deux ECPU.
-
Ouvrez cette session de bloc-notes et cliquez sur Etendre.
-
Démarrez une session de terminal dans Data Science.
-
Utilisez ce terminal pour cloner un référentiel github contenant les blocs-notes Jupyter qui seront utilisés par ce tutoriel :
git clone https://github.com/oracle-nace-dsai/quick-actions-demo-archive.git -
FAQ sur le clonage NVIDIA :
git clone https://huggingface.co/datasets/ajsbsd/nvidia-qa -
Copier la FAQ NVIDIA dans le répertoire de données du premier référentiel
cp nvidia-qa/NvidiaDocumentationQandApairs.csv quick-actions-demo-archive/data/. -
Installez puis activez l'environnement conda
General Machine Learning for CPUs on Python 3.11:odsc conda install -s generalml_p311_cpu_x86_64_v1 conda activate /home/datascience/conda/generalml_p311_cpu_x86_64_v1 -
Installer LangChain par https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/ai-quick-actions/model-deployment-tips.md#using-python-sdk-without-streaming
pip install langgraph "langchain>=0.3" "langchain-community>=0.3" "langchain-openai>=0.2.3" "oracle-ads>2.12"
Tâche 2 : configurer un compte face Hugging
-
Créez un compte Hugging Face sur https://huggingface.co.
-
Accédez à votre compte Hugging Face > Jetons d'accès et créez un jeton d'accès utilisateur pour lequel les droits d'accès suivants sont cochés :
- Lire l'accès au contenu de tous les référentiels sous votre espace de noms personnel
- Accès en lecture au contenu de tous les référentiels publics auxquels vous pouvez accéder
-
Utilisez une session de terminal Data Science pour journaliser votre jeton d'accès utilisateur avec Hugging Face :
git config --global credential.helper store huggingface-cli login
Tâche 3 : création d'un bucket Object Storage
Créez un bucket Object Storage dans la même région et le même compartiment que le bloc-notes Data Science.
- Sélectionnez Activer la gestion des versions d'objets.
Tâche 4 : configurer la journalisation
Créer un groupe de journaux, puis Créer un journal personnalisé
- Pour Créer une configuration d'agent, choisissez
Add configuration later
Tâche 5 : utiliser les actions rapides d'IA de Data Science pour déployer le LLM sur la forme de GPU A10, sans réglage fin
-
Accédez à Classeur Data Science > Lanceur > Actions rapides AI.
a. Recherchez les modèles
Mistral
b. Cliquez sur la mosaïquemistralai/Mistral-7B-Instruct-v0.3
c. Cliquez sur Déployer avec le journal ci-dessus sélectionné -
Le déploiement du modèle prend environ 15 minutes. Vous pouvez surveiller le journal de déploiement en sélectionnant Ouvrir les journaux dans le terminal.
-
Une fois le déploiement de modèle terminé, accédez à Déploiements > <votre modèle récemment déployé> > Tester votre modèle et testez-le à l'aide de questions simples, telles que :
Who wrote the Harry Potter book series? -
Certains LLM simples peuvent ne pas répondre correctement aux questions de test suivantes, mais
Mistral-7B-Instruct-v0.3répond plutôt bien à ces questions :A bat and a ball cost $1.10 in total. The bat costs $1.00 more than the ball. How much does the ball cost? Every cat has four legs. My pet has four legs. Is my pet a cat? Who is President of the United States?
Tâche 6 : interagir avec l'adresse du modèle déployé
-
Accédez à Déploiements > <votre modèle qui vient d'être déployé> Appeler votre modèle pour voir l'adresse de votre modèle déployé. Utilisez ensuite le terminal Data Science pour stocker cette adresse en tant que variable shell. Exemple :
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
Envoyez une invite à l'adresse du modèle déployé :
prompt="Who is President of the United States?" request_body='{"model":"odsc-llm","prompt":"'$prompt'","max_tokens":100,"temperature":0.1,"top_k":50,"top_p":0.99,"stop":[],"frequency_penalty":0,"presence_penalty":0}' oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal -
Utilisez cette boucle bash pour appeler l'adresse du modèle 100 fois en dix secondes :
for i in $(seq 1 100); do oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal & echo $i sleep 0.1 done -
Accédez à Déploiements > <votre modèle récemment déployé> > Journal pour afficher le trafic qui vient d'être envoyé à l'adresse du modèle.

Description de l'illustration log_traffic.png
Tâche 7 : utiliser les actions rapides d'IA pour affiner un LLM
La tâche précédente a déployé un LLM Mistral sans affinage. Cette tâche affine et déploie le même LLM. La tâche 9 compare les sorties des deux modèles, réglées et non réglées. Cette tâche et la suivante utilisent également deux blocs-notes Jupyter téléchargés à partir de cette archive de code.
-
Utilisez le navigateur de fichiers du bloc-notes Data Science pour accéder au dossier
quick-actions-demo-archiveet ouvrir le bloc-notes Jupyterprep_data.ipynb. -
Sélectionnez le noyau
generalml_p311_cpu_x86_64_v1. -
Révisez le dernier paragraphe du bloc-notes afin qu'il fasse référence à votre location/espace de noms et à votre bucket Object Storage.
-
Exécutez le bloc-notes Jupyter
prep_data.ipynb, qui :- Lisez la FAQ NVIDIA à partir du fichier
data/NvidiaDocumentationQandApairs.csv - refonte de la FAQ CSV en tant qu'enregistrements JSON comportant les champs
promptetcompletionattendus par les actions rapides d'IA. - effectuer un fractionnement de 90:10 de ces données en échantillons train:test.
- propagez l'exemple d'entraînement dans le fichier
quick_actions/tuning_data/tune_sample.jsonldans Object Storage.
- Lisez la FAQ NVIDIA à partir du fichier
-
Accédez à Actions rapides AI > Modèles >
mistralai/Mistral-7B-Instruct-v0.3. Cliquez ensuite sur Affiner le réglage avec les paramètres suivants :- Chemin Object Storage =
quick_actions/tuning_data/tune_sample.jsonl - fractionnement de validation =
20% - résultats Object Storage : chemin =
quick_actions/tuning_results - shape =
BM.GPU.A10.4s'il existe une disponibilité. Sinon, utilisez des formes10.2ou10.1. - sélectionnez votre groupe de journaux et votre journal
- Chemin Object Storage =
-
Activez l'option Afficher les configurations avancées avec les paramètres suivants :
batch_size = 64sequence_len = 256learning_rate = 0.000025epochs = 12
-
Le réglage fin prend environ 60 minutes sur un A10.2. Cliquez donc sur Ouvrir les journaux dans le terminal pour surveiller les journaux du travail de réglage fin.
-
Affichez la courbe d'apprentissage du modèle affiné dans la section Mesures. Un modèle bien réglé aura une courbe de perte de validation qui descend, puis des plateaux avec une époque croissante.

Description de l'illustration learning_curve.png
Tâche 8 : déployer le LLM affiné
-
Accédez à Actions rapides d'IA > Modèles affinés > <votre modèle affiné> > Déployer avec les paramètres suivants :
- Forme de calcul =
VM.GPU.A10.1 - Sélectionnez votre groupe de journaux et votre journal
- Forme de calcul =
-
Cliquez sur Ouvrir les journaux dans le terminal pour surveiller le journal de déploiement
Tâche 9 : tester le déploiement d'un LLM affiné
-
Une fois le déploiement de modèle terminé, accédez à Déploiements > <votre modèle ajusté> > Tester votre modèle et testez-le à l'aide des questions des exemples de test qui sont affichés dans le bloc-notes
prep_data.ipynb, par exemple :What benefits does Unified Memory bring to complex data structures and classes? -
Copiez/collez l'adresse du modèle dans la variable shell de votre session de terminal :
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
Envoyez une invite à l'adresse du modèle déployé :
prompt="What benefits does Unified Memory bring to complex data structures and classes?" request_body='{"model":"odsc-llm","prompt":"'$prompt'","max_tokens":100,"temperature":0.1,"top_k":50,"top_p":0.99,"stop":[],"frequency_penalty":0,"presence_penalty":0}' oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal -
Utilisez cette boucle bash pour appeler l'adresse de modèle 100 fois :
for i in $(seq 1 100); do oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal & echo $i sleep 0.1 done -
Cliquez sur le journal du modèle affiné/déployé pour visualiser le trafic récent sur l'adresse de ce modèle
-
Ouvrez le bloc-notes Jupyter
compare_models.ipynbet mettez à jour le paragraphe [8] pour faire référence aux adresses de vos deux modèles, réglées et non réglées. -
Exécutez ce bloc-notes, qui :
- Lisez l'exemple de test des enregistrements FAQ.
- Utilisez python pour alimenter cinq questions de test dans les points d'extrémité du modèle affiné et non réglé, et comparer leurs réponses.
-
Notez le paragraphe [10] qui illustre comment appeler l'adresse d'un modèle déployé à l'aide de python, ce qui est assez simple :

-
Examinez les principales conclusions de ce test :
- Les réponses du LLM affinées ont un ton, un style et une longueur assez similaires aux réponses actuelles de la FAQ NVIDIA.
- Les réponses du LLM non réglées sont beaucoup plus détaillées et incluent de nombreuses instructions étrangères qui sont probablement incorrectes.
- Les réponses du LLM affiné par rapport au LLM non réglé sont incorrectes le plus souvent, et à peu près également.
- Le réglage fin sur un ensemble de données beaucoup plus important augmenterait probablement la précision de ses réponses.
Tâche 10 : supprimer les ressources
-
Accédez à Actions rapides d'IA > Déploiements et supprimez vos déploiements de modèle.
-
Accédez à Actions rapides AI > Modèles > Modèles affinés et supprimez-les.
-
Utilisez la page de console OCI pour accéder à votre session de bloc-notes Data Science et Mettre fin.
-
Cliquez sur Travaux et supprimez vos travaux de réglage fin.
-
Supprimez votre projet Data Science.
-
Utilisez la page de console OCI pour accéder au bucket Object Storage et le supprimer.
-
Utilisez la console OCI pour supprimer le journal et le groupe de journaux.
Liens connexes
- En savoir plus sur les actions rapides d'IA
- Extraits de code utiles des actions rapides de l'IA
- Stratégies recommandées pour les actions rapides d'IA
- Blocs-notes Jupyter associés à ce tutoriel
Accusés de réception
- Auteurs - Joe Hahn, Data Scientist senior, joe.hahn@oracle.com
- Contributeurs - Kevin Ortiz, architecte cloud senior, kevin.ortiz@oracle.com
Ressources de formation supplémentaires
Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.
Fine-Tune & Deploy an Open Source LLM on GPU using Data Science and AI Quick Actions
G42931-02