Einführung | Installation | Erste Schritte | Dokumentation | Gemeinschaft | Lizenz | Zitiert Fackelmelodie
Wichtig
Update 25. September 2024: Torchtune unterstützt die Modelle Llama 3.2 11B Vision , Llama 3.2 3B und Llama 3.2 1B ! Probieren Sie sie aus, indem Sie unseren Installationsanweisungen hier folgen und dann eine der Textkonfigurationen hier oder die Visionkonfigurationen hier ausführen.
Torchtune ist eine PyTorch-Bibliothek zum einfachen Erstellen, Feinabstimmen und Experimentieren mit LLMs.
Torchtune bietet:
PyTorch-Implementierungen beliebter LLMs aus den Modellfamilien Llama, Gemma, Mistral, Phi und Qwen
Hackbare Trainingsrezepte für vollständige Feinabstimmung, LoRA, QLoRA, DPO, PPO, QAT, Wissensdestillation und mehr
Sofort einsatzbereite Speichereffizienz, Leistungsverbesserungen und Skalierung mit den neuesten PyTorch-APIs
YAML-Konfigurationen zum einfachen Konfigurieren von Trainings-, Bewertungs-, Quantisierungs- oder Inferenzrezepten
Integrierte Unterstützung für viele gängige Datensatzformate und Eingabeaufforderungsvorlagen
Torchtune unterstützt derzeit die folgenden Modelle.
Modell | Größen |
---|---|
Lama3.2-Vision | 11B [Modelle, Konfigurationen] |
Lama3.2 | 1B, 3B [Modelle, Konfigurationen] |
Lama3.1 | 8B, 70B, 405B [Modelle, Konfigurationen] |
Lama3 | 8B, 70B [Modelle, Konfigurationen] |
Lama2 | 7B, 13B, 70B [Modelle, Konfigurationen] |
Code-Lama2 | 7B, 13B, 70B [Modelle, Konfigurationen] |
Mistral | 7B [Modelle, Konfigurationen] |
Gemma | 2B, 7B [Modelle, Konfigurationen] |
Microsoft Phi3 | Mini [Modelle, Konfigurationen] |
Qwen2 | 0,5B, 1,5B, 7B [Modelle, Konfigurationen] |
Wir fügen ständig neue Modelle hinzu, aber Sie können gerne ein Problem melden, wenn Sie ein neues Modell in Torchtune sehen möchten.
Torchtune bietet die folgenden Feinabstimmungsrezepte für das Training auf einem oder mehreren Geräten.
Feinabstimmungsmethode | Geräte | Rezept | Beispielkonfiguration(en) |
---|---|---|---|
Volle Feinabstimmung | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B Einzelgerät Lama 3.1 70B verteilt |
LoRA-Feinabstimmung | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0,5B Einzelgerät Gemma 7B verteilt |
QLoRA-Feinabstimmung | 1-8 | lora_finetune_single_device lora_finetune_distributed | Phi3 Mini Einzelgerät Lama 3.1 405B verteilt |
DoRA/QDoRA-Feinabstimmung | 1-8 | lora_finetune_single_device lora_finetune_distributed | Llama3 8B QDoRA Einzelgerät Llama3 8B DoRA verteilt |
Quantisierungsbewusstes Training | 4-8 | qat_distributed | Lama3 8B QAT |
Direkte Präferenzoptimierung | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B Einzelgerät Llama2 7B verteilt |
Proximale Richtlinienoptimierung | 1 | ppo_full_finetune_single_device | Mistral 7B |
Wissensdestillation | 1 | Knowledge_destillation_single_device | Qwen2 1,5B -> 0,5B |
Die oben genannten Konfigurationen sind nur Beispiele, um Ihnen den Einstieg zu erleichtern. Wenn Sie oben ein Modell sehen, das hier nicht aufgeführt ist, unterstützen wir es wahrscheinlich trotzdem. Wenn Sie nicht sicher sind, ob etwas unterstützt wird, öffnen Sie bitte ein Issue im Repo.
Nachfolgend finden Sie ein Beispiel für den Speicherbedarf und die Trainingsgeschwindigkeit für verschiedene Llama 3.1-Modelle.
Notiz
Um den Vergleich zu erleichtern, werden alle unten aufgeführten Zahlen für die Stapelgröße 2 (ohne Gradientenakkumulation), einen auf Sequenzlänge 2048 gepackten Datensatz und aktivierte Brennerkompilierung bereitgestellt.
Wenn Sie daran interessiert sind, auf unterschiedlicher Hardware oder mit unterschiedlichen Modellen zu arbeiten, schauen Sie sich hier unsere Dokumentation zu Speicheroptimierungen an, um das richtige Setup für Sie zu finden.
Modell | Feinabstimmungsmethode | Lauffähig auf | Spitzenspeicher pro GPU | Tokens/Sek. * |
---|---|---|---|---|
Lama 3.1 8B | Volle Feinabstimmung | 1x 4090 | 18,9 GiB | 1650 |
Lama 3.1 8B | Volle Feinabstimmung | 1x A6000 | 37,4 GiB | 2579 |
Lama 3.1 8B | LoRA | 1x 4090 | 16,2 GiB | 3083 |
Lama 3.1 8B | LoRA | 1x A6000 | 30,3 GiB | 4699 |
Lama 3.1 8B | QLoRA | 1x 4090 | 7,4 GiB | 2413 |
Lama 3.1 70B | Volle Feinabstimmung | 8x A100 | 13,9 GiB ** | 1568 |
Lama 3.1 70B | LoRA | 8x A100 | 27,6 GiB | 3497 |
Lama 3.1 405B | QLoRA | 8x A100 | 44,8 GB | 653 |
*= Gemessen über eine vollständige Trainingsepoche
**= Verwendet CPU-Auslastung mit Fused-Optimierer
Torchtune wurde mit der neuesten stabilen PyTorch-Version sowie der Preview-Nightly-Version getestet. Torchtune nutzt Torchvision für die Feinabstimmung multimodaler LLMs und Torchao für die neuesten Quantisierungstechniken; Sie sollten diese ebenfalls installieren.
# Stabiles PyTorch, Torchvision, Torchao Stable Releasespip installieren, Torch Torchvision Torchao installieren Pip, installiere Torchtune
# PyTorch, Torchvision, Torchao Nightliespip installieren --pre --upgrade Torch Torchvision Torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # Vollständige Optionen sind cpu/cu118/cu121/cu124pip install --pre --upgrade Torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
Weitere Informationen, einschließlich der Installation von Torchtune aus dem Quellcode, finden Sie auch in unserer Installationsdokumentation.
Um zu bestätigen, dass das Paket korrekt installiert ist, können Sie den folgenden Befehl ausführen:
tune --help
Und sollte die folgende Ausgabe sehen:
Verwendung: tune [-h] {ls,cp,download,run,validate} ... Willkommen bei den Torchtune-CLI-Optionen: -h, --help zeigt diese Hilfemeldung an und beendet ...
Informationen zum Einstieg in Torchtune finden Sie in unserem ersten Finetune-Tutorial. Unser End-to-End-Workflow-Tutorial zeigt Ihnen, wie Sie ein Llama-Modell auswerten, quantisieren und Inferenzen ausführen. Der Rest dieses Abschnitts bietet einen kurzen Überblick über diese Schritte mit Llama3.1.
Befolgen Sie die Anweisungen im offiziellen meta-llama
-Repository, um sicherzustellen, dass Sie Zugriff auf die offiziellen Lama-Modellgewichte haben. Sobald Sie den Zugriff bestätigt haben, können Sie den folgenden Befehl ausführen, um die Gewichte auf Ihren lokalen Computer herunterzuladen. Dadurch werden auch das Tokenizer-Modell und eine Anleitung zur verantwortungsvollen Nutzung heruntergeladen.
Um Llama3.1 herunterzuladen, können Sie Folgendes ausführen:
Melodie herunterladen meta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --ignore-patterns "original/consolidated.00.pth" --hf-token
Tipp
Legen Sie Ihre Umgebungsvariable HF_TOKEN
fest oder übergeben Sie --hf-token
an den Befehl, um Ihren Zugriff zu validieren. Sie finden Ihren Token unter https://huggingface.co/settings/tokens
Mit dem folgenden Befehl können Sie Llama3.1 8B mit LoRA auf einer einzelnen GPU optimieren:
tune run lora_finetune_single_device --config llama3_1/8B_lora_single_device
Für verteiltes Training lässt sich tune CLI in Torchrun integrieren. So führen Sie eine vollständige Feinabstimmung von Llama3.1 8B auf zwei GPUs aus:
tune run --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
Tipp
Stellen Sie sicher, dass alle Torchrun-Befehle vor der Rezeptspezifikation platziert werden. Alle darauf folgenden CLI-Argumente überschreiben die Konfiguration und wirken sich nicht auf das verteilte Training aus.
Es gibt zwei Möglichkeiten, Konfigurationen zu ändern:
Konfigurationsüberschreibungen
Sie können Konfigurationsfelder direkt über die Befehlszeile überschreiben:
tune run lora_finetune_single_device --config llama2/7B_lora_single_device batch_size=8 enable_activation_checkpointing=True max_steps_per_epoch=128
Aktualisieren Sie eine lokale Kopie
Sie können die Konfiguration auch in Ihr lokales Verzeichnis kopieren und den Inhalt direkt ändern:
tune cp llama3_1/8B_full ./my_custom_config.yaml Kopiert nach ./my_custom_config.yaml
Anschließend können Sie Ihr benutzerdefiniertes Rezept ausführen, indem Sie den tune run
-Befehl an Ihre lokalen Dateien weiterleiten:
tune run full_finetune_distributed --config ./my_custom_config.yaml
Schauen Sie sich tune --help
für alle möglichen CLI-Befehle und -Optionen an. Weitere Informationen zur Verwendung und Aktualisierung von Konfigurationen finden Sie in unserem Konfigurations-Deep-Dive.
Torchtune unterstützt die Feinabstimmung einer Vielzahl verschiedener Datensätze, einschließlich Instruct-Style-, Chat-Style-, Präferenz-Datasets und mehr. Wenn Sie mehr darüber erfahren möchten, wie Sie diese Komponenten zur Feinabstimmung Ihres eigenen benutzerdefinierten Datensatzes anwenden können, sehen Sie sich bitte die bereitgestellten Links zusammen mit unseren API-Dokumenten an.
Torchtune konzentriert sich auf die Integration mit beliebten Tools und Bibliotheken aus dem Ökosystem. Dies sind nur einige Beispiele, weitere sind in der Entwicklung:
Hugging Face Hub für den Zugriff auf Modellgewichte
EleutherAIs LM Eval Harness zur Bewertung trainierter Modelle
Hugging Face-Datensätze für den Zugriff auf Trainings- und Bewertungsdatensätze
PyTorch FSDP2 für verteiltes Training
Torchao für D-Typen mit geringerer Präzision und Quantisierungstechniken nach dem Training
Gewichtungen und Verzerrungen zum Protokollieren von Metriken und Kontrollpunkten sowie zum Verfolgen des Trainingsfortschritts
Comet als weitere Option zum Loggen
ExecuTorch für Inferenz auf dem Gerät mithilfe fein abgestimmter Modelle
Bitsandbytes für Low-Memory-Optimierer für unsere Einzelgeräterezepte
PEFT für die weitere Feinabstimmung oder Inferenz mit Torchtune-Modellen im Hugging Face-Ökosystem
Wir schätzen unsere Community und die Beiträge unserer wunderbaren Benutzer sehr. In diesem Abschnitt werden wir einige dieser Beiträge hervorheben. Wenn auch Sie mithelfen möchten, lesen Sie bitte den Leitfaden „Beitrag leisten“.
@SalmanMohammadi für das Hinzufügen eines umfassenden End-to-End-Rezepts für die Feinabstimmung von Reinforcement Learning from Human Feedback (RLHF) mit PPO bis Torchtune
@fyabc für das Hinzufügen von Qwen2-Modellen, Tokenizer und Rezeptintegration zu Torchtune
@solitude-alive für das Hinzufügen des Gemma 2B-Modells zu Torchtune, einschließlich Rezeptänderungen, numerischer Validierung der Modelle und Rezeptkorrektheit
@yechenzhi für das Hinzufügen von Direct Preference Optimization (DPO) zu Torchtune, einschließlich Rezept und Konfiguration sowie Korrektheitsprüfungen
Der Llama2-Code in diesem Repository ist vom ursprünglichen Llama2-Code inspiriert.
Wir möchten EleutherAI, Hugging Face und Weights & Biases ein großes Lob dafür aussprechen, dass sie wunderbare Mitarbeiter sind und mit uns an einigen dieser Integrationen innerhalb von Torchtune gearbeitet haben.
Wir möchten auch einige großartige Bibliotheken und Tools aus dem Ökosystem würdigen:
gpt-fast für leistungsstarke LLM-Inferenztechniken, die wir standardmäßig übernommen haben
Lama-Rezepte zum Einstieg in die llama2-Community
bitsandbytes, um mehrere speicher- und leistungsbasierte Techniken in das PyTorch-Ökosystem einzuführen
@winglian und axolotl für frühes Feedback und Brainstorming zum Design und Funktionsumfang von Torchtune.
lit-gpt für die Weiterentwicklung der LLM-Finetuning-Community.
HF TRL, um die Belohnungsmodellierung für die PyTorch-Community zugänglicher zu machen.
Torchtune wird unter der BSD 3-Lizenz veröffentlicht. Möglicherweise haben Sie jedoch andere rechtliche Verpflichtungen, die Ihre Nutzung anderer Inhalte regeln, beispielsweise die Nutzungsbedingungen für Modelle Dritter.
Wenn Sie die Torchtune-Bibliothek nützlich finden, zitieren Sie sie bitte wie folgt in Ihrer Arbeit.
@software{torchtune, Titel = {torchtune: PyTorchs Feinabstimmungsbibliothek}, Autor = {torchtune-Betreuer und Mitwirkende}, URL = {https//github.com/pytorch/torchtune}, Lizenz = {BSD-3-Klausel}, Monat = April, Jahr = {2024}}