Capacitación conveniente de texto a texto para transformadores
pip install t2t-tunerRequiere Pytorch: siga las instrucciones de instalación de Pytorch o use un contenedor de Pytorch.
Basado en la maravillosa Biblioteca de Transformers de Huggingface. Probado en los modelos T5 y GPT. En teoría, debería funcionar con otros modelos que también admiten AutomodEfforseq2SEQLM o Automodelforcausallm.
El entrenador en esta biblioteca aquí es una interfaz de nivel superior para funcionar basado en el script run_translation.py de Huggingface para tareas de generación de texto a texto. Decidí que quería una interfaz más conveniente para la capacitación y la inferencia, junto con el acceso a cosas como el punto de control de gradiente y el modelo paralelo para adaptarse a modelos más grandes, estos ya están en la biblioteca Huggingface pero no están expuestas en el guión. También agregué algunas características que quería (ajuste de inmediato, resumen del modelo), la integré con el entrenamiento Autorregresivo LM y la envolví como una sola biblioteca que se puede instalar PIP.
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 )Para obtener más ejemplos concretos, consulte los cuadernos vinculados a continuación:
SEQ2SEQ Training
{ "translation" : { "s" : " TEXT " , "t" : " LABEL " }}TrainingArguments.source_id y TrainingArguments.target_id (predeterminado a s y t ).TrainingArguments.prefix .Entrenamiento Autorregresivo LM
Esta sección describirá cómo entrenar modelos de idiomas grandes (> 1 parámetros BIL) en configuraciones relativamente simples.
Algunas notas para las configuraciones informadas a continuación:
TrainerArguments.gradient_checkpointing ).trainer.freeze(embeddings=True) ).TrainingArguments.gradient_accumulation_steps ) para recuperar un tamaño de lote más grande si es necesario. Los tamaños de lotes informados son sin acumulación de gradiente.Algunas configuraciones de GPT que se probaron para capacitar en una sola tarjeta RTX 3090 (24 GB) (sin Speedspeed):
| Modelo | Parámetros | Precisión | Optimizador | Entrada | Lotes por lotes | Otro |
|---|---|---|---|---|---|---|
| GPT2 | 1.5b | FP16 | Adafactor | 128 | 4 | Ninguno |
| GPT2 | 1.5b | FP16 | Adafactor | 512 | 1 | Ninguno |
| GPT2 | 1.5b | FP16 | Adafactor | 1024 | 4 | Gradcheckpoint |
| gpt-neo | 1.3b | FP16 | Adafactor | 1024 | 1 | Ninguno |
| gpt-neo | 1.3b | FP16 | Adafactor | 2048 | 4 | Gradcheckpoint |
| gpt-neo | 2.7b | FP16 | Adafactor | 2048 | 4 | GradCheckpoint, congeladas |
Algunas configuraciones T5 que se probaron para capacitar en una sola tarjeta RTX 3090 (24 GB) (sin Speedspeed):
| Modelo | Parámetros | Precisión | Optimizador | Seq2seqlen | Lotes por lotes | Otro |
|---|---|---|---|---|---|---|
| t5 | 3B | FP32 | Adafactor | 128-> 128 | 1 | Congelados |
| t5 | 3B | FP32 | Adafactor | 128-> 128 | 1 | Gradcheckpoint |
| t5 | 3B | FP32 | Adafactor | 128-> 128 | 128 | GradCheckpoint, congeladas |
| t5 | 3B | FP32 | Adafactor | 512-> 512 | 32 | GradCheckpoint, congeladas |
Paralelismo del modelo para modelos T5-11B
Usando esta biblioteca, también puede ajustar los puntos de control T5-11B con bastante facilidad (nodo único) con la siguiente configuración (sin Speed de Deepeed):

Tenga en cuenta que, dependiendo de su sistema, el tiempo de carga para el punto de control (46 GB) puede ser muy largo. Necesitará una amplia RAM CPU (al menos ~ 90 GB) para cargarlo con éxito.
ONNX RT funciona con algunos modelos (no T5, todavía) y puede proporcionar un pequeño impulso en la velocidad.
Instale ORT, luego configure 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.configurePaquete de construcción
python3 -m pip install --upgrade build twine
python3 -m build
python3 -m twine upload dist/ * Esta biblioteca se desarrolló como un proyecto personal para mi propio uso. No dude en tener la bifurcación o usarlo para sus propios fines también. No asumiré la responsabilidad de ningún contratiempo que ocurra como resultado del uso de esta biblioteca.
Nota para las tarjetas 3090 Fe, si sus fanáticos alcanzaron el 100%, significa que sus temperaturas VRAM son altas (> 100 grados C). El entrenamiento durante largas horas a estas temperaturas en teoría debería estar bien, pero si desea tranquilidad (como yo), puede reducir el límite de potencia incurla en un impacto menor en las velocidades de entrenamiento. Mientras tus fanáticos nunca alcancen el 100%, tus temperaturas VRAM deberían ser buenas. Por ejemplo, para reducir el límite de potencia a 300W (desde 350W):
sudo nvidia-smi -pl 300