Fine-Tuning
Fine-Tuning API
Abschnitt betitelt „Fine-Tuning API“Passen Sie Modelle mit Ihren eigenen Daten unter Verwendung von Techniken wie LoRA und DPO mit RLHF an. Die Fine-Tuning API ist kompatibel mit der OpenAI Fine-Tuning-Schnittstelle.
Was Sie lernen werden:
- Wie Sie Trainingsdatensätze hochladen und validieren
- Wie Sie Fine-Tuning-Aufträge erstellen und verwalten
- Wie Sie den Trainingsfortschritt mit MLflow überwachen
Überblick
Abschnitt betitelt „Überblick“Die Fine-Tuning API umfasst zwei Komponenten:
- Upload-API — Trainingsdaten hochladen
- Fine-Tuning-Server — Fine-Tuning-Aufträge erstellen und verwalten
Unterstützte Modelle: Mistral-Nemo-Instruct-2407, Llama-3.1-70B-Instruct
Unterstützte Dateiformate: PDF, TXT, DOCX, CSV, JSON, JSONL, ZIP
Arbeitsablauf
Abschnitt betitelt „Arbeitsablauf“Zwei Wege für Trainingsdaten:
- Dokumentdateien — Laden Sie eine ZIP-Datei mit PDFs, TXT-, DOCX-, CSV- oder JSON-Dateien hoch. Diese werden in Abschnitte unterteilt und zur Erstellung eines synthetischen RAG-Datensatzes (Kontext + Frage + Antwort) verwendet.
- Vorformatiertes JSONL — Laden Sie einen Datensatz im OpenAI-Format direkt als JSONL hoch. Verwenden Sie den Validierungsendpunkt, um die Formatierung zu überprüfen.
Einrichtung
Abschnitt betitelt „Einrichtung“import osfrom openai import OpenAI
client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"),)Trainingsdaten hochladen
Abschnitt betitelt „Trainingsdaten hochladen“file_path = "/path/to/your_dataset.jsonl"uploaded = client.files.create( file=open(file_path, "rb"), purpose="fine-tune",)print(uploaded.id) # e.g., "file-abc123"Hochgeladene Dateien auflisten
Abschnitt betitelt „Hochgeladene Dateien auflisten“files = client.files.list(purpose="fine-tune")for f in files.data: print(f"ID: {f.id}, Filename: {f.filename}, Created: {f.created_at}")Datei löschen
Abschnitt betitelt „Datei löschen“client.files.delete("file-abc123")Datensatz validieren
Abschnitt betitelt „Datensatz validieren“Stellen Sie sicher, dass Ihr JSONL das korrekte Format hat, bevor Sie das Fine-Tuning starten:
import httpx
url = f"{os.getenv('OPENAI_BASE_URL')}/files/validate/{file_id}"headers = {"Content-Type": "application/json", "api-key": os.getenv("OPENAI_API_KEY")}
with httpx.Client() as http_client: response = http_client.get(url, headers=headers) print(response.json())Datensatzformat
Abschnitt betitelt „Datensatzformat“[ { "messages": [ {"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1} ] }]Fine-Tuning-Auftrag erstellen
Abschnitt betitelt „Fine-Tuning-Auftrag erstellen“job = client.fine_tuning.jobs.create( training_file="file-abc123", model="Llama-3.3-70B-Instruct", hyperparameters={"n_epochs": 2},)print(f"Job ID: {job.id}, Status: {job.status}")Fine-Tuning-Aufträge auflisten
Abschnitt betitelt „Fine-Tuning-Aufträge auflisten“jobs = client.fine_tuning.jobs.list(limit=10)for job in jobs.data: print(f"ID: {job.id}, Model: {job.model}, Status: {job.status}")Auftragsereignisse überwachen
Abschnitt betitelt „Auftragsereignisse überwachen“events = client.fine_tuning.jobs.list_events( fine_tuning_job_id="ftjob-abc123", limit=10,)for event in events.data: print(f"[{event.created_at}] {event.level}: {event.message}")Auftrag abbrechen
Abschnitt betitelt „Auftrag abbrechen“client.fine_tuning.jobs.cancel("ftjob-abc123")Benchmarking & Überwachung
Abschnitt betitelt „Benchmarking & Überwachung“LM Evaluation Harness
Abschnitt betitelt „LM Evaluation Harness“Fine-tuned-Modelle werden mit Standard-Benchmarks evaluiert:
- MMLU — Wissen in MINT, Geisteswissenschaften, Sozialwissenschaften
- HellaSwag — Alltagsverständnis und logisches Schlussfolgern
- ARC Challenge — Naturwissenschaftliches Denken und Logik
- GPQA — Expertenfragen in Biologie, Physik, Chemie
RAG Needle in a Haystack
Abschnitt betitelt „RAG Needle in a Haystack“Testet die Fähigkeit des Modells, relevante Informationen in großen Kontexten mit Ablenkungen zu finden.
MLflow-Überwachung
Abschnitt betitelt „MLflow-Überwachung“Überwachen Sie Training und Benchmarking unter: MLflow Dashboard
Jeder Fine-Tuning-Auftrag erstellt ein MLflow-Experiment mit:
- Trainingsmetriken — Verlustkurven, Trainingsfortschritt
- Benchmark-Ergebnisse — LM Evaluation Harness und Needle in a Haystack Ergebnisse
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Chat Completions — Ihr fine-tuned Modell verwenden
- Verfügbare Modelle — Alle verfügbaren Modelle durchsuchen
- API-Endpunkte — Vollständige Endpunkt-Referenz