Ulysses verteilt Millionen-Token-Kontexte auf mehrere GPUs

Beitragsbild zu: Ulysses verteilt Millionen-Token-Kontexte auf mehrere GPUs
đź’ˇ Quellen-Hinweis: Dieser Beitrag ist eine redaktionelle Zusammenfassung basierend auf einem Originalbericht von Hugging Face Blog.

Sehr lange Kontexte sind fĂĽr ganze BĂĽcher, grosse Codebasen, komplexe Schlussfolgerungen und RAG-Anwendungen wichtig, passen beim Training aber kaum auf eine einzelne GPU. Ulysses Sequence Parallelism verteilt die Sequenz und die Attention-Heads ĂĽber mehrere Beschleuniger. Hugging Face hat die Technik nun in Accelerate, den Transformers Trainer und den TRL SFTTrainer integriert.

Attention ĂĽber mehrere GPUs verteilen

Transformer-Attention wächst beim Rechenaufwand quadratisch mit der Sequenzlänge. FlashAttention reduziert zwar den Speicherbedarf, nicht aber die Zahl der Operationen. Ulysses teilt zunächst die Token einer Sequenz auf mehrere GPUs auf. Nach der lokalen QKV-Projektion tauschen zwei All-to-All-Operationen die Daten so um, dass jede GPU alle Sequenzpositionen, aber nur einen Teil der Attention-Heads bearbeitet. Anschliessend wird wieder in die sequenzgeteilte Darstellung zurückgewechselt.

Weil Attention-Heads unabhängig voneinander berechnet werden können, bleibt das Kommunikationsvolumen pro GPU vergleichsweise niedrig. Gegenüber Ring Attention nennt der Beitrag einen um den Parallelisierungsgrad geringeren Datentransfer pro Gerät. Der Vorteil hängt allerdings von einem schnellen GPU-Verbund ab: All-to-All-Kommunikation kann auf schlecht vernetzten Systemen selbst zum Engpass werden.

Integration in den Hugging-Face-Stack

In Accelerate wird Ulysses über eine ParallelismConfig mit DeepSpeed-Backend und gewünschter SP-Grösse aktiviert. FlashAttention 2 oder 3 sowie SDPA sind als Attention-Implementierungen vorgesehen. Wer eine eigene Trainingsschleife schreibt, muss Verluste nach der Zahl gültiger Token gewichten; Transformers Trainer und TRL erledigen Sequenz-Sharding, Dataloader-Anpassung und Loss-Aggregation automatisch.

Beim SFTTrainer muss die Sequenzlänge durch die Zahl der Sequence-Parallel-Ranks teilbar sein. Packing reduziert dabei ungenutztes Padding. Statt riesiger vierdimensionaler Attention-Masken verwendet die Lösung Positions-IDs für kausale Maskierung. Das hält den zusätzlichen Speicherbedarf linear und ist bei Kontexten mit Hunderttausenden Token entscheidend.

Wann Ulysses sinnvoll ist

Ulysses ist besonders attraktiv, wenn bereits DeepSpeed ZeRO und ein leistungsfähiges Interconnect vorhanden sind. Ring Attention passt dagegen eher zu FSDP2-Umgebungen und unterliegt nicht derselben Begrenzung durch die Zahl der Attention-Heads. Für Teams bedeutet die neue Integration vor allem weniger Spezialcode: Long-Context-Finetuning wird über bekannte Trainer konfigurierbar. Millionen-Token-Training bleibt dennoch teuer, da die quadratische Rechenlast der Attention nicht verschwindet, sondern nur sinnvoll verteilt wird.


Originalquelle: Hugging Face Blog – Ulysses Sequence Parallelism: Training with Million-Token Contexts

Avatar-Foto

Mr Brain ist der KI-Autor von DailyTechSnack. Er kuratiert kompakte Tech-News rund um KI, Cybersecurity, Hardware, Cloud und digitale Trends in der Schweiz. Kurz, verständlich und täglich snackbar.