Axolotl - Leistungsstarkes Tool zur Nachbearbeitung von KI-Modellen
Projektübersicht
Axolotl ist ein Open-Source-Tool, das speziell entwickelt wurde, um die Nachbearbeitung verschiedener KI-Modelle zu vereinfachen. Nachbearbeitung bezieht sich auf alle Modifikationen oder zusätzliches Training, die an einem vortrainierten Modell vorgenommen werden, einschließlich vollständiger Modellfeinabstimmung, parameter-effizienter Feinabstimmung (wie LoRA und QLoRA), überwachtem Feinabstimmen (SFT), Anweisungsabstimmung und Ausrichtungstechniken. Das Tool unterstützt verschiedene Modellarchitekturen und Trainingskonfigurationen, sodass Benutzer problemlos mit diesen fortschrittlichen Trainingstechniken beginnen können.
Kernfunktionen
Modellunterstützung
- Vielfältige Modellarchitekturen: Unterstützt das Training verschiedener Hugging Face-Modelle, darunter LLaMA, Pythia, Falcon, MPT, Mistral, Mixtral und andere gängige große Sprachmodelle.
- Flexible Trainingsmethoden: Unterstützt Full Fine-tuning, LoRA, QLoRA, ReLoRA, GPTQ und andere Trainingsmethoden.
Konfigurationsmanagement
- YAML-Konfigurationsdateien: Verwendet einfache YAML-Dateien, die alle notwendigen Konfigurationen für die Datenvorverarbeitung, das Modelltraining/Feinabstimmung, die Modellinferenz oder -bewertung enthalten.
- CLI-Überschreibung: Unterstützt das Überschreiben von Einstellungen in der Konfigurationsdatei über Befehlszeilenparameter.
- Flexible Konfiguration: Ermöglicht die Anpassung verschiedener Trainingsparameter und Modelleinstellungen.
Datenverarbeitungskapazität
- Mehrformatige Datensätze: Unterstützt das Laden von lokalen, HuggingFace- und Cloud-Datensätzen (S3, Azure, GCP, OCI).
- Benutzerdefinierte Formate: Ermöglicht die Verwendung benutzerdefinierter Formate oder den direkten Import bereits tokenisierter Datensätze.
- Datensatzvorverarbeitung: Integrierte leistungsstarke Datenvorverarbeitungsfunktionen.
Leistungsoptimierung
- Fortschrittliche Optimierungstechniken: Integriert xformers, Flash Attention, Liger Kernel, Rope Scaling und Multi-Packing-Techniken.
- Multi-GPU-Unterstützung: Unterstützt Single-GPU- oder Multi-GPU-Training über FSDP oder DeepSpeed.
- Effizientes Training: Optimiert für NVIDIA-GPUs (Ampere oder neuer, unterstützt bf16 und Flash Attention) und AMD-GPUs.
Bereitstellung und Überwachung
- Cloud-fähig: Bietet Docker-Images und PyPI-Pakete, die auf Cloud-Plattformen und lokaler Hardware verwendet werden können.
- Ergebnisprotokollierung: Unterstützt das Protokollieren von Ergebnissen und Checkpoints in WandB, MLflow oder Comet.
- Überwachungsunterstützung: Integriert verschiedene Tools zur Verfolgung und Überwachung von Experimenten.
Technische Anforderungen
Hardwareanforderungen
- NVIDIA GPU (Ampere oder neuer, für bf16 und Flash Attention) oder AMD GPU
- Ausreichend GPU-Speicher für das Modelltraining
Softwareanforderungen
- Python 3.11
- PyTorch ≥2.4.1
- Zugehörige Abhängigkeitspakete
Installationsmethoden
Schnelle Installation
pip3 install -U packaging==23.2 setuptools==75.8.0 wheel ninja
pip3 install --no-build-isolation axolotl[flash-attn,deepspeed]
# Beispielkonfigurationsdateien herunterladen
axolotl fetch examples
axolotl fetch deepspeed_configs # Optional
Installation aus dem Quellcode
git clone https://github.com/axolotl-ai-cloud/axolotl.git
cd axolotl
pip3 install -U packaging setuptools wheel ninja
pip3 install --no-build-isolation -e '.[flash-attn,deepspeed]'
Docker-Methode
docker run --gpus '"all"' --rm -it axolotlai/axolotl:main-latest
Verwendung
Grundlegender Arbeitsablauf
Beispielkonfiguration abrufen:
axolotl fetch examples
Modell trainieren:
axolotl train examples/llama-3/lora-1b.yml
Konfiguration anpassen: Ändern Sie die Parameter in der YAML-Konfigurationsdatei nach Bedarf.
Konfigurationsdateistruktur
Axolotl verwendet YAML-Konfigurationsdateien, um den gesamten Trainingsprozess zu steuern, einschließlich:
- Modellauswahl und Parameter
- Datensatzkonfiguration und Vorverarbeitung
- Trainingshyperparameter
- Optimierereinstellungen
- Überwachung und Protokollierung
Unterstützte Modellkompatibilitätsmatrix
Modell |
fp16/fp32 |
LoRA |
QLoRA |
GPTQ |
Flash Attn |
xformers |
LLaMA |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
Mistral |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
Mixtral-MoE |
✅ |
✅ |
✅ |
❓ |
❓ |
❓ |
Pythia |
✅ |
✅ |
✅ |
❌ |
❌ |
❌ |
Falcon |
✅ |
✅ |
✅ |
❌ |
❌ |
❌ |
Qwen |
✅ |
✅ |
✅ |
❓ |
❓ |
❓ |
Gemma |
✅ |
✅ |
✅ |
❓ |
❓ |
✅ |
✅: Unterstützt ❌: Nicht unterstützt ❓: Nicht getestet
Anwendungsbereiche
Forschungsbereich
- Feinabstimmungsforschung für große Sprachmodelle
- Experimente mit parameter-effizienten Trainingsmethoden
- Modellausrichtung und Sicherheitsforschung
Industrielle Anwendung
- Unternehmensspezifische Modellanpassung
- Domänenspezifisches Modelltraining
- Optimierung von Produktfunktionsmodellen
Aus- und Weiterbildung
- KI/ML-Kursunterricht
- Entwicklung von Praxisprojekten
- Verbesserung der technischen Fähigkeiten
Projektvorteile
- Benutzerfreundlichkeit: Steuerung komplexer Trainingsprozesse durch einfache YAML-Konfigurationsdateien.
- Flexibilität: Unterstützt verschiedene Modellarchitekturen und Trainingsmethoden.
- Leistung: Integriert die neuesten Optimierungstechniken und bietet ein effizientes Trainingserlebnis.
- Skalierbarkeit: Unterstützt verschiedene Trainingsgrößen von Single-GPU bis Multi-Node.
- Open Source: Apache 2.0-Lizenz, vollständig Open Source und kostenlos nutzbar.