> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-dependabot-github-actions-actions-cache-6.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 튜토리얼: Docker로 W&B Launch 설정

> 로컬 머신에서 Docker를 에이전트 환경이자 컴퓨팅 대상으로 사용해 ML 작업을 실행하도록 W&B Launch를 설정합니다.

이 튜토리얼에서는 로컬 머신에서 Docker를 Launch 에이전트 환경과 큐의 대상 리소스로 모두 사용하도록 W\&B Launch를 설정하는 방법을 설명합니다. 이 튜토리얼을 마치면 Docker 기반 Launch 큐와 ML 작업을 실행할 준비가 된 로컬 Launch 에이전트를 사용할 수 있습니다.

같은 로컬 머신에서 Docker를 작업 실행용으로 사용하고, 동시에 Launch 에이전트 환경으로도 사용하는 방식은 컴퓨팅 환경이 클러스터 관리 시스템(예: Kubernetes) 없이 머신에 설치되어 있는 경우에 유용합니다. Docker 큐를 사용하면 워크스테이션에서 워크로드를 실행할 수도 있습니다.

<Note>
  이 설정은 로컬 머신에서 실험을 실행하거나, 원격 머신에 SSH로 접속해 Launch 작업을 제출하는 사용자에게 일반적입니다.
</Note>

Launch에서 Docker를 사용하면 W\&B는 먼저 이미지를 빌드한 다음, 해당 이미지에서 컨테이너를 빌드하고 실행합니다. W\&B는 Docker `docker run [IMAGE-URI]` 명령으로 이미지를 빌드합니다. W\&B는 큐 설정을 `docker run` 명령에 전달되는 추가 인수로 해석합니다.

<div id="configure-a-docker-queue">
  ## Docker 큐 설정
</div>

Docker 대상 리소스용 큐 설정은 Launch가 큐 옵션을 `docker run` 명령어로 변환하는 방식을 정의합니다.

Launch 큐 설정(Docker 대상 리소스용)은 [`docker run`](/ko/models/ref/cli/wandb-docker-run) CLI 명령어에 정의된 것과 동일한 옵션을 받습니다.

에이전트는 큐 설정에 정의된 옵션을 받습니다. 그런 다음 에이전트는 전달받은 옵션을 Launch 작업 설정의 재정의와 병합하여 대상 리소스(이 경우 로컬 머신)에서 실행되는 최종 `docker run` 명령어를 생성합니다.

다음과 같은 두 가지 구문 변환이 적용됩니다:

* 반복되는 옵션은 큐 설정에서 목록으로 정의합니다.
* 플래그 옵션은 큐 설정에서 값이 `true`인 불리언으로 정의합니다.

예를 들어, 다음과 같은 큐 설정이 있습니다:

```json theme={null}
{
  "env": ["MY_ENV_VAR=value", "MY_EXISTING_ENV_VAR"],
  "volume": "/mnt/datasets:/mnt/datasets",
  "rm": true,
  "gpus": "all"
}
```

다음과 같은 `docker run` 명령이 생성됩니다:

```bash theme={null}
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 문서](https://docs.docker.com/config/containers/resource_constraints/#gpu)를 참조하세요.

<Note>
  * 도커 컨테이너 내에서 GPU를 사용하려면 [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker)을 설치하세요.
  * 코드 또는 artifact 소스 작업에서 이미지를 빌드하는 경우, [에이전트](#configure-a-launch-agent-on-a-local-machine)에서 사용하는 기본 이미지를 재정의해 NVIDIA Container Toolkit이 포함되도록 할 수 있습니다.
    예를 들어 Launch 큐에서 기본 이미지를 `tensorflow/tensorflow:latest-gpu`로 재정의할 수 있습니다:

    ```json theme={null}
    {
      "builder": {
        "accelerator": {
          "base_image": "tensorflow/tensorflow:latest-gpu"
        }
      }
    }
    ```
</Note>

<div id="create-a-queue">
  ## 큐 생성
</div>

Docker를 컴퓨팅 리소스로 사용하는 큐를 생성하려면 다음 단계를 따르세요:

1. [Launch 페이지](https://wandb.ai/launch)로 이동합니다.
2. **Create Queue** 버튼을 클릭합니다.
3. 큐를 생성할 **Entity**를 선택합니다.
4. **Name** 필드에 큐 이름을 입력합니다.
5. **Resource**로 **Docker**를 선택합니다.
6. **Configuration** 필드에 Docker 큐 설정을 입력합니다.
7. **Create Queue** 버튼을 클릭합니다.

이제 작업을 받을 준비가 된 Docker 기반 Launch 큐가 생성되었습니다. 다음으로, 로컬 머신에서 Launch 에이전트를 구성하여 이 큐에서 작업을 가져오도록 설정하세요.

<div id="configure-a-launch-agent-on-a-local-machine">
  ## 로컬 머신에서 Launch 에이전트 설정하기
</div>

`launch-config.yaml`이라는 이름의 YAML 설정 파일로 Launch 에이전트를 설정합니다. 기본적으로 W\&B는 `~/.config/wandb/launch-config.yaml`에서 설정 파일을 찾습니다. Launch 에이전트를 실행할 때 필요에 따라 다른 디렉터리를 지정할 수도 있습니다.

<Note>
  W\&B CLI를 사용하면 Launch 에이전트의 핵심 설정 옵션(설정용 YAML 파일 대신)인 최대 작업 수, W\&B entity, Launch 큐를 지정할 수 있습니다. 자세한 내용은 [`wandb launch-agent`](/ko/models/ref/cli/wandb-launch-agent) 명령을 참조하세요.
</Note>

<div id="core-agent-config-options">
  ### 핵심 에이전트 설정 옵션
</div>

다음 탭에서는 W\&B CLI와 YAML 설정 파일을 사용하여 핵심 에이전트 설정 옵션을 지정하는 방법을 보여줍니다.

<Tabs>
  <Tab title="W&B CLI">
    ```bash theme={null}
    wandb launch-agent -q [QUEUE-NAME] --max-jobs [N]
    ```
  </Tab>

  <Tab title="설정 파일">
    ```yaml title="launch-config.yaml" theme={null}
    max_jobs: [N-CONCURRENT-JOBS]
    queues:
    	- [QUEUE-NAME]
    ```
  </Tab>
</Tabs>

<div id="docker-image-builders">
  ### 도커 이미지 빌더
</div>

머신에서 실행 중인 Launch 에이전트는 도커 이미지를 빌드하도록 설정할 수 있습니다. 기본적으로 이러한 이미지는 머신의 로컬 이미지 저장소에 저장됩니다. Launch 에이전트가 도커 이미지를 빌드할 수 있게 하려면 Launch 에이전트 설정에서 `builder` 키를 `docker`로 설정하세요:

```yaml title="launch-config.yaml" theme={null}
builder:
	type: docker
```

에이전트가 도커 이미지를 빌드하지 않고, 대신 레지스트리에 있는 미리 빌드된 이미지를 사용하도록 하려면 Launch 에이전트 설정에서 `builder` 키를 `noop`으로 설정하세요:

```yaml title="launch-config.yaml" theme={null}
builder:
  type: noop
```

<div id="container-registries">
  ### 컨테이너 레지스트리
</div>

Launch는 Docker Hub, Google Container Registry, Azure Container Registry, Amazon ECR과 같은 외부 컨테이너 레지스트리를 사용합니다.
작업을 빌드한 환경과 다른 환경에서 실행하려면, 로컬에서 빌드되지 않은 이미지를 에이전트가 가져올 수 있도록 컨테이너 레지스트리에서 이미지를 pull할 수 있게 에이전트를 설정하세요.

Launch 에이전트를 클라우드 레지스트리에 연결하는 방법에 대해 자세히 알아보려면 [고급 에이전트 설정](./setup-agent-advanced#agent-configuration) 페이지를 참조하세요.
