메인 콘텐츠로 건너뛰기

Documentation Index

Fetch the complete documentation index at: https://wb-21fd5541-docs-2661.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

이 튜토리얼에서는 로컬 머신에서 Docker를 Launch 에이전트 환경과 큐의 대상 리소스로 모두 사용하도록 W&B Launch를 설정하는 방법을 설명합니다. 이 튜토리얼을 마치면 Docker 기반 Launch 큐와 ML 작업을 실행할 준비가 된 로컬 Launch 에이전트를 사용할 수 있습니다. 같은 로컬 머신에서 Docker를 작업 실행용으로 사용하고, 동시에 Launch 에이전트 환경으로도 사용하는 방식은 컴퓨팅 환경이 클러스터 관리 시스템(예: Kubernetes) 없이 머신에 설치되어 있는 경우에 유용합니다. Docker 큐를 사용하면 워크스테이션에서 워크로드를 실행할 수도 있습니다.
이 설정은 로컬 머신에서 실험을 실행하거나, 원격 머신에 SSH로 접속해 Launch 작업을 제출하는 사용자에게 일반적입니다.
Launch에서 Docker를 사용하면 W&B는 먼저 이미지를 빌드한 다음, 해당 이미지에서 컨테이너를 빌드하고 실행합니다. W&B는 Docker docker run [IMAGE-URI] 명령으로 이미지를 빌드합니다. W&B는 큐 설정을 docker run 명령에 전달되는 추가 인수로 해석합니다.

Docker 큐 설정

Docker 대상 리소스용 큐 설정은 Launch가 큐 옵션을 docker run 명령어로 변환하는 방식을 정의합니다. Launch 큐 설정(Docker 대상 리소스용)은 docker run CLI 명령어에 정의된 것과 동일한 옵션을 받습니다. 에이전트는 큐 설정에 정의된 옵션을 받습니다. 그런 다음 에이전트는 전달받은 옵션을 Launch 작업 설정의 재정의와 병합하여 대상 리소스(이 경우 로컬 머신)에서 실행되는 최종 docker run 명령어를 생성합니다. 다음과 같은 두 가지 구문 변환이 적용됩니다:
  • 반복되는 옵션은 큐 설정에서 목록으로 정의합니다.
  • 플래그 옵션은 큐 설정에서 값이 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 소스 작업에서 이미지를 빌드하는 경우, 에이전트에서 사용하는 기본 이미지를 재정의해 NVIDIA Container Toolkit이 포함되도록 할 수 있습니다. 예를 들어 Launch 큐에서 기본 이미지를 tensorflow/tensorflow:latest-gpu로 재정의할 수 있습니다:
    {
      "builder": {
        "accelerator": {
          "base_image": "tensorflow/tensorflow:latest-gpu"
        }
      }
    }
    

큐 생성

Docker를 컴퓨팅 리소스로 사용하는 큐를 생성하려면 다음 단계를 따르세요:
  1. Launch 페이지로 이동합니다.
  2. Create Queue 버튼을 클릭합니다.
  3. 큐를 생성할 Entity를 선택합니다.
  4. Name 필드에 큐 이름을 입력합니다.
  5. ResourceDocker를 선택합니다.
  6. Configuration 필드에 Docker 큐 설정을 입력합니다.
  7. Create Queue 버튼을 클릭합니다.
이제 작업을 받을 준비가 된 Docker 기반 Launch 큐가 생성되었습니다. 다음으로, 로컬 머신에서 Launch 에이전트를 구성하여 이 큐에서 작업을 가져오도록 설정하세요.

로컬 머신에서 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는 Docker Hub, Google Container Registry, Azure Container Registry, Amazon ECR과 같은 외부 컨테이너 레지스트리를 사용합니다. 작업을 빌드한 환경과 다른 환경에서 실행하려면, 로컬에서 빌드되지 않은 이미지를 에이전트가 가져올 수 있도록 컨테이너 레지스트리에서 이미지를 pull할 수 있게 에이전트를 설정하세요. Launch 에이전트를 클라우드 레지스트리에 연결하는 방법에 대해 자세히 알아보려면 고급 에이전트 설정 페이지를 참조하세요.