Vue d'ensemble

Hugging Face Transformers 4.10, publie le 21 juillet 2021, ameliore le Trainer et introduit le support de la quantification pour reduire la taille des modeles.

Fonctionnalites principales

Ameliorations du Trainer

Le Trainer gagne de nouvelles options de rappel (callbacks), un meilleur logging et le support natif de l'entrainement avec precision mixte via fp16.

python
from transformers import Trainer, TrainingArguments

# Configuration du Trainer avec precision mixte
args = TrainingArguments(
    output_dir='./resultats',
    num_train_epochs=3,
    per_device_train_batch_size=16,
    fp16=True,  # precision mixte automatique
    logging_steps=100,
    evaluation_strategy='epoch',
)

# trainer = Trainer(
#     model=model,
#     args=args,
#     train_dataset=train_ds,
#     eval_dataset=eval_ds,
# )
# trainer.train()

Quantification

Le support de la quantification dynamique permet de reduire la taille des modeles de 2 a 4 fois avec une perte de precision minimale, facilitant le deploiement sur des appareils a ressources limitees.

python
from transformers import AutoModelForSequenceClassification
import torch

# Charger un modele
model = AutoModelForSequenceClassification.from_pretrained(
    'distilbert-base-uncased'
)

# Quantification dynamique
quantized = torch.quantization.quantize_dynamic(
    model, {torch.nn.Linear}, dtype=torch.qint8
)

# Comparaison des tailles
import os
torch.save(model.state_dict(), '/tmp/original.pt')
torch.save(quantized.state_dict(), '/tmp/quantized.pt')
print(f'Original  : {os.path.getsize("/tmp/original.pt") / 1e6:.1f} Mo')
print(f'Quantifie : {os.path.getsize("/tmp/quantized.pt") / 1e6:.1f} Mo')

Sources