Ein effizientes, flexibles und voll ausgestattetes Toolkit für das Feinabstimmen großer Sprachmodelle, das verschiedene Modelle und Trainingsalgorithmen unterstützt.
XTuner - Effizientes Toolkit für das Feinabstimmen großer Sprachmodelle
Projektübersicht
XTuner ist ein effizientes, flexibles und voll ausgestattetes Toolkit für das Feinabstimmen großer Sprachmodelle, das vom InternLM-Team entwickelt wurde. Das Projekt zielt darauf ab, Benutzern ein einfach zu bedienendes und dennoch leistungsstarkes Werkzeug zum Feinabstimmen verschiedener großer Sprachmodelle bereitzustellen, darunter InternLM, Llama, Qwen, ChatGLM, Baichuan und andere Mainstream-Modelle.
Kernfunktionen
1. Effizienz (Efficient)
- Geringer Ressourcenbedarf: Unterstützt das Feinabstimmen großer Sprachmodelle mit 7B Parametern auf einer einzelnen 8GB GPU
- Multi-Node-Skalierung: Unterstützt Multi-Node-Feinabstimmung mit über 70B Parametern
- Leistungsoptimierung: Automatische Planung von Hochleistungsoperatoren wie FlashAttention und Triton-Kernels zur Verbesserung des Trainingsdurchsatzes
- DeepSpeed-Integration: Kompatibel mit dem DeepSpeed-Framework, einfache Verwendung verschiedener ZeRO-Optimierungstechniken
2. Flexibilität (Flexible)
- Multi-Modell-Unterstützung: Unterstützt eine Vielzahl großer Sprachmodelle
- InternLM-Serie (InternLM, InternLM2, InternLM2.5, InternLM3)
- Meta Llama-Serie (Llama 2, Llama 3)
- Andere Mainstream-Modelle: Mixtral-8x7B, ChatGLM, Qwen, Baichuan, Gemma, DeepSeek usw.
- Multimodale Unterstützung: Unterstützt visuelle Sprachmodelle (VLM), insbesondere Modelle, die auf der LLaVA-Architektur basieren
- Datenpipeline: Sorgfältig gestaltete Datenpipeline, die verschiedene Datenformat unterstützt
- Verschiedene Trainingsalgorithmen: Unterstützt QLoRA, LoRA, vollständige Parameter-Feinabstimmung und andere Trainingsstrategien
3. Vollständigkeit (Full-featured)
- Verschiedene Trainingsmodi:
- Kontinuierliches Vortraining
- Befehlsgesteuerte Feinabstimmung
- Agenten-Feinabstimmung
- Dialogfunktion: Unterstützt die Verwendung vordefinierter Vorlagen für die Konversation mit großen Modellen
- Nahtlose Integration: Ausgabemodelle können nahtlos in Deployment- und Service-Toolkits (LMDeploy) sowie in groß angelegte Evaluierungs-Toolkits (OpenCompass, VLMEvalKit) integriert werden
Unterstützte Modelle
XTuner unterstützt eine breite Palette von Modellfamilien, einschließlich, aber nicht beschränkt auf:
Modellserie | Spezifisches Modell | Merkmale |
---|---|---|
InternLM | InternLM, InternLM2, InternLM2.5, InternLM3 | Chinesisch optimiert, hervorragende Leistung |
Llama | Llama 2, Llama 3 | Meta Open-Source-Modell |
Qwen | Qwen 1.5 usw. | Alibaba Open-Source-Modell |
ChatGLM | ChatGLM3-6B usw. | Tsinghua University Open-Source-Modell |
Baichuan | Baichuan2 usw. | Baichuan Intelligence Open-Source-Modell |
Mixtral | Mixtral 8x7B | Mistral AI's Mixture-of-Experts-Modell |
Andere | Gemma, DeepSeek, MiniCPM usw. | Open-Source-Modelle verschiedener Unternehmen |
Multimodale Fähigkeiten
XTuner zeichnet sich im multimodalen Bereich aus, insbesondere im Bereich der visuellen Sprachmodelle:
- LLaVA-Architekturunterstützung: Vollständige Unterstützung für das Vortraining und die Feinabstimmung der LLaVA-v1.5-Architektur
- Hervorragende Leistung: Das LLaVA-InternLM2-20B-Modell bietet eine herausragende Leistung
- Verschiedene Kombinationen: Unterstützt verschiedene Kombinationen von visuellen Encodern und Sprachmodellen
- Neueste Veröffentlichungen:
- LLaVA-Llama-3-8B
- LLaVA-Llama-3-8B-v1.1
- LLaVA-Phi-3-mini
Installation und Verwendung
Umgebung vorbereiten
# Erstellen einer virtuellen Python 3.10-Umgebung
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
Installationsmethoden
Methode 1: Installation über pip
pip install -U xtuner
Methode 2: DeepSpeed integrieren
pip install -U 'xtuner[deepspeed]'
Methode 3: Installation aus dem Quellcode
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'
Schnellstart
1. Konfigurationsdatei vorbereiten
# Alle verfügbaren Konfigurationen anzeigen
xtuner list-cfg
# Konfigurationsdatei zum Anpassen kopieren
xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH}
2. Feinabstimmung starten
# Single-GPU-Feinabstimmung
xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
# Multi-GPU-Feinabstimmung
NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
3. Modellkonvertierung
# Konvertieren des PTH-Modells in das Hugging Face-Format
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}
4. Dialogtest
# Dialog mit dem feinabgestimmten Modell
xtuner chat ${NAME_OR_PATH_TO_LLM} --adapter ${NAME_OR_PATH_TO_ADAPTER}
Erweiterte Funktionen
1. Sequenzparallelität
- Unterstützt das Training extrem langer Sequenzen
- Effiziente und skalierbare Trainingsmethode
- Geeignet für Szenarien, in denen lange Texte verarbeitet werden müssen
2. DPO/ORPO-Training
- Unterstützt Direct Preference Optimization (DPO)
- Unterstützt Odds Ratio Preference Optimization (ORPO)
- Unterstützt das Training von Reward-Modellen
- Unterstützt gepackte Daten und Sequenzparallelität
3. Optimierung des mathematischen Denkens
- Unterstützt OREAL (eine neue Methode des Reinforcement Learning)
- Speziell für mathematische Denkaufgaben optimiert
Leistung
Trainingsgeschwindigkeit
- Llama2 7B: Bietet eine hervorragende Trainingsgeschwindigkeit auf einer einzelnen GPU
- Llama2 70B: Unterstützt paralleles Multi-GPU-Training mit hervorragender Geschwindigkeit
- DeepSeek V2: 2-fache Steigerung der Trainingsgeschwindigkeit im Vergleich zur vorherigen Version
Speichereffizienz
- Geringer Speicherbedarf: 20 GB GPU-Speicher reichen für die QLoRA-Feinabstimmung aus
- Vollständige Parameter-Feinabstimmung: 4x80 GB GPU können für die vollständige Parameter-Feinabstimmung verwendet werden
- Speicheroptimierung: Deutliche Reduzierung des Speicherverbrauchs durch verschiedene Optimierungstechniken
Ökosystemintegration
XTuner ist ein wichtiger Bestandteil des InternLM-Ökosystems und eng in andere Tools integriert:
- LMDeploy: Toolkit für Modellbereitstellung und -service
- OpenCompass: Toolkit für groß angelegte Evaluierung
- VLMEvalKit: Toolkit zur Bewertung visueller Sprachmodelle
- Lagent: Agenten-Framework
- AgentLego: Multifunktionale Tool-API-Bibliothek
Anwendungsbereiche
1. Akademische Forschung
- Forschung zur Feinabstimmung großer Sprachmodelle
- Entwicklung multimodaler Modelle
- Validierung neuer Algorithmen
2. Industrielle Anwendungen
- Kundenspezifische Chatbots
- Entwicklung domänenspezifischer Modelle
- KI-Assistenten für Unternehmen
3. Aus- und Weiterbildung
- KI-Kursunterricht
- Aufbau von Experimentierumgebungen
- Kompetenztraining
Fazit
XTuner ist ein umfassendes und leistungsstarkes Toolkit für das Feinabstimmen großer Sprachmodelle. Es unterstützt nicht nur eine breite Palette von Modellen und Trainingsalgorithmen, sondern bietet auch eine vollständige Toolchain von der Datenvorbereitung bis zur Modellbereitstellung und bietet Benutzern eine Komplettlösung. Ob akademische Forschung oder industrielle Anwendung, XTuner kann die Anforderungen verschiedener Szenarien erfüllen und ist die ideale Wahl für die Feinabstimmung großer Sprachmodelle.