Qwen3-FineTuning-Playground ist ein Open-Source-Projekt, das eine komplette Codebasis für die Feinabstimmung der Qwen3-Familie von großen Sprachmodellen bereitstellt. Die Grundlage dieses Projekts ist es, klare, professionelle und einfach zu erweiternde Code-Beispiele für die Feinabstimmung bereitzustellen, so dass Entwickler und Forscher leicht eine Vielzahl von Mainstream-Feinabstimmungstechniken anwenden können. Der Projektcode ist klar strukturiert und modularisiert verschiedene Funktionen wie überwachtes Feintuning, Reinforcement Learning, Wissensdestillation und Inferenz in separaten Verzeichnissen. Alle Trainings- und Inferenzskripte unterstützen die Konfiguration durch Übergabe von Parametern über die Befehlszeile, was bedeutet, dass Benutzer verschiedene Experimente durchführen können, ohne den Quellcode zu ändern. Darüber hinaus bietet das Projekt mehrere detaillierte End-to-End-Tutorials, so dass auch Anfänger die Dokumentation Schritt für Schritt durch den gesamten Prozess von der Umgebungskonfiguration über die Datenaufbereitung bis hin zum Modelltraining und zur Inferenz verfolgen können.
Funktionsliste
- Mehrere überwachte Feinabstimmungsprogramme (SFT)Unterstützt eine vollständige Feinabstimmung der Parameter des Modells sowie eine effiziente Feinabstimmung mit Techniken wie LoRA (Low Rank Adaptation) zur Anpassung an unterschiedliche Hardware-Ressourcen und Trainingsanforderungen.
- Ausrichtung des Verstärkungslernens (RL)Integration mehrerer auf menschlichem Feedback basierender Verstärkungslernalgorithmen zur Verbesserung der Dialogqualität und der Fähigkeit des Modells, Anweisungen zu befolgen.
- PPO-Algorithmus: implementiert einen klassischen proximalen Optimierungsalgorithmus, der das Modelllernen durch ein Belohnungsmodell (RM) leitet.
- ORPO-AlgorithmusBietet einen effizienten Algorithmus zur Ausrichtung von Präferenzen, der den Trainingsprozess vereinfacht, ohne dass zusätzliche Belohnungsmodelle benötigt werden.
- Optimierungstechniken nach dem Training:
- WissensdestillationUnterstützung bei der Migration von Wissen von einem größeren, leistungsfähigeren Lehrermodell (z. B. Qwen3-4B) zu einem kleineren Schülermodell (z. B. Qwen3-1.7B), um ein leichteres, aber immer noch leistungsfähiges Modell zu erhalten.
- Modulare CodestrukturDas Projekt unterteilt den Code klar in verschiedene Verzeichnisse je nach Funktion, zum Beispiel
Supervised_FineTuning
undRL_FineTuning
usw., wodurch der Code leicht zu verstehen und zu pflegen ist. - Parametrische LaufskripteAlle Skripte unterstützen die Konfiguration über Kommandozeilenparameter, so dass der Benutzer Parameter wie Modellpfade, Datensätze, Ausgabeverzeichnisse usw. flexibel anpassen kann, ohne den Code zu ändern.
- End-to-End-Beispiel-Tutorial: In
example/
Der Katalog enthält mehrere vollständige praktische Übungen, die den gesamten Prozess von SFT bis PPO, das Ein-Schritt-Alignment für ORPO, die Wissensdestillation und domänenspezifische Anwendungen (z. B. die Feinabstimmung von Mehr-Runden-Dialogen in der Psychologie) abdecken.
Hilfe verwenden
Diese Codebasis bietet einen vollständigen Prozess, der Ihnen einen schnellen Einstieg in die Feinabstimmung des Qwen3-Modells ermöglicht. Im Folgenden wird eine SFT-LoRA-Feinabstimmung als Beispiel genommen und das Verfahren im Detail beschrieben.
1. die Vorbereitung: Klonen des Projekts und Konfigurieren der Umgebung
Zunächst müssen Sie den Projektcode von GitHub auf Ihren lokalen Computer klonen und in das Projektverzeichnis wechseln.
git clone https://github.com/Muziqinshan/Qwen3-FineTuning-Playground.git
cd Qwen3-FineTuning-Playground
Der nächste Schritt ist die Konfiguration der Python-Umgebung. Um Konflikte mit Bibliotheken, die sich bereits auf Ihrem System befinden, zu vermeiden, ist es sehr empfehlenswert, dieconda
Erstellen Sie eine brandneue eigenständige Umgebung. Für dieses Projekt wird die Python-Version 3.10 empfohlen.
# 创建一个名为 qwen3_ft 的新环境
conda create -n qwen3_ft python=3.10
# 激活这个新创建的环境
conda activate qwen3_ft
Sobald die Umgebung aktiviert ist, müssen Sie alle Bibliotheken installieren, die für das Projekt erforderlich sind. Im Stammverzeichnis des Projekts muss dierequirements.txt
In der Datei sind bereits alle erforderlichen Bibliotheken aufgeführt. Führen Sie den folgenden Befehl aus, um sie zu installieren:
pip install -r requirements.txt
2. das Herunterladen des Modells und die Aufbereitung der Daten
Vor der Feinabstimmung müssen Sie das Basismodell und den Datensatz für das Training vorbereiten.
Modelle herunterladen
Empfohlen für dieses Projektmodelscope
Die Bibliothek lädt vortrainierte Qwen3-Modelle von der Magic Match Community herunter.modelscope
Die Bibliothek führt den vorherigen Schritt auspip install
Befehl installiert wurde.
Führen Sie die folgenden Befehle aus, um die beiden Basismodelle herunterzuladen, die in diesem Projektbeispiel verwendet werden sollen:
# 下载Qwen3-1.7B模型,它将主要用于SFT、ORPO和PPO等微调任务
modelscope download --model Qwen/Qwen3-1.7B --local_dir ./Qwen3/Qwen3-1.7B
# 下载Qwen3-4B模型,它主要用作知识蒸馏任务中的教师模型
modelscope download --model Qwen/Qwen3-4B --local_dir ./Qwen3/Qwen3-4B
Nach der Ausführung des Befehls werden die Modelldateien automatisch heruntergeladen und im Stammverzeichnis des Projekts unter dem Namen./Qwen3/Qwen3-1.7B
im Gesang antworten./Qwen3/Qwen3-4B
Katalog.
Daten vorbereiten
Die in diesem Projekt verwendeten Daten haben ein bestimmtes JSON-Format. Es gibt ein spezifisches JSON-Format für die Daten, die in derdata/
Verzeichnis, das ein Verzeichnis namensdirty_chinese_dpo.json
Beispieldatei, die Sie für die Formatierung Ihres eigenen Datensatzes heranziehen können.
3. der Beginn der SFT-LoRA-Feinabstimmung
Sobald alles bereit ist, kann mit dem Training begonnen werden. Mit dem folgenden Befehl wird eine überwachte Feinabstimmung (SFT) gestartet und die LoRA-Technik zur Verbesserung der Effizienz eingesetzt.
python Supervised_FineTuning/train_sft_dirty.py \
--model_path ./Qwen3/Qwen3-1.7B \
--dataset_path data/dirty_chinese_dpo.json \
--sft_adapter_output_dir ./output/sft_adapter_demo
--model_path
Gibt den Pfad zum Basismodell an, das wir gerade heruntergeladen haben.--dataset_path
Dataset: Gibt die Datei des Datensatzes an, der für das Training verwendet werden soll.--sft_adapter_output_dir
Gibt das Verzeichnis an, in dem die Gewichte des LoRA-Adapters nach Abschluss des Trainings gespeichert werden.
Der Schulungsprozess dauert je nach Leistung Ihrer Hardware eine gewisse Zeit. Am Ende des Trainingsprozesses werden Sie./output/sft_adapter_demo
Suchen Sie die generierte Modelladapterdatei in dem Verzeichnis.
4. die Argumentation mit fein abgestimmten Modellen
Nachdem das Modell trainiert wurde, besteht der wichtigste Schritt darin, seine Wirksamkeit zu überprüfen. Sie können das folgende Inferenzskript ausführen, um einen interaktiven Chat mit dem Modell zu führen, das Sie gerade feinabgestimmt haben.
python inference/inference_dirty_sft.py \
--model_path ./Qwen3/Qwen3-1.7B \
--adapter_path ./output/sft_adapter_demo \
--mode interactive
--model_path
:: Auch hier der Weg des Basismodells.--adapter_path
Verweist auf das Verzeichnis, in dem sich der LoRA-Adapter befindet, den wir im vorherigen Schritt trainiert haben.--mode interactive
Interaktiver Chat: Zeigt an, dass der interaktive Chat-Modus aktiviert ist, in dem Sie direkt in der Befehlszeile Fragen eingeben können, um mit dem Modell zu sprechen.
Nun sind Sie bereit, die Leistung des Modells bei bestimmten Aufgaben zu testen. Wenn Sie andere Feinabstimmungsmethoden wie ORPO oder Wissensdestillation ausprobieren möchten, können Sie sich auf dieexample/
Die ausführliche Tutorial-Dokumentation im Verzeichnis enthält ähnliche Schritte.
Anwendungsszenario
- Bereichsspezifischer intelligenter Kundenservice
Das generische Qwen3-Modell kann auf eine branchenspezifische Wissensbasis (z. B. Finanzen, Medizin, Recht) abgestimmt werden, um einen intelligenten Kundendienstroboter zu schaffen, der in der Lage ist, spezielle Fragen präzise zu beantworten. Das im Rahmen des Projekts bereitgestellte SFT-Tutorial ist ein idealer Ausgangspunkt für die Umsetzung dieses Szenarios. - Personalisierter Assistent für die Erstellung von Inhalten
Durch die Feinabstimmung des Modells anhand von Textdaten in einem bestimmten Stil (z. B. das Werk eines bestimmten Autors, ein bestimmter Stil von Werbetexten) ist es möglich, einen Assistenten zu erstellen, der diesen Schreibstil nachahmt und als Hilfe bei der Erstellung von Inhalten, Gedichten oder Werbetexten verwendet werden kann. - Modell-Leichtgewichtung und privates Deployment
Für Szenarien mit begrenzten Rechenressourcen kann die Funktion der Wissensdestillation genutzt werden, um die Fähigkeiten eines großen Modells (z. B. Qwen3-4B) in ein kleines Modell (z. B. Qwen3-1.7B) zu migrieren. Auf diese Weise bleibt ein Großteil der Leistung erhalten und die Kosten für die Inferenz werden erheblich gesenkt, was den privaten Einsatz auf persönlichen Geräten oder Edge-Computing-Geräten erleichtert. - Verbesserung der Sicherheit und Konsistenz von Modelldialogen
Methoden des Verstärkungslernens (z. B. PPO oder ORPO) können eingesetzt werden, um das Modell mit den menschlichen Präferenzdaten abzugleichen, so dass die ausgegebenen Antworten besser mit den menschlichen Werten übereinstimmen, wodurch die Erzeugung schädlicher oder unangemessener Inhalte verringert und die Zuverlässigkeit und Sicherheit des Dialogs verbessert wird.
QA
- Welche sind die wichtigsten Qwen3-Modelle, die von diesem Projekt unterstützt werden?
Das Projekt basiert hauptsächlich auf der Qwen3-Modellreihe für Entwicklung und Tests, und der Beispielcode bietet direkten Zugang zu den Modellen Qwen3-1.7B und Qwen3-4B zum Herunterladen und Verwenden. Theoretisch ist die Codestruktur auch mit anderen Größenmodellen der Qwen3-Serie kompatibel. - Welche Art von Hardwarekonfiguration ist für die Feinabstimmung erforderlich?
Die Hardwareanforderungen hängen von der gewählten Feinabstimmungsmethode und der Modellgröße ab. Für kleine Modelle wie das SFT-LoRA-Feintuning Qwen3-1.7B ist eine Consumer-Grafikkarte (z. B. NVIDIA 3090 oder 4090) in der Regel ausreichend. Für eine vollständige Feinabstimmung oder das Training größerer Modelle sind jedoch mehr Videospeicher und Rechenressourcen erforderlich. - Was ist der Unterschied zwischen ORPO- und PPO-Feinabstimmung?
PPO ist ein klassischer Reinforcement-Learning-Algorithmus, der ein unabhängiges, vorab trainiertes Belohnungsmodell benötigt, um den Output des Modells zu bewerten, und der Trainingsprozess ist relativ komplex. ORPO hingegen ist ein neuerer Algorithmus, der kein zusätzliches Belohnungsmodell benötigt und das Modell direkt anhand der Präferenzdaten optimiert, wodurch der Prozess einfacher und effizienter wird. - Kann ich meinen eigenen Datensatz verwenden?
Ganz und gar. Sie müssen Ihren Datensatz nur in Projekte einteilendata/
Verzeichnis, und übergeben Sie dann beim Ausführen der Trainingsskripte die--dataset_path
Geben Sie einfach Ihren Dateipfad mit dem Parameter an.