Skip to main content
Cet article vous aide à résoudre les blocages de l’entraînement lorsque vous utilisez W&B avec des frameworks d’entraînement distribué, afin que vos runs puissent démarrer et se terminer sans se bloquer. Il existe deux raisons fréquentes pour lesquelles l’entraînement se bloque lorsque vous utilisez W&B avec l’entraînement distribué :
  • Blocage au début de l’entraînement : le multiprocessing de W&B peut interférer avec celui des frameworks d’entraînement distribué.
  • Blocage à la fin de l’entraînement : le processus W&B ne détecte pas à quel moment il doit s’arrêter.

Corriger les blocages au démarrage

Si votre run se bloque au début de l’entraînement, la cause est généralement un conflit entre le multiprocessing de W&B et celui du framework d’entraînement distribué. Pour résoudre ce problème, activez W&B Service, activé par défaut dans le SDK W&B 0.13.0 et les versions ultérieures. Si vous utilisez une version antérieure, mettez à niveau votre SDK :
pip install --upgrade wandb
Pour les versions 0.12.5 à 0.12.x du SDK W&B, activez explicitement W&B Service :
def main():
    wandb.require("service")
    # reste de votre script
Pour W&B SDK 0.12.4 et les versions antérieures, définissez la variable d’environnement WANDB_START_METHOD :
export WANDB_START_METHOD=thread
Après avoir activé W&B Service (ou défini la méthode de démarrage dans les anciennes versions du SDK), votre run d’entraînement distribué démarre sans blocage.

Corriger le blocage en fin de run

Si votre run se bloque une fois l’entraînement terminé, W&B ne détecte pas que le run est terminé. Appelez wandb.finish() à la fin de votre script d’entraînement pour indiquer à W&B que le run est terminé :
wandb.finish()
Cet appel téléverse toutes les données et termine proprement le processus W&B. Pour plus d’informations, voir l’entraînement distribué.
Experiments Run Crashes