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

Docker 큐 설정

Launch 큐 설정(Docker 대상 리소스용)은 docker run CLI 명령어에 정의된 것과 동일한 옵션을 받습니다. 에이전트는 큐 설정에 정의된 옵션을 받습니다. 그런 다음 에이전트는 전달받은 옵션을 Launch 작업 설정의 재정의와 병합하여 대상 리소스(이 경우 로컬 머신)에서 실행할 최종 docker run 명령어를 생성합니다. 다음과 같은 두 가지 구문 변환이 적용됩니다:
  1. 반복되는 옵션은 큐 설정에서 목록으로 정의됩니다.
  2. 플래그 옵션은 큐 설정에서 값이 true인 불리언으로 정의됩니다.
예를 들어, 다음과 같은 큐 설정이 있습니다:
{
  "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 플래그를 사용하면 도커 컨테이너에서 사용할 수 있는 GPU를 지정할 수 있습니다. gpus 플래그 사용 방법에 대한 자세한 내용은 Docker 문서를 참조하세요.
  • 도커 컨테이너 내에서 GPU를 사용하려면 NVIDIA Container Toolkit을 설치하세요.
  • 코드 또는 artifact 소스 작업에서 이미지를 빌드하는 경우, agent에서 사용하는 기본 이미지를 재정의해 NVIDIA Container Toolkit이 포함되도록 할 수 있습니다. 예를 들어 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 에이전트 설정하기

launch-config.yaml이라는 이름의 YAML 설정 파일로 Launch 에이전트를 설정합니다. 기본적으로 W&B는 ~/.config/wandb/launch-config.yaml에서 설정 파일을 찾습니다. Launch 에이전트를 실행할 때 필요에 따라 다른 디렉터리를 지정할 수도 있습니다.
W&B CLI를 사용하면 Launch 에이전트의 핵심 설정 옵션(설정용 YAML 파일 대신)인 최대 작업 수, W&B entity, Launch 큐를 지정할 수 있습니다. 자세한 내용은 wandb launch-agent 명령을 참조하세요.

핵심 에이전트 설정 옵션

다음 탭에서는 W&B CLI와 YAML 설정 파일을 사용하여 핵심 에이전트 설정 옵션을 지정하는 방법을 보여줍니다.
wandb launch-agent -q <queue-name> --max-jobs <n>

도커 이미지 빌더

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

컨테이너 레지스트리

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