Passer au contenu principal
Le guide suivant explique comment configurer W&B Launch pour utiliser Docker sur une machine locale, à la fois comme environnement de l’agent Launch et comme ressource cible de la file d’attente. Utiliser Docker pour exécuter des jobs et comme environnement de l’agent Launch sur une même machine locale est particulièrement utile si votre infrastructure de calcul est installée sur une machine qui ne dispose pas d’un système de gestion de cluster (comme Kubernetes). Vous pouvez également utiliser des files d’attente Docker pour exécuter des charges de travail sur de puissantes stations de travail.
Cette configuration est courante pour les utilisateurs qui effectuent des expériences sur leur machine locale, ou qui disposent d’une machine distante à laquelle ils se connectent en SSH pour soumettre des jobs Launch.
Lorsque vous utilisez Docker avec W&B Launch, W&B commence par créer une image, puis crée et exécute un conteneur à partir de cette image. L’image est créée à l’aide de la commande Docker docker run <image-uri>. La configuration de la file d’attente est interprétée comme des arguments supplémentaires transmis à la commande docker run.

Configurer une file d’attente Docker

La configuration de la file d’attente Launch (pour une ressource cible Docker) accepte les mêmes options que celles définies dans la commande CLI docker run. L’agent reçoit les options définies dans la configuration de la file d’attente. Il fusionne ensuite les options reçues avec les surcharges de la configuration du job Launch pour produire une commande docker run finale, exécutée sur la ressource cible (dans ce cas, une machine locale). Deux transformations de syntaxe ont lieu :
  1. Les options répétées sont définies dans la configuration de la file d’attente sous forme de liste.
  2. Les options de type indicateur sont définies dans la configuration de la file d’attente sous forme de booléens avec la valeur true.
Par exemple, la configuration de file d’attente suivante :
{
  "env": ["MY_ENV_VAR=value", "MY_EXISTING_ENV_VAR"],
  "volume": "/mnt/datasets:/mnt/datasets",
  "rm": true,
  "gpus": "all"
}
Donne la commande docker run suivante :
docker run \
  --env MY_ENV_VAR=value \
  --env MY_EXISTING_ENV_VAR \
  --volume "/mnt/datasets:/mnt/datasets" \
  --rm <image-uri> \
  --gpus all
Les volumes peuvent être spécifiés soit sous forme de liste de chaînes, soit sous forme d’une chaîne unique. Utilisez une liste si vous spécifiez plusieurs volumes. Docker transmet automatiquement depuis l’environnement de l’agent Launch les variables d’environnement auxquelles aucune valeur n’est attribuée. Cela signifie que, si l’agent Launch possède une variable d’environnement MY_EXISTING_ENV_VAR, cette variable d’environnement sera disponible dans le conteneur. Cela est utile si vous souhaitez utiliser d’autres clés de configuration sans les publier dans la configuration de la file d’attente. L’indicateur --gpus de la commande docker run vous permet de spécifier les GPU disponibles pour un conteneur Docker. Pour plus d’informations sur l’utilisation de l’indicateur gpus, voir la documentation Docker.
  • Installez le NVIDIA Container Toolkit pour utiliser des GPU dans un conteneur Docker.
  • Si vous créez des images à partir d’un job basé sur du code ou provenant d’un artifact, vous pouvez remplacer l’image de base utilisée par l’agent pour inclure le NVIDIA Container Toolkit. Par exemple, dans votre file d’attente Launch, vous pouvez remplacer l’image de base par tensorflow/tensorflow:latest-gpu :
    {
      "builder": {
        "accelerator": {
          "base_image": "tensorflow/tensorflow:latest-gpu"
        }
      }
    }
    

Créer une file d’attente

Créez une file d’attente qui utilise Docker comme ressource de calcul avec la W&B CLI :
  1. Accédez à la page Launch.
  2. Cliquez sur le bouton Créer une file d’attente.
  3. Sélectionnez l’entité dans laquelle vous souhaitez créer la file d’attente.
  4. Saisissez un nom pour votre file d’attente dans le champ Nom.
  5. Sélectionnez Docker comme Ressource.
  6. Définissez la configuration de votre file d’attente Docker dans le champ Configuration.
  7. Cliquez sur le bouton Créer une file d’attente pour créer la file d’attente.

Configurer un agent Launch sur une machine locale

Configurez l’agent Launch à l’aide d’un fichier de configuration YAML nommé launch-config.yaml. Par défaut, W&B recherche le fichier de configuration dans ~/.config/wandb/launch-config.yaml. Vous pouvez également spécifier un autre répertoire lorsque vous activez l’agent Launch.
Vous pouvez utiliser la CLI W&B pour spécifier les principales options configurables de l’agent Launch (au lieu du fichier de configuration YAML) : le nombre maximal de jobs, l’entité W&B et les files d’attente Launch. Voir la commande wandb launch-agent pour en savoir plus.

Principales options de configuration de l’agent

Les onglets suivants montrent comment définir les principales options de configuration de l’agent avec le W&B CLI et un fichier de configuration YAML :
wandb launch-agent -q <queue-name> --max-jobs <n>

Outils de création d’images Docker

L’agent Launch sur votre machine peut être configuré pour créer des images Docker. Par défaut, ces images sont stockées dans le dépôt local d’images de votre machine. Pour permettre à votre agent Launch de créer des images Docker, définissez la clé builder de la configuration de l’agent Launch sur docker :
launch-config.yaml
builder:
	type: docker
Si vous ne voulez pas que l’agent construise des images Docker et préférez utiliser des images déjà construites depuis un registre, définissez la clé builder sur noop dans la configuration de l’agent Launch
launch-config.yaml
builder:
  type: noop

Registres de conteneurs

Launch utilise des registres de conteneurs externes comme Dockerhub, Google Container Registry, Azure Container Registry et Amazon ECR. Si vous souhaitez exécuter un job dans un environnement différent de celui dans lequel vous l’avez créé, configurez votre agent pour qu’il puisse récupérer des images depuis un registre de conteneurs. Pour en savoir plus sur la façon de connecter l’agent Launch à un registre cloud, consultez la page Configuration avancée de l’agent.