17 Punkte von GN⁺ 2024-03-08 | 1 Kommentare | Auf WhatsApp teilen
  • Open Source, das FSDP (Fully Sharded Data Parallel) und QLoRA (Quantization + Low-Rank Adaptation) kombiniert
  • Ermöglicht die effiziente Feinabstimmung eines 70B-Sprachmodells mit einem gewöhnlichen Desktop-PC und zwei Standard-Gaming-GPUs

Hintergrund

  • Obwohl der Leistungsunterschied zwischen Rechenzentrumshardware und Gaming-GPUs in Desktop-Computern nicht groß ist, ist der Preisunterschied enorm.
  • Gaming-GPUs haben wenig Speicher, weshalb das Trainieren großer Sprachmodelle schwierig ist.
  • Answer.AI wollte dieses Problem lösen und einen Weg finden, die besten Open-Source-Modelle mit günstigen Gaming-GPUs zu trainieren.

QLoRA: Größere Modelle auf einer einzelnen GPU trainieren

  • QLoRA ist eine Kombination aus Quantisierung und LoRA, die die Gewichte des Modells auf 4 Bit reduziert und so den GPU-Speicherverbrauch senkt.
  • LoRA umgeht Speicherbeschränkungen, indem nicht das gesamte große Sprachmodell trainiert wird, sondern kleine Adaptermatrizen hinzugefügt und trainiert werden.
  • QLoRA ermöglicht das Trainieren eines 65B-Modells auf einer 48GB-Karte, reicht aber immer noch nicht aus, um ein 70B-Modell auf einer 24GB-Gaming-GPU zu trainieren.

FSDP: Das Trainingsvolumen auf mehrere GPUs skalieren

  • FSDP (Fully Sharded Data Parallel) verteilt die Modellparameter auf mehrere GPUs, damit sie gleichzeitig genutzt werden können.
  • FSDP bringt die Vorteile von DDP (Distributed Data Parallel) auch auf große Modelle, die auf einer einzelnen GPU nicht Platz finden würden.
  • Ein nicht quantisiertes 70B-Modell (70 Milliarden Parameter) benötigt zum Beispiel 140GB RAM, da jeder Parameter mit 16 Bit, also 2 Byte, gespeichert wird. Selbst eine NVIDIA-H100-Karte (mit Kosten von etwa $40,000 pro Karte!) reicht dafür nicht aus. 80GB RAM sind nötig.
    • Mit FSDP lassen sich jedoch 4 H100-GPUs zu insgesamt 320GB RAM kombinieren. Und man spart $150000.

FSDP und QLoRA kombinieren

  • Answer.AI verkleinert das Modell mit QLoRA und verteilt es mit FSDP auf mehrere 24GB-Gaming-Karten, um effizientes Training zu ermöglichen.
  • Dadurch lässt sich ein 70B-Modell mit zwei gewöhnlichen Gaming-GPUs trainieren.
  • Ende 2023 wurde die Idee diskutiert, FSDP und QLoRA zu kombinieren, anschließend wurden die dafür nötigen Probleme gelöst.
  • Dabei kamen verschiedene Techniken und Bibliotheken in Kombination zum Einsatz.
    • Quantisierte Parameter werden in demselben Datentyp gespeichert wie der "Computation Type" des Modells.
    • Gradient Checkpointing: Statt den vollständigen Gradienten zu speichern, werden Aktivierungen an mehreren "Checkpoints" des gesamten Modells abgelegt und bei Bedarf Vorwärtsberechnungsschritte erneut ausgeführt, um die Gradienten neu zu berechnen.
    • CPU Offloading: Gewichte werden, wenn sie nicht verwendet werden, im CPU-RAM statt im GPU-Speicher abgelegt, wodurch der benötigte GPU-Speicher drastisch sinkt.
    • Flash Attention 2: berechnet Attention effizient mit speicheroptimierten Cuda-Kernels.
    • HQQ (Half-Quadratic Quantization) wurde entdeckt und mit FSDP integriert (50-mal schneller und genauer als GPTQ).

Verwendung von FSDP/QLoRA

  • Für FSDP werden zwei oder mehr GPUs benötigt. (Bei Runpod ist ein Dual-3090-System für $0.6 pro Stunde verfügbar.)
  • Installiere die neuesten Versionen von Transformers, PEFT, Bitsandbytes (und HQQ, falls du es verwendest), klone anschließend das Repository von Answer.AI und folge der README zur Ausführung.
  • Um Alpaca auf 2 Karten mit 24GB zu trainieren:
    python train.py --train_type qlora --dataset alpaca --batch_size 8 --gradient_accumulation_steps 2 --output_dir qlora_output --log_to wandb
  • Das Ganze ist noch in einer frühen Phase (Alpha/Preview).
  • Benchmark-Ergebnisse sollen in den nächsten Wochen ebenfalls veröffentlicht werden.

Meinung von GN⁺

  • Dieser Artikel dürfte für Menschen im Bereich KI und Machine Learning sehr interessant sein. Besonders bemerkenswert ist, dass hier ein neuer Weg gezeigt wird, große Sprachmodelle effizient zu trainieren.
  • Falls diese Technik erfolgreich breit eingesetzt wird, könnte sie die Kostenhürde in KI-Forschung und -Entwicklung erheblich senken. Das wäre auch eine große Chance für kleinere Labore oder einzelne Entwickler.
  • Damit dieser Ansatz tatsächlich breit übernommen wird, sind jedoch Stabilität und Benutzerfreundlichkeit wichtige Faktoren. Da sich das System noch in einem frühen Stadium befindet, muss es durch Tests und Feedback aus der Community verbessert werden.
  • Bei der Einführung neuer Technologien sollten immer Kompatibilität mit bestehenden Systemen, Leistung und Kosten berücksichtigt werden. Der Vorteil dieser Technik liegt in der besseren Zugänglichkeit für das Training großer Modelle, doch da sie sich noch in einem frühen Stadium befindet, kann es Nachteile bei Stabilität und Support geben.

1 Kommentare

 
GN⁺ 2024-03-08
Hacker-News-Kommentare
  • Der Artikel ist großartig, aber es ist schade, dass es so viele Gelegenheiten gab, das Wort „nibble“ zu verwenden, und alle verpasst wurden.

    • Der Kommentar drückt Bedauern darüber aus, dass das Wort „nibble“ trotz des interessanten Artikels nicht genutzt wurde.
  • Als Nutzer würde mich interessieren, wie lange es dauert, ein 70B-Modell mit einem System zu feinzujustieren, das 4-Bit-Gewichte verwendet, und ich fände eine Tabelle hilfreich, die etwa Modellgröße, Trainingsumfang, Trainingskosten und den zu erwartenden Qualitätsverlust dieser Technik zeigt.

    • Der Kommentar zeigt Interesse an den endgültigen Kosten des Fine-Tunings und fordert detaillierte Informationen wie Modellgröße und Trainingskosten.
  • Ich frage mich, ob sich eine (-1,0,1)-Kodierung anwenden lässt. Wenn ein solches Modell erscheint, würde ich gern wissen, ob answer.ai mit derselben Technik ein großes Modell mit zwei kleinen GPUs feinjustieren kann, und ich hätte gern eine Kosten-Nutzen-Analyse.

    • Es wird die Frage nach der technischen Anwendbarkeit einer neuen Kodierungsmethode sowie nach einer Kosten-Nutzen-Analyse gestellt.
  • Solche Forschung ist äußerst nützlich, weil sie Einzelpersonen in die Lage versetzt, auf dem LLM-Markt zu konkurrieren. Das ist großartige Arbeit und passt gut zu den Ideen aus „Zero to One“.

    • Der Kommentar bewertet die Forschung positiv, weil sie für Einzelpersonen nützlich ist und zur Lösung eines konkreten Problems beiträgt.
  • Es wurde nicht erwähnt, dass bei der NeurIPS Efficiency Challenge alle Spitzenplatzierungen QLoRA verwendet haben, was ein gutes Beispiel für die Bedeutung und Nützlichkeit von QLoRA ist.

    • Der Kommentar betont die Bedeutung und Nützlichkeit der QLoRA-Technik und erwähnt ihre Anerkennung im Wettbewerb.
  • Das ist der interessanteste und konstruktivste Ansatz, den ich bisher bei „Open-Source“-LLMs gesehen habe. Ich hoffe, dass auch die Wissenschaft dies zum Standard macht.

    • Der Kommentar bewertet den Ansatz für Open-Source-LLMs sehr positiv und wünscht sich, dass die Wissenschaft ihn als Standard übernimmt.
  • Ich wünschte, schnelles Training auf Metal wäre früher verfügbar geworden. Derzeit ist der Mac Studio für Inferenz großer Modelle deutlich günstiger und schnell genug, aber Trainingslösungen gibt es fast gar nicht.

    • Der Kommentar äußert die Hoffnung auf schnelles Training auf der Metal-Plattform und eine Einschätzung zur aktuellen Effizienz des Mac Studio.
  • Die Qualität und Klarheit des technischen Schreibens ist hervorragend.

    • Lob für die Qualität und Klarheit der technischen Dokumentation.
  • Ich frage mich, ob man LLM-(70B)-Gewichte mit meinen eigenen Daten neu trainieren kann.

    • Der Kommentar stellt die Frage, ob ein LLM mit eigenen Daten neu trainiert werden kann.
  • Für Menschen, die LLMs mit begrenztem Hardware-Budget feinjustieren, ist das ein bahnbrechender Durchbruch.

    • Der Kommentar bewertet diese Technik als großen Fortschritt für Nutzer mit begrenztem Hardware-Budget.
  • Ich frage mich, warum DeepSpeed statt FSDP gewählt wurde.

    • Der Kommentar äußert Neugier auf die Gründe für die Wahl zwischen FSDP und DeepSpeed.
  • Ich frage mich, ob es Werkzeuge gab, die zur Leistungsoptimierung verwendet wurden, als das Fine-Tuning des Modells möglich wurde.

    • Der Kommentar fragt nach den für das Performance-Tuning verwendeten Werkzeugen.
  • Ich frage mich, ob Sparsifizierung ausprobiert wurde; ich habe den Eindruck, dass damit Fine-Tuning mit weniger RAM möglich sein könnte.

    • Der Kommentar äußert eine Meinung zur Nutzung von Sparsifizierung und zur möglichen RAM-Einsparung dadurch.