Transformers documentation

torch.compile pour l'entraînement

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

torch.compile pour l'entraînement

torch.compile compile le code PyTorch en noyaux fusionnés pour accélérer son exécution. Pour l’entraînement, il trace à la fois le passage avant et le passage arrière, puis les compile en noyaux optimisés, réduisant ainsi le surcoût lié au lancement individuel des opérateurs et fusionnant les opérations afin de diminuer l’utilisation de la bande passante mémoire.

Définissez torch_compile=True dans TrainingArguments pour l’activer. L’entraînement compile à la fois le passage avant et le passage arrière, contrairement à l’inférence qui ne compile que le passage avant. La compilation a lieu à la première étape d’entraînement, il faut donc s’attendre à ce qu’elle soit nettement plus lente que les étapes suivantes.

from transformers import TrainingArguments

args = TrainingArguments(
    ...,
    torch_compile=True,
    torch_compile_backend="inductor",
    torch_compile_mode="reduce-overhead",
)

Backend

Lorsqu’aucun backend n’est spécifié, TrainingArguments en sélectionne un en fonction de votre matériel. Sur la plupart des CPU et GPU, la valeur par défaut est inductor, qui compile vers des noyaux Triton via AOTAutograd et convient à la plupart des charges de travail d’entraînement. Sur Intel Gaudi (HPU), la valeur par défaut est hpu_backend. Sur AWS Trainium et Inferentia (Neuron), la valeur par défaut est neuron.

Utilisez cudagraphs pour des entrées de forme fixe.

Mode de compilation

Utilisez le tableau ci-dessous pour vous aider à choisir un mode torch.compile.

modedescription
defaultcompilation équilibrée entre le temps de compilation et le temps d'exécution
reduce-overheadréduit les surcoûts Python/CPU à l’aide de graphes CUDA, au prix d’une consommation mémoire supplémentaire
max-autotuneeffectue des benchmarks de plusieurs implémentations de noyaux à la compilation et sélectionne la plus rapide (compilation plus longue)
max-autotune-no-cudagraphsidentique à max-autotune mais sans graphes CUDA

Étapes suivantes

Update on GitHub