메인 콘텐츠로 건너뛰기
다음 가이드는 로컬 머신에서 Launch 에이전트 환경과 대기열의 대상 리소스 모두에 Docker를 사용하도록 W&B Launch를 구성하는 방법을 설명합니다. 동일한 로컬 머신에서 Docker를 사용해 작업을 실행하고 Launch 에이전트의 환경으로 사용하는 방식은, 클러스터 관리 시스템(예: Kubernetes)이 설치되어 있지 않은 머신에 컴퓨팅 리소스가 있는 경우 특히 유용합니다. 또한 Docker 대기열을 사용해 고성능 워크스테이션에서 워크로드를 실행할 수도 있습니다.
이 설정은 로컬 머신에서 실험을 수행하거나, SSH로 접속해 Launch 작업을 제출하는 원격 머신을 사용하는 사용자에게 일반적인 구성입니다.
Docker와 함께 W&B Launch를 사용할 때, W&B는 먼저 이미지를 빌드한 다음 해당 이미지로부터 컨테이너를 빌드하고 실행합니다. 이미지는 Docker docker run <image-uri> 명령으로 빌드됩니다. 대기열 구성은 docker run 명령에 전달되는 추가 인수로 해석됩니다.

Docker 큐 구성하기

Launch 큐 구성(Docker 대상 리소스용)은 docker run CLI 명령어에 정의된 것과 동일한 옵션을 지원합니다. 에이전트는 큐 구성에서 정의된 옵션을 전달받습니다. 그런 다음 에이전트는 전달받은 옵션을 launch 작업 구성의 재정의(override) 값과 병합하여, 대상 리소스(이 예에서는 로컬 머신)에서 실행되는 최종 docker run 명령을 생성합니다. 두 가지 구문 변환이 적용됩니다:
  1. 반복되는 옵션은 큐 구성에서 목록(list)으로 정의됩니다.
  2. 플래그 옵션은 큐 구성에서 값이 true인 불리언(Boolean)으로 정의됩니다.
예를 들어, 다음과 같은 큐 구성이 있다고 가정해 봅시다:
{
  "env": ["MY_ENV_VAR=value", "MY_EXISTING_ENV_VAR"],
  "volume": "/mnt/datasets:/mnt/datasets",
  "rm": true,
  "gpus": "all"
}
다음과 같은 docker run 명령이 생성됩니다:
docker run \
  --env MY_ENV_VAR=value \
  --env MY_EXISTING_ENV_VAR \
  --volume "/mnt/datasets:/mnt/datasets" \
  --rm <image-uri> \
  --gpus all
볼륨은 문자열 목록 또는 단일 문자열로 지정할 수 있습니다. 여러 개의 볼륨을 지정하는 경우 목록을 사용하세요. Docker는 값이 설정되지 않은 환경 변수를 Launch 에이전트가 실행 중인 환경에서 자동으로 전달합니다. 즉, Launch 에이전트에 MY_EXISTING_ENV_VAR 환경 변수가 있으면, 해당 환경 변수는 컨테이너에서도 사용할 수 있습니다. 이는 큐 구성에 직접 노출하지 않고 다른 설정 키를 사용하고자 할 때 유용합니다. docker run 명령의 --gpus 플래그를 사용하면 Docker 컨테이너에서 사용할 수 있는 GPU를 지정할 수 있습니다. gpus 플래그 사용 방법에 대한 자세한 내용은 Docker 문서를 참조하세요.
  • Docker 컨테이너 내에서 GPU를 사용하려면 NVIDIA Container Toolkit을 설치해야 합니다.
  • 코드 또는 아티팩트 기반 작업에서 이미지를 빌드하는 경우, NVIDIA Container Toolkit을 포함하도록 agent가 사용하는 기본 이미지를 재정의할 수 있습니다. 예를 들어, Launch 큐 내에서 기본 이미지를 tensorflow/tensorflow:latest-gpu로 재정의할 수 있습니다:
    {
      "builder": {
        "accelerator": {
          "base_image": "tensorflow/tensorflow:latest-gpu"
        }
      }
    }
    

큐 생성

W&B CLI를 사용하여 Docker를 컴퓨팅 리소스로 사용하는 큐를 생성합니다:
  1. Launch 페이지로 이동합니다.
  2. Create Queue 버튼을 클릭합니다.
  3. 큐를 생성할 Entity를 선택합니다.
  4. Name 필드에 큐 이름을 입력합니다.
  5. ResourceDocker를 선택합니다.
  6. Configuration 필드에서 Docker 큐 구성을 설정합니다.
  7. 큐를 생성하려면 Create Queue 버튼을 클릭합니다.

로컬 머신에서 launch agent 구성하기

launch-config.yaml이라는 이름의 YAML 구성 파일을 사용해 launch agent를 구성합니다. 기본적으로 W&B는 ~/.config/wandb/launch-config.yaml 경로에서 구성 파일을 검색합니다. launch agent를 활성화할 때 다른 디렉터리를 지정할 수도 있습니다.
W&B CLI를 사용해 launch agent의 핵심 구성 옵션을 지정할 수 있습니다(구성 YAML 파일을 사용하는 대신). 예를 들어, 최대 job 수, W&B 엔터티, launch 큐 등을 설정할 수 있습니다. 자세한 내용은 wandb launch-agent 명령을 참고하세요.

코어 에이전트 구성 옵션

아래 탭에서는 W&B CLI와 YAML 구성 파일을 사용하여 코어 에이전트 구성 옵션을 지정하는 방법을 보여줍니다:
wandb launch-agent -q <queue-name> --max-jobs <n>

Docker 이미지 빌더

로컬 머신의 launch agent를 Docker 이미지를 빌드하도록 구성할 수 있습니다. 기본적으로 이러한 이미지는 머신의 로컬 이미지 저장소에 저장됩니다. launch agent가 Docker 이미지를 빌드할 수 있도록 하려면 launch agent 설정에서 builder 키를 docker로 설정하십시오:
launch-config.yaml
builder:
	type: docker
에이전트가 Docker 이미지를 빌드하지 않고 레지스트리의 미리 빌드된 이미지를 사용하게 하려면 launch agent 구성에서 builder 키를 noop으로 설정하세요
launch-config.yaml
builder:
  type: noop

컨테이너 레지스트리

Launch는 Docker Hub, Google Container Registry, Azure Container Registry, Amazon ECR와 같은 외부 컨테이너 레지스트리를 사용합니다.
빌드한 환경과 다른 환경에서 작업을 실행하려면, 에이전트가 컨테이너 레지스트리에서 이미지를 가져올 수 있도록 구성해야 합니다.
Launch 에이전트를 클라우드 레지스트리와 연결하는 방법에 대한 자세한 내용은 고급 에이전트 설정 페이지를 참조하세요.