Ulysses verteilt Millionen-Token-Kontexte auf mehrere GPUs
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



