Passer au contenu principal

Configuration avancée de l’agent

Ce guide explique comment configurer l’agent Launch de W&B pour générer des images de conteneur dans différents environnements.
Le build n’est requis que pour les jobs git et les jobs d’artifact de code. Les jobs d’image ne nécessitent pas de build.Voir Créer un launch job pour en savoir plus sur les types de job.

Builders

L’agent Launch peut créer des images à l’aide de Docker ou de Kaniko.
  • Kaniko : crée une image de conteneur dans Kubernetes sans exécuter le build dans un conteneur privilégié.
  • Docker : crée une image de conteneur en exécutant localement une commande docker build.
Le type de builder se contrôle avec la clé builder.type dans la configuration de l’agent Launch, en utilisant les valeurs docker, kaniko ou noop pour désactiver le build. Par défaut, le chart Helm de l’agent définit builder.type sur noop. Les clés supplémentaires de la section builder sont utilisées pour configurer le processus de build. Si aucun builder n’est spécifié dans la configuration de l’agent et qu’une CLI docker fonctionnelle est détectée, l’agent utilisera Docker par défaut. Si Docker n’est pas disponible, l’agent utilisera noop par défaut.
Utilisez Kaniko pour créer des images dans un cluster Kubernetes. Utilisez Docker dans tous les autres cas.

Publication dans un registre de conteneurs

L’agent Launch attribue à toutes les images qu’il construit un tag basé sur un hachage source unique. Il envoie l’image vers le registre spécifié dans la clé builder.destination. Par exemple, si la clé builder.destination est définie sur my-registry.example.com/my-repository, l’agent tague l’image et l’envoie vers my-registry.example.com/my-repository:<source-hash>. Si l’image existe déjà dans le registre, le build est ignoré.

Configuration de l’agent

Si vous déployez l’agent via notre chart Helm, la configuration de l’agent doit être renseignée dans la clé agentConfig du fichier values.yaml. Si vous lancez vous-même l’agent avec wandb launch-agent, vous pouvez fournir sa configuration en indiquant le chemin vers un fichier YAML avec l’option --config. Par défaut, la configuration est chargée depuis ~/.config/wandb/launch-config.yaml. Dans la configuration de votre agent Launch (launch-config.yaml), indiquez respectivement le nom de l’environnement de la ressource cible et le registre de conteneurs dans les clés environment et registry. Les onglets suivants montrent comment configurer l’agent Launch en fonction de votre environnement et de votre registre.
La configuration de l’environnement AWS nécessite la clé region. Celle-ci doit correspondre à la région AWS dans laquelle l’agent s’exécute.
launch-config.yaml
environment:
  type: aws
  region: <aws-region>
builder:
  type: <kaniko|docker>
  # URI du dépôt ECR où l’agent stockera les images.
  # Assurez-vous que la région correspond à celle configurée dans votre
  # environnement.
  destination: <account-id>.ecr.<aws-region>.amazonaws.com/<repository-name>
  # Si vous utilisez Kaniko, spécifiez le bucket S3 où l’agent stockera le
  # contexte de build.
  build-context-store: s3://<bucket-name>/<path>
L’agent utilise boto3 pour charger les identifiants AWS par défaut. Voir la documentation boto3 pour plus d’informations sur la configuration des identifiants AWS par défaut.

Autorisations de l’agent

Les autorisations requises pour l’agent varient selon le cas d’utilisation.

Autorisations des registres cloud

Voici les autorisations généralement requises pour que les agents Launch puissent interagir avec des registres cloud.
{
  'Version': '2012-10-17',
  'Statement':
    [
      {
        'Effect': 'Allow',
        'Action':
          [
            'ecr:CreateRepository',
            'ecr:UploadLayerPart',
            'ecr:PutImage',
            'ecr:CompleteLayerUpload',
            'ecr:InitiateLayerUpload',
            'ecr:DescribeRepositories',
            'ecr:DescribeImages',
            'ecr:BatchCheckLayerAvailability',
            'ecr:BatchDeleteImage',
          ],
        'Resource': 'arn:aws:ecr:<region>:<account-id>:repository/<repository>',
      },
      {
        'Effect': 'Allow',
        'Action': 'ecr:GetAuthorizationToken',
        'Resource': '*',
      },
    ],
}

Autorisations d’accès au stockage pour Kaniko

L’agent Launch doit disposer de l’autorisation d’écrire dans le stockage cloud s’il utilise le builder Kaniko. Kaniko utilise un stockage de contexte en dehors du pod qui exécute le job de build.
Le stockage de contexte recommandé pour le builder Kaniko sur AWS est Amazon S3. La politique suivante peut être utilisée pour donner à l’agent l’accès à un bucket S3 :
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListObjectsInBucket",
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::<BUCKET-NAME>"]
    },
    {
      "Sid": "AllObjectActions",
      "Effect": "Allow",
      "Action": "s3:*Object",
      "Resource": ["arn:aws:s3:::<BUCKET-NAME>/*"]
    }
  ]
}

Personnaliser le build Kaniko

Indiquez la spécification du Job Kubernetes utilisée par le job Kaniko dans la clé builder.kaniko-config de la configuration de l’agent. Par exemple :
launch-config.yaml
builder:
  type: kaniko
  build-context-store: <my-build-context-store>
  destination: <my-image-destination>
  build-job-name: wandb-image-build
  kaniko-config:
    spec:
      template:
        spec:
          containers:
          - args:
            - "--cache=false" # Les arguments doivent être au format "clé=valeur"
            env:
            - name: "MY_ENV_VAR"
              value: "my-env-var-value"

Déployer l’agent Launch sur CoreWeave

Vous pouvez également déployer l’agent Launch de W&B sur l’infrastructure cloud de CoreWeave. CoreWeave est une infrastructure cloud spécialement conçue pour les charges de travail accélérées par GPU. Pour savoir comment déployer l’agent Launch sur CoreWeave, voir la documentation de CoreWeave.
Vous devrez créer un compte CoreWeave afin de déployer l’agent Launch sur une infrastructure CoreWeave.