Ein No-Code/Low-Code-Framework für die Feinabstimmung und Bereitstellung großer Sprachmodelle, das die einheitliche und effiziente Feinabstimmung von über 100 LLMs/VLMs unterstützt.
💡 LLaMA‑Factory Projekt – Eine detaillierte Erklärung
I. Projektübersicht
LLaMA‑Factory ist eine Open-Source-Plattform, die sich auf das Feinabstimmen, Trainieren und Bereitstellen von großen Sprachmodellen (LLM/VLM) konzentriert. Es wurde von Yaowei Zheng u.a. auf der ACL 2024 veröffentlicht und ist auf arXiv ([gitee.com][1]) verfügbar. Das Projekt zeichnet sich durch folgende Merkmale aus:
- Unterstützung für über 100+ Modelle: Darunter LLaMA, LLaVA, Mistral, Qwen, ChatGLM, Phi und andere gängige und neue Modelle.
- Zero-Code + Low-Code-Schnittstellen: CLI- und Web-UI-Modi (LLaMABoard), die gängige Trainingsprozesse abdecken und eine sehr geringe technische Einstiegshürde bieten.
- Integration verschiedener effizienter Feinabstimmungsmethoden: Unterstützung für LoRA, QLoRA (2/4/8 Bit), Freezing, 16-Bit-Full-Parameter, FlashAttention‑2, Unsloth, RoPE Scaling usw.
- Umfangreiche Optimierungsalgorithmen: GaLore, BAdam, DoRA, LongLoRA, LLaMA Pro, Mixture‑of‑Depths, LoRA+, LoftQ, PiSSA usw.
- Mehrere Trainingsmethoden: Vortraining, überwachtes Feintuning (SFT), Belohnungsmodellierung (RM), PPO/DPO/KTO/ORPO und andere Methoden des bestärkenden Lernens.
- Mehrere Experimentüberwachungstools: Unterstützung für LlamaBoard, TensorBoard, Wandb, MLflow, SwanLab usw.
- Kompatibilität mit Inferenz und Bereitstellung: Unterstützung für OpenAI API-ähnliche Bereitstellung, vLLM-basierte parallele Inferenz, Gradio UI und andere umfangreiche Inferenzoptionen.
II. Kernfunktionen und Highlights
1. Breite Modellunterstützung
Abdeckung von über hundert Modellen, einschließlich verschiedener Größen und Architekturen, von LLaMA und Phi bis hin zu Qwen2-VL, Gemma, DeepSeek usw.
2. Effiziente Feinabstimmungstechniken
- LoRA / QLoRA: Unterstützung für Low-Bit-Quantisierungs-Adaptive-Feinabstimmung; 4-Bit-LoRA ist schneller in der Inferenz und benötigt weniger VRAM als herkömmliche Methoden.
- Optimierte Operatoren: FlashAttention-2, Unsloth verbessern die Trainingsgeschwindigkeit und die VRAM-Auslastung.
- RoPE Scaling: Erweiterung der Kontextlängen-Fähigkeit.
3. Training und bestärkendes Lernen
Integration gängiger Trainingsprozesse: Vom Vortraining über SFT bis hin zum Training von Belohnungsmodellen und schließlich PPO/DPO-basiertem bestärkendem Lernen.
4. Visualisierte Überwachung
Echtzeit-Anzeige von Trainingsfortschritt, Metriken und Protokollen über Web UI (LLaMABoard), TensorBoard, Wandb usw.
5. Inferenz- und Bereitstellungsfähigkeiten
Unterstützung für den Export des feinabgestimmten Modells im OpenAI API-Format und Implementierung paralleler Inferenz (vLLM) oder Aufbau eines Gradio-Frontends.
III. Anwendungsablauf & Schnelleinstieg
Installation / Start
pip install llama-factory # Oder Installation durch Klonen von GitHub
CLI-Modus:
llama-factory train \ --model llama-13b \ --dataset mydata \ --finetuning_type lora \ ## Weitere Parameter siehe offizielle Dokumentation
Web UI-Modus:
CUDA_VISIBLE_DEVICES=0 python src/train_web.py
Starten Sie LLaMABoard, um Trainings-Hyperparameter zentral einzustellen.
Datenvorbereitung
Das Projekt enthält über 60 Datensätze (data-Verzeichnis) und unterstützt auch benutzerdefinierte JSON-Dateien, die zentral in dataset_info.json
verwaltet werden.
Überwachung und Bewertung
Während des Trainings werden TensorBoard- und Wandb-Anzeigen automatisch unterstützt; MLflow, SwanLab und andere Überwachungs-Backends können ebenfalls angebunden werden.
Inferenz und Bereitstellung
Nach dem Training kann über die CLI oder ein Export-Skript direkt ein Bereitstellungspaket generiert werden, das parallele Inferenz und Gradio-Anzeige unterstützt.
V. Zusammenfassung
LLaMA‑Factory ist ein funktionsreicher, einfach zu bedienender und technisch fortschrittlicher LLM-Feinabstimmungs-Framework. Egal, ob Sie Forscher oder Ingenieur sind, Sie können schnell eine große Anzahl von Open-Source-Modellen anpassen, trainieren und bereitstellen, ohne komplexen Code schreiben zu müssen. Es ist ein nützliches Werkzeug, um in den Bereich der LLM-Feinabstimmung einzusteigen.