Effizientes Online-Lernen mit TRL und VLLM
In der Welt des maschinellen Lernens sind Effizienz und Geschwindigkeit entscheidend, insbesondere wenn es um das Training großer Sprachmodelle (LLMs) geht. Hugging Face hat kürzlich vLLM direkt in TRL integriert, um Ineffizienzen beim Training mit GRPO, einem Online-Lernalgorithmus, zu reduzieren. Diese Integration ermöglicht es, leistungsstarke Modelle effizienter zu trainieren und die Ressourcen besser zu nutzen.
Einführung
Die Kombination von TRL und vLLM bietet eine innovative Lösung für die Herausforderungen, die beim Training von LLMs auftreten. GRPO, das in der DeepSeekMath-Studie eingeführt wurde, ermöglicht es dem Modell, aus seinen eigenen Ausgaben zu lernen. Es generiert während des Trainings Antworten, erhält Feedback und nutzt dieses Feedback, um sich im Laufe der Zeit zu verbessern. Dies macht die Generierung zu einem kritischen Schritt im Trainingsprozess, der jedoch auch zu einem erheblichen Engpass führen kann.
Das Problem
Vor der Version 0.18.0 von TRL wurde vLLM nur im Servermodus unterstützt, was bedeutete, dass es als separater Prozess auf anderen GPUs als dem Training lief. Diese Konfiguration führte zu GPU-Ineffizienzen, da während der Generierung die Training GPUs untätig waren. Das „Ping-Pong“-Spiel zwischen Training und Generierung führte zu:
- Verschwendung von GPU-Zeit auf beiden Seiten
- Erhöhter Bedarf an zusätzlichen GPUs nur für die Inferenz
- Verringerter Gesamtdurchsatz und höhere Kosten
Die zentrale Frage war also: Können wir dieselben GPUs sowohl für das Training als auch für die Generierung nutzen, anstatt sie zu trennen?
Die Möglichkeit
Die Lösung bestand darin, vLLM nicht als eigenständigen Server zu betreiben, sondern es zusammen mit dem Training im selben verteilten Prozess zu betreiben. Dies ermöglicht eine gemeinsame Nutzung der GPUs und reduziert die Leerlaufzeiten erheblich. Mit der Einführung des PR #3394 von Hugging Face wurde diese Integration in den Trainingsprozess ermöglicht.
Was es ermöglicht
- Vereinheitlichte Ausführung: Durch die Einbettung von vLLM in dieselbe Prozessgruppe können sowohl Trainings- als auch Inferenzaufgaben die gleichen GPUs nutzen.
- Vermeidung von HTTP-Kommunikation: vLLM läuft inline mit der Trainingsschleife, was Überhead und Latenz vermeidet.
- Kompatibilität mit Torchrun: Funktioniert nahtlos mit torchrun, sodass es einfach ist, über Knoten hinweg zu skalieren.
- TP- und DP-Unterstützung: Kompatibel mit Tensor-Parallelismus und Daten-Parallelismus, was es für großangelegte Trainingsläufe geeignet macht.
- SPMD-Ausführungsmuster: Verwendet ein Single Program, Multiple Data (SPMD)-Modell, bei dem jede GPU ihre eigene Instanz der Engine synchron ausführt.
- Vereinfachte Bereitstellung: Es ist nicht mehr erforderlich, ein separates Serverskript zu warten.
- Erhöhter Durchsatz: Durch die Vermeidung von Leerlauf-GPUs und die Eliminierung der interprozesskommunikation wird das System schneller.
Implementierungsnotizen
Die Implementierung von vLLM erfolgt nun in-process, wodurch die Effizienz erheblich gesteigert wird. Der Trainer startet vLLM direkt im Trainingsprozess, was die Notwendigkeit eines separaten Servers überflüssig macht.
Leistungsanalyse
Um die Auswirkungen der Co-Location zu messen, wurden mehrere Experimente durchgeführt, die die traditionelle Servermode mit der neuen Co-Location-Mode verglichen. Die Ergebnisse zeigen, dass die Co-Location-Mode eine signifikante Verbesserung der Effizienz und des Durchsatzes bietet.
Herausforderungen und Lektionen
Bei der Skalierung des GRPO-Trainings mit co-located vLLM traten mehrere Herausforderungen auf, die jedoch wichtige Lektionen über Effizienz und Systemdesign beim Training großer Modelle lehrten. Zu den Herausforderungen gehörten Bugs im Tensor-Parallelismus und Probleme mit der Speichermanagement-Funktion von vLLM.
Fazit
Die Co-Location von vLLM mit GRPO-Training bietet signifikante Effizienzgewinne beim Training großer Sprachmodelle. Trotz der bestehenden Herausforderungen zeigt die Gesamtbilanz, dass co-located GRPO eine praktikable und skalierbare Lösung für das effiziente Training großer Modelle darstellt. Die Integration von Funktionen wie FSDP wird weiterhin angestrebt, um die Grenzen des Trainings großer Modelle zu erweitern.
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!