Bequemes Text-zu-Text-Training für Transformatoren
pip install t2t-tunerBenötigt Pytorch: Befolgen Sie entweder die Anweisungen zur Installation von Pytorch oder verwenden Sie einen Pytorch -Container.
Basierend auf der wunderbaren Bibliothek von Suggingface -Transformers. Auf T5- und GPT -Modelle getestet. Theoretisch sollte es mit anderen Modellen funktionieren, die auch Automodelforseq2seqlm oder AutomodelforcausAllm unterstützen.
Der Trainer in dieser Bibliothek ist hier eine Schnittstelle auf höherer Ebene, die auf der Basis von Huggingface's Run_translation.py-Skript für Text-to-Text-Erzeugungsaufgaben arbeitet. Ich entschied, dass ich eine bequemere Schnittstelle für das Training und die Inferenz sowie den Zugriff auf Dinge wie Gradientenprüfung und Modell parallel für größere Modelle finden möchte. Diese befinden sich bereits in der Huggingface -Bibliothek, aber nicht im Skript. Ich habe auch einige Funktionen hinzugefügt, die ich gewünscht habe (sofortiges Tuning, Modellzusammenfassung), es in das autoregressive LM -Training integriert und als einzelne Bibliothek eingewickelt wurde, die PIP installiert werden kann.
import t2t
trainer_arguments = t2t . TrainerArguments ( model_name_or_path = "t5-small" ,
train_file = YOUR_DATASET )
trainer = t2t . Trainer ( arguments = trainer_arguments )
# train without validation
trainer . train ( valid = False )Weitere konkrete Beispiele finden Sie in den unten verlinkten Notizbüchern:
SEQ2SEQ Training
{ "translation" : { "s" : " TEXT " , "t" : " LABEL " }}TrainingArguments.source_id und TrainingArguments.target_id (Standardeinstellungen zu s und t ).TrainingArguments.prefix vorzubereiten.Autoregressives LM -Training
In diesem Abschnitt wird beschrieben, wie große Sprachmodelle (> 1 BIL -Parameter) bei relativ einfachen Setups trainiert werden.
Einige Hinweise für die unten angegebenen Konfigurationen:
TrainerArguments.gradient_checkpointing ).trainer.freeze(embeddings=True) .TrainingArguments.gradient_accumulation_steps ) verwenden, um bei Bedarf eine größere Chargengröße auszugleichen. Die angegebenen Chargengrößen sind ohne Gradientenakkumulation.Einige GPT -Konfigurationen, die getestet wurden, um auf einer einzelnen RTX 3090 (24 GB) -Karte (ohne Deepspeed) zu trainieren:
| Modell | Parameter | Präzision | Optimierer | Inputlen | Batchsize | Andere |
|---|---|---|---|---|---|---|
| gpt2 | 1,5b | FP16 | Adafaktor | 128 | 4 | Keiner |
| gpt2 | 1,5b | FP16 | Adafaktor | 512 | 1 | Keiner |
| gpt2 | 1,5b | FP16 | Adafaktor | 1024 | 4 | GradCheckpoint |
| gpt-neo | 1.3b | FP16 | Adafaktor | 1024 | 1 | Keiner |
| gpt-neo | 1.3b | FP16 | Adafaktor | 2048 | 4 | GradCheckpoint |
| gpt-neo | 2.7b | FP16 | Adafaktor | 2048 | 4 | GradCheckpoint, Freezeembeds |
Einige T5 -Konfigurationen, die getestet wurden, um auf einer einzelnen RTX 3090 (24 GB) -Karte (ohne Deepspeed) zu trainieren:
| Modell | Parameter | Präzision | Optimierer | Seq2seqlen | Batchsize | Andere |
|---|---|---|---|---|---|---|
| T5 | 3b | FP32 | Adafaktor | 128-> 128 | 1 | Freezeembeds |
| T5 | 3b | FP32 | Adafaktor | 128-> 128 | 1 | GradCheckpoint |
| T5 | 3b | FP32 | Adafaktor | 128-> 128 | 128 | GradCheckpoint, Freezeembeds |
| T5 | 3b | FP32 | Adafaktor | 512-> 512 | 32 | GradCheckpoint, Freezeembeds |
Modellparallelität für T5-11b-Modelle
Mit dieser Bibliothek können Sie auch die T5-11B-Checkpoints (einzelner Knoten) mit den folgenden Einstellungen (ohne Deepspeed) auch fein abstellen:

Beachten Sie, dass abhängig von Ihrem System die Ladezeit für den Checkpoint (46 GB) sehr lang sein kann. Sie benötigen ausreichend CPU -RAM (mindestens ~ 90 GB), um ihn erfolgreich zu laden.
Onnx RT arbeitet mit einigen Modellen (noch nicht T5) zusammen und kann einen kleinen Geschwindigkeitsschub erzielen.
Installieren Sie ORT und setzen Sie dann TrainingArguments.torch_ort=True
pip install torch-ort -f https://onnxruntimepackages.z14.web.core.windows.net/onnxruntime_stable_torch190.cu111.html
python -m torch_ort.configureGebäudepaket
python3 -m pip install --upgrade build twine
python3 -m build
python3 -m twine upload dist/ * Diese Bibliothek wurde als persönliches Projekt für meinen eigenen Gebrauch entwickelt. Bitte zögern Sie nicht, es auch für Ihre eigenen Zwecke zu verwenden. Ich werde keine Verantwortung für Pannen übernehmen, die aufgrund der Verwendung dieser Bibliothek auftreten.
Hinweis für 3090 Fe -Karten, wenn Ihre Fans 100%treffen, bedeutet dies, dass Ihre VRAM -Temperaturen hoch sind (> 100 ° C). Das theoretisch lange Training für lange Stunden bei diesen Temperaturen sollte in Ordnung sein. Wenn Sie jedoch (wie ich) beruhigt werden möchten, können Sie die Leistungsgrenze senken, die zu geringfügigen Auswirkungen auf die Trainingsgeschwindigkeiten sind. Solange Ihre Fans nie 100%treffen, sollten Ihre VRAM -Temperaturen gut sein. Zum Beispiel um die Leistungsgrenze auf 300 W (ab 350 W) zu senken:
sudo nvidia-smi -pl 300