Feinabstimmung und Bereitstellung eines Open-Source-LLM auf GPU mit Data Science und KI-Schnellaktionen
Einführung
In diesem Tutorial erfahren Sie, wie Sie mit dem Oracle Cloud Infrastructure (OCI) Data Science-Service ein Open-Source-LLM mit der KI-Schnellaktionen-Funktionalität optimieren, die von Data Science bereitgestellt wird. Mit Point-and-Click-Benutzerfreundlichkeit können Sie KI-Schnellaktionen verwenden, um ein Mistral-LLM von Hugging Face zu optimieren, wobei dieses LLM auf eine von NVIDIA veröffentlichte FAQ abgestimmt ist. AI Quick Actions wird dann verwendet, um dieses optimierte Modell in OCI auf einer A10-GPU-Ausprägung bereitzustellen. Python-Code, der in einem Jupyter-Notebook ausgeführt wird, wird dann verwendet, um zu zeigen, dass die Ausgabe des optimierten Modells den gewünschten Stil und Ton aufweist, der den NVIDIA-Trainingsdaten ähnelt.
Ziele
- Starten Sie eine Data Science-Notizbuchsession in OCI.
- Laden Sie die NVIDIA FAQ herunter.
- Verwenden Sie KI-Schnellaktionen, um ein Hugging Face LLM für diese häufig gestellten Fragen zu optimieren. Dabei wird die Feinabstimmung auf einer GPU-Ausprägung in OCI durchgeführt.
- Verwenden Sie KI-Schnellaktionen, um die Lernkurve des optimierten Modells zu prüfen und zu bestätigen, dass das optimierte LLM für das Deployment geeignet ist.
- Verwenden Sie KI-Schnellaktionen, um das fein abgestimmte LLM auf GPU bereitzustellen.
- Verwenden Sie Code, um den Endpunkt des bereitgestellten Modells aufzurufen.
- Mit dem OCI-Log können Sie den Traffic am Endpunkt des bereitgestellten Modells überwachen.
- Verwenden Sie python in einem Jupyter-Notizbuch zu Data Science, um die Qualität des bereitgestellten Modells zu bewerten.
Voraussetzungen
- Kenntnisse zu OCI Data Science
- Zugriff auf einen OCI-Mandanten in einer Region mit verfügbaren A10- oder höheren GPU-Ausprägungen.
- OCI-Policys, mit denen Sie ein Data Science-Notizbuch starten und KI-Schnellaktionen verwenden können, um ein LLM auf einer GPU zu optimieren und bereitzustellen. Ausführliche Richtlinien zu Policys finden Sie unter https://github.com/oracle-samples/oci-data-science-ai-samples/tree/main/ai-quick-actions/policies.
- OCI-Resource Principal aktiviert, sodass Sie Dateien in einen OCI Object Storage-Bucket schreiben können.
- OCI-Resource Principal aktiviert, sodass Sie mit einem in OCI bereitgestellten Modell interagieren können.
- Ein Hugging Face-Konto mit einem aktiven Token.
Aufgabe 1: Data Science-Notizbuchsession bereitstellen
-
Verwenden Sie die OCI-Konsole, um ein Data Science-Projekt zu erstellen.
-
Navigieren Sie zu diesem Projekt, und erstellen Sie eine Data Science-Notizbuchsession mit zwei oder mehr ECPUs.
-
Öffnen Sie diese Notizbuchsession, und klicken Sie auf Erweitern.
-
Terminal Session in Data Science starten
-
Mit diesem Terminal können Sie ein Github-Repository klonen, das die Jupyter-Notizbücher enthält, die von diesem Tutorial verwendet werden:
git clone https://github.com/oracle-nace-dsai/quick-actions-demo-archive.git -
FAQ zum Klonen von NVIDIA:
git clone https://huggingface.co/datasets/ajsbsd/nvidia-qa -
Kopieren Sie die NVIDIA FAQ in das Datenverzeichnis des ersten Repositorys
cp nvidia-qa/NvidiaDocumentationQandApairs.csv quick-actions-demo-archive/data/. -
Installieren und aktivieren Sie dann die Conda-Umgebung
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 -
Installieren Sie LangChain pro 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"
Aufgabe 2: Hugging Face-Konto einrichten
-
Erstellen Sie ein Hugging Face-Konto unter https://huggingface.co.
-
Navigieren Sie zu Ihrem Hugging Face-Konto > Zugriffstoken, und erstellen Sie ein neues Benutzerzugriffstoken, für das die folgenden Berechtigungen aktiviert sind:
- Lesezugriff auf Inhalte aller Repos unter Ihrem persönlichen Namespace
- Lesezugriff auf die Inhalte aller Public Gated Repositorys, auf die Sie zugreifen können
-
Verwenden Sie eine Data Science-Terminalsession, um Ihr Benutzerzugriffstoken mit Hugging Face zu protokollieren:
git config --global credential.helper store huggingface-cli login
Aufgabe 3: Objektspeicher-Bucket erstellen
Erstellen Sie einen Object Storage-Bucket in derselben Region und demselben Compartment wie das Data Science-Notizbuch.
- Wählen Sie Objektversionierung aktivieren aus
Aufgabe 4: Logging einrichten
Erstellen Sie eine Loggruppe, Benutzerdefiniertes Log erstellen
- Wählen Sie unter Agent-Konfiguration erstellen
Add configuration lateraus.
Aufgabe 5: KI-Schnellaktionen von Data Science verwenden, um LLM auf A10-GPU-Ausprägung bereitzustellen, ohne Feinabstimmung
-
Navigieren Sie zu Data Science-Notizbuch > Launcher > KI-Schnellaktionen.
a. Suchen Sie nach den
Mistral-Modellen
b. Klicken Sie auf die Kachelmistralai/Mistral-7B-Instruct-v0.3
c. Klicken Sie auf Bereitstellen, wobei das obige Log ausgewählt ist -
Die Modellbereitstellung dauert etwa 15 Minuten. Sie können das Deployment-Log überwachen, indem Sie Logs in Terminal öffnen auswählen.
-
Navigieren Sie nach Abschluss des Modell-Deployments zu Deployments > <Ihr gerade bereitgestelltes Modell> > Modell testen, und testen Sie dieses Modell mit einfachen Fragen, wie:
Who wrote the Harry Potter book series? -
Einige einfache LLMs können die folgenden Testfragen nicht richtig beantworten, aber
Mistral-7B-Instruct-v0.3erledigt die Beantwortung dieser Fragen ziemlich gut: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?
Aufgabe 6: Mit dem Endpunkt des bereitgestellten Modells interagieren
-
Navigieren Sie zu Deployments > <Ihr gerade bereitgestelltes Modell> Rufen Sie Ihr Modell auf, um den Endpunkt des bereitgestellten Modells anzuzeigen. Speichern Sie diesen Endpunkt dann mit dem Data Science-Terminal als Shell-Variable. Beispiel:
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
Eine Eingabeaufforderung an den Endpunkt des bereitgestellten Modells senden:
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 -
Mit dieser bash-Schleife können Sie den Endpunkt des Modells 100 Mal in zehn Sekunden aufrufen:
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 -
Navigieren Sie zu Deployments > <Ihr gerade bereitgestelltes Modell> > Log, um den Traffic anzuzeigen, der gerade an den Endpunkt des Modells gesendet wurde.

Beschreibung der Abbildung log_traffic.png
Aufgabe 7: KI-Schnellaktionen zur Feinabstimmung eines LLM verwenden
Die vorherige Aufgabe hat ein Mistral-LLM ohne Feinabstimmung bereitgestellt. Diese Aufgabe optimiert und stellt dann dasselbe LLM bereit. Aufgabe 9 vergleicht die Ausgaben beider Modelle, optimiert und nicht optimiert. Bei dieser und der nächsten Aufgabe werden auch zwei Jupyter-Notizbücher verwendet, die aus diesem Codearchiv heruntergeladen wurden.
-
Navigieren Sie mit dem Dateibrowser des Data Science-Notizbuchs zum Ordner
quick-actions-demo-archive, und öffnen Sie das Jupyter-Notizbuchprep_data.ipynb. -
Wählen Sie den Kernel
generalml_p311_cpu_x86_64_v1aus. -
Ändern Sie den zweiten Absatz des Notizbuchs, sodass er sich auf Ihren Mandanten/Namespace und Ihren Object Storage-Bucket bezieht.
-
Führen Sie das Jupyter-Notizbuch
prep_data.ipynbaus:- Lesen Sie die NVIDIA FAQ aus Datei
data/NvidiaDocumentationQandApairs.csv - Konvertieren Sie die häufig gestellten Fragen zur CSV-Datei in JSON-Datensätze mit den Feldern
promptundcompletion, die von KI-Schnellaktionen erwartet werden. - eine 90:10-Aufteilung dieser Daten in train:test-Beispiele durchführen.
- Übertragen Sie das Schulungsbeispiel in die Datei
quick_actions/tuning_data/tune_sample.jsonlin Object Storage.
- Lesen Sie die NVIDIA FAQ aus Datei
-
Navigieren Sie zu KI-Schnellaktionen > Modelle >
mistralai/Mistral-7B-Instruct-v0.3. Klicken Sie dann mit den folgenden Einstellungen auf Fein optimieren:- Object Storage-Pfad =
quick_actions/tuning_data/tune_sample.jsonl - Validierungsaufteilung =
20% - Ergebnisse Object Storage-Pfad =
quick_actions/tuning_results - Ausprägung =
BM.GPU.A10.4, wenn Verfügbarkeit vorhanden ist. Verwenden Sie andernfalls die Ausprägungen10.2oder10.1 - Loggruppe und Log auswählen
- Object Storage-Pfad =
-
Aktivieren Sie Erweiterte Konfigurationen anzeigen mit den folgenden Einstellungen:
batch_size = 64sequence_len = 256learning_rate = 0.000025epochs = 12
-
Die Feinabstimmung in A10.2 dauert etwa 60 Minuten. Klicken Sie daher auf Logs in Terminal öffnen, um die Logs des Feinabstimmungsjobs zu überwachen.
-
Zeigen Sie die Lernkurve des optimierten Modells im Abschnitt Metriken an. Ein gut abgestimmtes Modell wird eine Validierungsverlustkurve haben, die abfällt und dann mit zunehmender Epoche ansteigt.

Beschreibung der Abbildung learning_curve.png
Aufgabe 8: Optimiertes LLM bereitstellen
-
Navigieren Sie zu KI-Schnellaktionen > Fein optimierte Modelle > <Ihr gerade optimiertes Modell> > Bereitstellen mit den folgenden Einstellungen:
- Compute-Ausprägung =
VM.GPU.A10.1 - Loggruppe und Log auswählen
- Compute-Ausprägung =
-
Klicken Sie auf Logs in Terminal öffnen, um das Deployment-Log zu überwachen
Aufgabe 9: Deployment des optimierten LLM testen
-
Navigieren Sie nach Abschluss des Modell-Deployments zu Deployments > <Ihr gerade optimiertes Modell> > Ihr Modell testen, und testen Sie es anhand von Fragen aus den Testbeispielfragen, die im
prep_data.ipynb-Notizbuch angezeigt werden. Beispiel:What benefits does Unified Memory bring to complex data structures and classes? -
Kopieren Sie den Endpunkt des Modells, oder fügen Sie ihn in die Shell-Variable der Terminalsession ein:
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
Eine Eingabeaufforderung an den Endpunkt des bereitgestellten Modells senden:
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 -
Mit dieser bash-Schleife können Sie den Modellendpunkt 100-mal aufrufen:
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 -
Klicken Sie auf das Log des optimierten/bereitgestellten Modells, um den letzten Traffic in den Endpunkt dieses Modells anzuzeigen
-
Öffnen Sie das
compare_models.ipynbJupyter-Notizbuch, und aktualisieren Sie Absatz [8], um auf die Endpunkte für Ihre beiden Modelle zu verweisen, optimiert und nicht optimiert. -
Führen Sie dieses Notizbuch aus:
- Lesen Sie das Testbeispiel der FAQ-Datensätze.
- Mit python können Sie fünf Testfragen in die Endpunkte des optimierten und nicht optimierten Modells einspeisen und deren Antworten vergleichen.
-
Beachten Sie Absatz [10], in dem dargestellt wird, wie der Endpunkt eines bereitgestellten Modells mit python aufgerufen wird. Dies ist ganz einfach:

-
Prüfen Sie die wichtigsten Ergebnisse aus diesem Test:
- Die fein abgestimmten LLM-Antworten haben einen Ton, Stil und eine Länge, die den tatsächlichen NVIDIA-komponierten FAQ-Antworten ziemlich ähnlich ist.
- Die unoptimierten LLM-Antworten sind viel ausführlicher und enthalten viele irrelevante Aussagen, die wahrscheinlich falsch sind.
- Antworten aus dem fein abgestimmten und nicht optimierten LLM sind öfter falsch als nicht, und etwa gleich.
- Die Feinabstimmung auf ein viel größeres Dataset würde wahrscheinlich die Genauigkeit seiner Antworten erhöhen.
Aufgabe 10: Ressourcen löschen
-
Navigieren Sie zu KI-Schnellaktionen > Deployments, und löschen Sie Ihre Modell-Deployments.
-
Navigieren Sie zu KI-Schnellaktionen > Modelle > Fein abgestimmte Modelle, und löschen Sie sie.
-
Auf der OCI-Konsolenseite können Sie zu Ihrer Data Science-Notizbuchsession navigieren und Beenden.
-
Klicken Sie auf Jobs, und löschen Sie Ihre Optimierungsjobs.
-
Löschen Sie Ihr Data Science-Projekt.
-
Auf der OCI-Konsolenseite können Sie zu Ihrem Object Storage-Bucket navigieren und ihn löschen.
-
Verwenden Sie die OCI-Konsole, um Ihre Log- und Loggruppe zu löschen.
Verwandte Links
- Informationen zu KI-Schnellaktionen
- Nützliche Code-Snippets für KI-Schnellaktionen
- Empfohlene Policys für KI-Schnellaktionen
- Mit diesem Tutorial verknüpfte Jupyter-Notizbücher
Bestätigungen
- Autoren – Joe Hahn, Senior Data Scientist, joe.hahn@oracle.com
- Mitwirkende – Kevin Ortiz, Senior Cloud Architect, kevin.ortiz@oracle.com
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Fine-Tune & Deploy an Open Source LLM on GPU using Data Science and AI Quick Actions
G42928-02