Passer au contenu principal
Hugging Face Accelerate est une bibliothèque qui permet d’exécuter le même code PyTorch sur n’importe quelle configuration distribuée, afin de simplifier l’entraînement des modèles et l’inférence à grande échelle. Accelerate inclut un suivi W&B, que nous expliquons comment utiliser ci-dessous. Vous pouvez aussi en savoir plus sur les suivis Accelerate dans Hugging Face.

Commencez à journaliser avec Accelerate

Pour démarrer avec Accelerate et W&B, vous pouvez suivre le pseudocode ci-dessous :
from accelerate import Accelerator

# Indiquer à l'objet Accelerator de journaliser avec wandb
accelerator = Accelerator(log_with="wandb")

# Initialiser votre run wandb en transmettant les paramètres wandb et les informations de configuration
accelerator.init_trackers(
    project_name="my_project", 
    config={"dropout": 0.1, "learning_rate": 1e-2}
    init_kwargs={"wandb": {"entity": "my-wandb-team"}}
    )

...

# Journaliser dans wandb en appelant `accelerator.log`, `step` est facultatif
accelerator.log({"train_loss": 1.12, "valid_loss": 0.8}, step=global_step)


# S'assurer que le suivi wandb se termine correctement
accelerator.end_training()
Plus précisément, vous devez :
  1. Passer log_with="wandb" lors de l’initialisation de la classe Accelerator
  2. Appeler la méthode init_trackers et lui transmettre :
  • un nom de projet via project_name
  • tous les paramètres que vous souhaitez passer à wandb.init() via un dict imbriqué dans init_kwargs
  • toute autre information de configuration de l’expérience que vous souhaitez journaliser dans votre run wandb, via config
  1. Utiliser la méthode .log pour journaliser dans Weights & Biases ; l’argument step est facultatif
  2. Appeler .end_training une fois l’entraînement terminé

Accéder à l’outil de suivi W&B

Pour accéder à l’outil de suivi W&B, utilisez la méthode Accelerator.get_tracker(). Passez la chaîne correspondant à l’attribut .name d’un outil de suivi ; la méthode renvoie alors cet outil de suivi sur le processus main.
wandb_tracker = accelerator.get_tracker("wandb")

Vous pouvez ensuite interagir normalement avec l’objet run de wandb :
wandb_tracker.log_artifact(some_artifact_to_log)
Les suivis intégrés à Accelerate s’exécutent automatiquement sur le bon processus. Ainsi, si un suivi ne doit être exécuté que sur le processus principal, il le sera automatiquement.Si vous souhaitez vraiment supprimer complètement l’encapsulation d’Accelerate, vous pouvez obtenir le même résultat avec :
wandb_tracker = accelerator.get_tracker("wandb", unwrap=True)
with accelerator.on_main_process:
    wandb_tracker.log_artifact(some_artifact_to_log)

Articles sur Accelerate

Vous trouverez ci-dessous un article sur Accelerate susceptible de vous intéresser