FineTuningLLMs ist ein GitHub-Repository des Autors dvgodoy, das auf seinem Buch A Hands-On Guide to Fine-Tuning LLMs with PyTorch and Hugging Face basiert. Dieses Repository bietet Entwicklern einen praktischen und systematischen Leitfaden, der sich auf die effiziente Feinabstimmung von Large Language Models (LLMs) auf einer einzelnen Consumer-GPU konzentriert. Es wird erklärt, wie die Modellleistung mit Tools wie PyTorch, LoRA-Adaptern, Quantisierungstechniken und mehr in Verbindung mit dem Hugging Face-Ökosystem optimiert werden kann. Das Repository deckt den gesamten Prozess vom Laden des Modells bis zum Einsatz ab und ist für Praktiker und Forscher im Bereich des maschinellen Lernens geeignet. Anhand von Codebeispielen und einer ausführlichen Dokumentation können sich die Benutzer über Feinabstimmung, Einsatz und Fehlerbehebung informieren. Das Projekt wird als Open Source zur Verfügung gestellt, um den Beitrag der Gemeinschaft und das Lernen zu fördern.
Funktionsliste
- Bietet einen vollständigen LLM-Feinabstimmungsprozess, der die Vorverarbeitung der Daten, das Laden des Modells und die Optimierung der Parameter umfasst.
- Unterstützt die Verwendung von LoRA- und Quantisierungstechniken, um die Hardwareanforderungen für die Feinabstimmung einzelner GPUs zu reduzieren.
- Integration in das Hugging Face-Ökosystem, das Beispielkonfigurationen von vortrainierten Modellen und Tools bietet.
- Enthält einen Leistungsvergleich zwischen Flash Attention und PyTorch SDPA, um die Geschwindigkeit des Modelltrainings zu optimieren.
- Unterstützt die Konvertierung fein abgestimmter Modelle in das GGUF-Format zur einfachen lokalen Bereitstellung.
- Enthält Anleitungen für die Bereitstellung von Ollama und llama.cpp, um den Prozess der Online-Stellung von Modellen zu vereinfachen.
- Enthält eine Anleitung zur Fehlerbehebung, in der häufige Fehler und deren Lösungen aufgeführt sind.
Hilfe verwenden
Einbauverfahren
FineTuningLLMs ist ein GitHub-basiertes Code-Repository und die Benutzer müssen zunächst die erforderliche Entwicklungsumgebung installieren. Nachfolgend finden Sie die detaillierten Installations- und Konfigurationsschritte:
- Klon-Lager
Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus, um das Repository lokal zu klonen:git clone https://github.com/dvgodoy/FineTuningLLMs.git cd FineTuningLLMs
- Installieren der Python-Umgebung
Stellen Sie sicher, dass Python 3.8 oder höher auf Ihrem System installiert ist. Eine virtuelle Umgebung wird empfohlen, um Abhängigkeiten zu isolieren:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
- Installation von Abhängigkeiten
Das Repository bietet einerequirements.txt
Datei, die die notwendigen Python-Bibliotheken enthält (z.B. PyTorch, Hugging Face Transformers, etc.). Führen Sie den folgenden Befehl aus, um sie zu installieren:pip install -r requirements.txt
- Einbau von optionalen Werkzeugen
- Wenn Sie das Modell einsetzen wollen, installieren Sie Ollama oder llama.cpp. Laut der offiziellen Dokumentation kann Ollama mit dem folgenden Befehl installiert werden:
curl https://ollama.ai/install.sh | sh
- Wenn Sie das GGUF-Formatmodell verwenden, müssen Sie llama.cpp installieren und die GitHub-Seite lesen, um die Konfiguration abzuschließen.
- Wenn Sie das Modell einsetzen wollen, installieren Sie Ollama oder llama.cpp. Laut der offiziellen Dokumentation kann Ollama mit dem folgenden Befehl installiert werden:
- Überprüfung der Umgebung
Führen Sie das Beispielskript aus dem Repository austest_environment.py
(falls vorhanden), um sicherzustellen, dass die Abhängigkeiten korrekt installiert sind:python test_environment.py
Hauptfunktionen
1. die Vorverarbeitung der Daten
FineTuningLLMs bietet Datenformatierungstools, die den Nutzern helfen, Trainingsdatensätze für die Feinabstimmung vorzubereiten. Die Benutzer müssen Datensätze im JSON- oder CSV-Format vorbereiten, die Eingabetext und Zielausgabe enthalten. Das Repository von data_preprocessing.py
Für die Bereinigung und Formatierung der Daten stehen Skripte (Beispieldateien) zur Verfügung. Befehl ausführen:
python data_preprocessing.py --input input.json --output formatted_data.json
Vergewissern Sie sich, dass die Eingabedaten den Datensatzspezifikationen von Hugging Face entsprechen; die Felder umfassen in der Regel text
im Gesang antworten label
.
2. die Feinabstimmung des Modells
Die Kernfunktion des Repositorys ist die Feinabstimmung von Modellen auf einem einzigen Grafikprozessor unter Verwendung von LoRA- und Quantisierungsverfahren. Die Nutzer können aus den von Hugging Face bereitgestellten vortrainierten Modellen (z. B. LLaMA oder Mistral) wählen. Die Konfiguration von LoRA-Parametern (z. B. Rang- und Alpha-Werte) in der config/lora_config.yaml
Datei abgeschlossen ist. Beispiel Konfiguration:
lora:
rank: 8
alpha: 16
dropout: 0.1
Führen Sie das Feinabstimmungsskript aus:
python train.py --model_name llama-2-7b --dataset formatted_data.json --output_dir ./finetuned_model
Das Skript lädt das Modell, wendet den LoRA-Adapter an und beginnt mit dem Training. Quantisierungsoptionen (z. B. 8-Bit-Ganzzahlen) können über Kommandozeilenargumente aktiviert werden:
python train.py --quantization 8bit
3. die Optimierung der Leistung
Das Repository unterstützt sowohl Flash Attention als auch PyTorch SDPA Aufmerksamkeitsmechanismen. Benutzer können mehr über diese Mechanismen in der train.py
den Nagel auf den Kopf treffen --attention flash
vielleicht --attention sdpa
Wählen Sie den Mechanismus aus. flash Attention ist in der Regel schneller, erfordert aber eine höhere Hardwarekompatibilität. Führen Sie den folgenden Befehl aus, um den Leistungsunterschied zu sehen:
python benchmark_attention.py --model_name llama-2-7b
Das Skript gibt Daten zur Trainingsgeschwindigkeit und zum Speicherverbrauch aus, so dass der Benutzer leicht eine geeignete Konfiguration auswählen kann.
4. modellhafter Einsatz
Das feinabgestimmte Modell kann in das GGUF-Format konvertiert werden, um lokale Schlussfolgerungen zu ziehen. Führen Sie das Konvertierungsskript aus:
python convert_to_gguf.py --model_path ./finetuned_model --output_path model.gguf
Verwenden Sie Ollama zur Bereitstellung des Modells:
ollama serve --model model.gguf
Die Benutzer können über die HTTP-API oder die Befehlszeile mit dem Modell interagieren:
curl http://localhost:11434/api/generate -d '{"model": "model.gguf", "prompt": "你好,世界!"}'
5. die Fehlersuche
Das Repository enthält eine troubleshooting.md
die häufige Probleme wie Speicherüberläufe oder Fehler beim Laden von Modellen auflistet. Benutzer können sich auf diese Datei beziehen, um Fehler zu beheben. Wenn beispielsweise nicht genügend CUDA-Speicher zur Verfügung steht, sollten Sie versuchen, die Stapelgröße zu verringern:
python train.py --batch_size 4
Featured Function Bedienung
LoRA-Feinabstimmung
LoRA (Low-Rank Adaptation) ist die Kerntechnologie des Repository, die es den Nutzern ermöglicht, nur einige der Parameter des Modells zu aktualisieren, was den Rechenaufwand erheblich reduziert. Die Nutzer müssen die Parameter des Modells in der config/lora_config.yaml
Legen Sie den Rang (Rank) und den Skalierungsfaktor (Alpha) in den Feldern Beim Ausführen der Feinabstimmung wird der LoRA-Adapter automatisch auf die Ebene Achtung des Modells angewendet. Der Benutzer kann den LoRA-Effekt mit dem folgenden Befehl überprüfen:
python evaluate.py --model_path ./finetuned_model --test_data test.json
Quantitative Unterstützung
Die Quantisierung konvertiert Modellgewichte von 16-Bit-Gleitkommazahlen in 8-Bit-Ganzzahlen und reduziert so den Speicherbedarf. Benutzer können die Quantisierung während des Trainings oder der Inferenz aktivieren:
python train.py --quantization 8bit
Die quantisierten Modelle laufen auch auf Consumer-GPUs wie dem NVIDIA RTX 3060 effizient.
lokaler Einsatz
Mit Ollama oder llama.cpp können Benutzer das Modell auf einem lokalen Gerät einsetzen. ollama bietet eine einfache Webschnittstelle für schnelle Tests. Führen Sie den folgenden Befehl aus, um die Weboberfläche zu starten:
ollama web
Die Nutzer können in ihren Browsern auf http://localhost:11434
Interagieren Sie mit dem Modell.
Anwendungsszenario
- Personalisierte Chatbots
Benutzer können das Modell feineinstellen, um bereichsspezifische Dialoge zu generieren, z. B. für den Kundendienst oder den technischen Support. Nach der Vorbereitung eines Datensatzes mit bereichsrelevanten Dialogen und der Ausführung des Feinabstimmungsskripts kann das Modell Antworten generieren, die für ein bestimmtes Szenario relevanter sind. - Optimierung der Texterstellung
Autoren oder Verfasser von Inhalten können das fein abgestimmte Modell verwenden, um Texte zu erstellen, die einem bestimmten Stil entsprechen, z. B. technische Dokumentationen oder kreative Texte. Durch die Anpassung der Trainingsdaten kann das Modell den gewünschten Textstil nachahmen. - Lokaler Einsatz von Modellen
Unternehmen und Entwickler können fein abgestimmte Modelle auf lokalen Servern zur Offline-Inferenz bereitstellen. Die Unterstützung des GGUF-Formats und von Ollama ermöglicht die Ausführung von Modellen in ressourcenarmen Umgebungen. - Bildung und Forschung
Studenten und Forscher können das Repository nutzen, um LLM-Feinabstimmungstechniken zu erlernen. Codebeispiele und Dokumentationen sind für Anfänger geeignet, um die Implementierung von Quantisierung, LoRA und Aufmerksamkeitsmechanismen zu verstehen.
QA
- Sind FineTuningLLMs für Anfänger geeignet?
Ja, das Repository bietet detaillierte Codekommentare und Dokumentation für Anfänger mit grundlegenden Pythonkenntnissen und maschinellem Lernen. Die Benutzer müssen grundlegende PyTorch- und Hugging Face-Operationen verstehen. - Sie brauchen einen High-End-Grafikprozessor?
Nicht erforderlich. Das Warehouse konzentriert sich auf Single-GPU-Feinabstimmung, die auf Consumer-GPUs wie der RTX 3060 mit 12 GB RAM ausgeführt werden kann, wobei LoRA- und Quantisierungsverfahren die Hardwareanforderungen weiter reduzieren. - Wie wählt man das richtige Pre-Training-Modell?
Der Benutzer kann das Modell je nach den Anforderungen der Aufgabe auswählen. Hugging Face bietet LLaMA oder Mistral, die für die meisten NLP-Aufgaben geeignet sind. In der Repository-Dokumentation wird empfohlen, mit einem kleinen Modell (z. B. 7B Parameter) zu beginnen, um es zu testen. - Benötige ich zusätzliche Tools, um das Modell einzusetzen?
Ja, es wird empfohlen, Ollama oder llama.cpp für den Einsatz zu verwenden. Beide sind quelloffen und einfach zu installieren, siehe die Repositorysdeploy_guide.md
.