Skip to main content
Si vous voyez Cuda out of memory lors d’un sweep, refactorisez votre code pour utiliser une exécution par processus. Réécrivez votre code sous forme de script Python et lancez l’agent de sweep depuis la CLI au lieu du SDK Python.
  1. Ajoutez votre logique d’entraînement à un script Python (par exemple, train.py) :
    if __name__ == "__main__":
        train()
    
  2. Indiquez le script dans votre configuration YAML de sweep :
    program: train.py
    method: bayes
    metric:
      name: validation_loss
      goal: maximize
    parameters:
      learning_rate:
        min: 0.0001
        max: 0.1
      optimizer:
        values: ["adam", "sgd"]
    
  3. Initialisez le sweep avec la CLI :
    wandb sweep config.yaml
    
  4. Démarrez l’agent de sweep avec la CLI. Remplacez [SWEEP-ID] par l’ID renvoyé à l’étape précédente :
    wandb agent [SWEEP-ID]
    
L’agent via la CLI (wandb agent) exécute chaque run dans un processus distinct avec sa propre allocation mémoire, ce qui évite l’accumulation de mémoire CUDA entre les runs. Le SDK Python (wandb.agent) n’offre pas cette isolation des processus. Pour plus d’informations, voir dépannage de Sweeps.
Sweeps Plantages de runs