Ottimizza e distribuisci un LLM open source sulla GPU utilizzando Data Science e AI Quick Actions
Introduzione
Questa esercitazione descrive l'utilizzo del servizio Data Science di Oracle Cloud Infrastructure (OCI) per perfezionare un LLM open source utilizzando la funzionalità AI Quick Actions fornita da Data Science. Con facilità point-and-click, utilizzerai AI Quick Actions per perfezionare un LLM Mistral fornito da Hugging Face, con quel LLM ottimizzato su una FAQ pubblicata da NVIDIA. Le azioni rapide AI vengono quindi utilizzate per distribuire tale modello ottimizzato in OCI in una forma GPU A10. Il codice Python in esecuzione in un notebook Jupyter viene quindi utilizzato per dimostrare che l'output del modello sintonizzato ha lo stile e il tono desiderati che sono simili ai dati di addestramento NVIDIA.
Obiettivi
- Avviare una sessione notebook Data Science in OCI.
- Scarica le FAQ di NVIDIA.
- Utilizza le azioni rapide AI per perfezionare un LLM Hugging Face su tali domande frequenti, con l'ottimizzazione eseguita su una forma GPU in OCI.
- Utilizza AI Quick Actions per controllare attentamente la curva di apprendimento del modello ottimizzato e confermare che l'LLM ottimizzato sia adatto per la distribuzione.
- Utilizza AI Quick Actions per distribuire l'LLM ottimizzato sulla GPU.
- Utilizzare il codice per chiamare l'endpoint del modello distribuito.
- Utilizzare il log OCI per monitorare il traffico nell'endpoint del modello distribuito.
- Utilizzare python in un notebook Jupyter su Data Science per valutare la qualità del modello distribuito.
Prerequisiti
- Familiarità con OCI Data Science.
- Accesso a una tenancy OCI in un'area che ha forme GPU A10 o superiori disponibili.
- Criteri OCI che consentono di avviare un notebook Data Science e di utilizzare le azioni rapide AI per perfezionare e distribuire un LLM sulla GPU; consultare https://github.com/oracle-samples/oci-data-science-ai-samples/tree/main/ai-quick-actions/policies per linee guida dettagliate sui criteri.
- Principal delle risorse OCI abilitato in modo da poter scrivere file in un bucket di storage degli oggetti OCI.
- Principal delle risorse OCI abilitato in modo da poter interagire con un modello distribuito in OCI.
- Account Hugging Face con un token attivo.
Task 1: Provisioning di una sessione notebook Data Science
-
Utilizzare la console OCI per creare un progetto di Data Science.
-
Accedere a tale progetto e creare una sessione notebook Data Science con due o più ECPU.
-
Aprire la sessione notebook e fare clic su Estendi.
-
Avvia una sessione terminale in Data Science.
-
Utilizzare tale terminale per clonare un repository github contenente i notebook Jupyter che verranno utilizzati da questo tutorial:
git clone https://github.com/oracle-nace-dsai/quick-actions-demo-archive.git -
Duplica NVIDIA FAQ:
git clone https://huggingface.co/datasets/ajsbsd/nvidia-qa -
Copia le FAQ NVIDIA nella directory dei dati del primo repository
cp nvidia-qa/NvidiaDocumentationQandApairs.csv quick-actions-demo-archive/data/. -
Installare e quindi attivare il 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 -
Installare LangChain per 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"
Task 2: Impostare un account Hugging Face
-
Crea un account Hugging Face su https://huggingface.co.
-
Passare all'account Hugging Face > Token di accesso e creare un nuovo token di accesso utente con le seguenti autorizzazioni selezionate:
- Leggi l'accesso ai contenuti di tutti i repository sotto il tuo spazio di nomi personale
- Leggi l'accesso ai contenuti di tutti i repository con accesso pubblico a cui puoi accedere
-
Utilizzare una sessione terminale di Data Science per registrare il token di accesso utente con Hugging Face:
git config --global credential.helper store huggingface-cli login
Task 3: Creare un bucket di storage degli oggetti
Creare un bucket di storage degli oggetti nella stessa area e compartimento del notebook Data Science.
- Selezionare Abilita controllo delle versioni oggetto
Task 4: Imposta registrazione
Creare un gruppo di log, quindi Creare un log personalizzato
- Per Crea configurazione agente scegliere
Add configuration later
Task 5: utilizzare le azioni rapide AI di Data Science per distribuire LLM sulla forma GPU A10, senza ottimizzazione
-
Passare a Taccuino Data Science > Lanciatore > Azioni rapide AI
a. Cercare i modelli
Mistral
b. Fare clic sulla casellamistralai/Mistral-7B-Instruct-v0.3
c. Fare clic su Distribuisci con il log sopra selezionato -
La distribuzione del modello richiede circa 15 minuti. È possibile monitorare il log di distribuzione selezionando Apri log nel terminale.
-
Al termine della distribuzione del modello, andare a Distribuzioni > <modello appena distribuito> > Eseguire il test del modello e eseguire il test del modello con domande semplici, ad esempio:
Who wrote the Harry Potter book series? -
Alcuni LLM semplici possono non rispondere correttamente alle seguenti domande di test, ma
Mistral-7B-Instruct-v0.3fa un buon lavoro rispondendo a queste: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?
Task 6: Interazione con l'endpoint del modello distribuito
-
Passare a Distribuzioni > <modello appena distribuito> Richiamare il modello per visualizzare l'endpoint del modello distribuito. Utilizzare quindi il terminale Data Science per memorizzare l'endpoint come variabile shell. Ad esempio:
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
Inviare un prompt all'endpoint del modello distribuito:
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 -
Utilizzare questo loop bash per chiamare l'endpoint del modello 100 volte in dieci secondi:
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 -
Passare a Distribuzioni > <modello appena distribuito> > Log per visualizzare il traffico appena inviato nell'endpoint del modello.

Descrizione dell'immagine log_traffic.png
Task 7: utilizzare le azioni rapide AI per ottimizzare un LLM
Il task precedente ha implementato un LLM Mistral senza ottimizzazione. Questo task ottimizzerà e quindi distribuirà lo stesso LLM. Il task 9 confronterà gli output di entrambi i modelli, ottimizzati e non ottimizzati. Questa attività e la successiva utilizzano anche due notebook Jupyter scaricati da questo archivio di codice.
-
Utilizzare il browser file del notebook Data Science per accedere alla cartella
quick-actions-demo-archivee aprire il notebook Jupyterprep_data.ipynb. -
Selezionare il kernel
generalml_p311_cpu_x86_64_v1. -
Rivedere il secondo all'ultimo paragrafo del notebook in modo che faccia riferimento alla tenancy o allo spazio di nomi e al bucket di storage degli oggetti.
-
Eseguire il notebook Jupyter
prep_data.ipynb, che:- leggi le FAQ NVIDIA dal file
data/NvidiaDocumentationQandApairs.csv - rifondere le domande frequenti CSV come record JSON con i campi
promptecompletionprevisti dalle azioni rapide AI. - eseguire una suddivisione 90:10 di tali dati in esempi di training:test.
- inviare l'esempio di formazione nel file
quick_actions/tuning_data/tune_sample.jsonlnello storage degli oggetti.
- leggi le FAQ NVIDIA dal file
-
Passare ad Azioni rapide AI > Modelli >
mistralai/Mistral-7B-Instruct-v0.3. Fare quindi clic su Fine tuning con le impostazioni riportate di seguito.- Percorso storage degli oggetti =
quick_actions/tuning_data/tune_sample.jsonl - divisione di convalida =
20% - percorso di storage degli oggetti risultati =
quick_actions/tuning_results - forma =
BM.GPU.A10.4se la disponibilità esiste. In caso contrario, utilizzare le forme10.2o10.1 - selezionare Gruppo di log e Log
- Percorso storage degli oggetti =
-
Abilitare Mostra configurazioni avanzate con le seguenti impostazioni:
batch_size = 64sequence_len = 256learning_rate = 0.000025epochs = 12
-
L'ottimizzazione richiede circa 60 minuti su un A10.2, quindi fare clic su Apri log nel terminale per monitorare i log del job di ottimizzazione.
-
Visualizzare la curva di apprendimento del modello ottimizzato nella sezione Metriche. Un modello ben sintonizzato avrà una curva di perdita di convalida che scende e poi altipiani con un'epoca crescente.

Descrizione dell'immagine learning_curve.png
Task 8: Distribuire il LLM ottimizzato
-
Passare ad Azioni rapide AI > Modelli ottimizzati > <modello ottimizzato> > Distribuisci con le impostazioni riportate di seguito.
- Forma di computazione =
VM.GPU.A10.1 - Selezionare Gruppo di log e Log
- Forma di computazione =
-
Fare clic su Apri log nel terminale per monitorare il log di distribuzione
Task 9: Test della distribuzione di LLM ottimizzata
-
Al termine della distribuzione del modello, passare a Distribuzioni > <modello con tuning corretto> > Eseguire il test del modello e eseguirne il test utilizzando le domande delle domande di esempio di test visualizzate nel blocco appunti
prep_data.ipynb, ad esempio:What benefits does Unified Memory bring to complex data structures and classes? -
Copiare/incollare l'endpoint del modello nella variabile shell della sessione terminale:
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
Inviare un prompt all'endpoint del modello distribuito:
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 -
Utilizzare questo loop bash per chiamare l'endpoint del modello 100 volte:
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 -
Fare clic sul log del modello ottimizzato/distribuito per visualizzare il traffico recente nell'endpoint del modello
-
Aprire il notebook Jupyter
compare_models.ipynbe aggiornare il paragrafo [8] per fare riferimento agli endpoint dei due modelli, sintonizzati e non sintonizzati. -
Eseguire il notebook, che consente di:
- Leggi il campione di prova dei record FAQ.
- Usa python per inserire cinque domande di test negli endpoint del modello ottimizzato e non ottimizzato e confrontare le loro risposte.
-
Nota paragrafo [10] che illustra come chiamare l'endpoint di un modello distribuito utilizzando python, che è abbastanza semplice:

-
Esaminare i principali risultati di questo test:
- Le risposte LLM ottimizzate hanno un tono, uno stile e una lunghezza abbastanza simili alle risposte delle FAQ composte da NVIDIA.
- Le risposte dei LLM non sintonizzati sono molto più verbose e includono molte affermazioni estranee che sono probabilmente errate.
- Le risposte dai LLM ottimizzati rispetto a quelli non sintonizzati sono errate più spesso di quanto non lo siano e altrettanto.
- L'ottimizzazione di un set di dati molto più grande aumenterebbe probabilmente l'accuratezza delle sue risposte.
Task 10: Elimina le risorse
-
Passare ad Azioni rapide AI > Distribuzioni ed eliminare le distribuzioni dei modelli.
-
Passare ad Azioni rapide AI > Modelli > Modelli con tuning ed eliminare.
-
Utilizzare la pagina Console OCI per andare alla sessione notebook Data Science e all'interruzione.
-
Fare clic su Job ed eliminare i job di ottimizzazione.
-
Eliminare il progetto Data Science.
-
Utilizzare la pagina Console OCI per andare al bucket di storage degli oggetti ed eliminarlo.
-
Utilizzare la console OCI per eliminare il gruppo di log e di log.
Collegamenti correlati
- Informazioni sulle azioni rapide AI
- Snippet di codice utili AI Quick Actions
- Criteri consigliati per le azioni rapide AI
- Taccuini Jupyter associati a questo tutorial
Conferme
- Autori - Joe Hahn, Senior Data Scientist, joe.hahn@oracle.com
- Contributori - Kevin Ortiz, Senior Cloud Architect, kevin.ortiz@oracle.com
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Fine-Tune & Deploy an Open Source LLM on GPU using Data Science and AI Quick Actions
G42932-02