> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Launch 작업 만들기

> wandb launch 명령을 사용하여 Git 저장소, 코드 아티팩트 또는 도커 이미지에서 W&B Launch 작업을 만드세요.

<Card title="Colab에서 사용해 보기" href="https://colab.research.google.com/drive/1wX0OSVxZJDHRsZaOaOEDx-lLUrO1hHgP" icon="python" />

이 페이지에서는 필요할 때 W\&B Runs를 재현할 수 있도록 W\&B Launch 작업을 만드는 방법을 보여줍니다. Launch 작업은 W\&B Runs를 재현하기 위한 청사진입니다. 작업은 워크로드를 실행하는 데 필요한 소스 코드, 의존성, 입력을 캡처하는 W\&B Artifacts입니다.

이 페이지는 Git 저장소, 로컬 코드 디렉터리 또는 사전 빌드된 도커 이미지의 워크로드를 패키징하여 나중에 다른 파라미터로 또는 다른 인프라에서 다시 실행하려는 경우에 사용하세요.

`wandb launch` 명령으로 작업을 만들고 실행하세요.

<Note>
  실행용으로 제출하지 않고 작업을 만들려면 `wandb job create` 명령을 사용하세요. 자세한 내용은 [명령 레퍼런스 문서](/ko/models/ref/cli/wandb-job/wandb-job-create)를 참조하세요.
</Note>

<div id="git-jobs">
  ## Git 작업
</div>

소스 코드가 원격 저장소에 있고 Launch가 특정 커밋, 브랜치 또는 태그에서 이를 클론하도록 하려면 Git 기반 작업을 사용하세요. W\&B Launch는 원격 Git 저장소의 커밋, 브랜치 또는 태그에서 코드와 기타 추적된 에셋을 클론합니다. `--uri` 또는 `-u` 플래그로 코드가 포함된 URI를 지정하고, 필요하면 `--build-context` 플래그로 하위 디렉터리를 지정하세요.

다음 명령어를 사용해 Git 저장소에서 hello world 작업을 실행하세요:

```bash theme={null}
wandb launch --uri "https://github.com/wandb/launch-jobs.git" --build-context jobs/hello_world --dockerfile Dockerfile.wandb --project "hello-world" --job-name "hello-world" --entry-point "python job.py"
```

이 명령은 다음을 수행합니다:

1. [W\&B Launch jobs repository](https://github.com/wandb/launch-jobs)를 임시 디렉터리에 복제합니다.
2. `hello` 프로젝트에 `hello-world-git`이라는 작업을 생성합니다. 이 작업은 저장소 기본 브랜치의 HEAD 커밋에 연결됩니다.
3. `jobs/hello_world` 디렉터리와 `Dockerfile.wandb`를 사용해 컨테이너 이미지를 구축합니다.
4. 컨테이너를 시작하고 `python job.py`를 실행합니다.

명령이 완료되면 `hello-world` 프로젝트에 재사용 가능한 Git 기반 작업이 생성되며, 다른 사용자나 자동화가 `wandb launch`로 다시 실행할 수 있습니다.

특정 브랜치 또는 커밋 해시에서 작업을 구축하려면 `-g`, `--git-hash` 인수를 추가하세요. 인수의 전체 목록을 보려면 `wandb launch --help`를 실행하세요.

<div id="remote-url-format">
  ### 원격 URL 형식
</div>

Launch 작업에 연결된 git 원격 저장소는 HTTPS URL 또는 SSH URL일 수 있습니다. URL 유형에 따라 작업 소스 코드를 가져오는 데 사용하는 프로토콜이 달라집니다.

| 원격 URL 유형 | URL 형식                                           | 액세스 및 인증 요구 사항                  |
| --------- | ------------------------------------------------ | ------------------------------- |
| HTTPS     | `https://github.com/organization/repository.git` | git 원격 저장소 인증에 사용할 사용자 이름과 비밀번호 |
| SSH       | `git@github.com:organization/repository.git`     | git 원격 저장소 인증에 사용할 SSH 키        |

정확한 URL 형식은 호스팅 제공업체에 따라 다를 수 있습니다. `wandb launch --uri`로 생성한 작업은 제공된 `--uri`에 지정된 전송 프로토콜을 사용합니다.

<div id="code-artifact-jobs">
  ## 코드 아티팩트 작업
</div>

소스가 원격 Git 저장소가 아니라 로컬 디렉터리에 있을 때는 코드 아티팩트 작업을 사용하세요. W\&B 아티팩트에 저장된 모든 소스 코드에서 작업을 만들 수 있습니다. `--uri` 또는 `-u` 인수에 로컬 디렉터리를 지정해 새 코드 아티팩트와 작업을 만드세요.

시작하려면 빈 디렉터리를 만들고 다음 내용을 담은 `main.py`라는 Python 스크립트를 추가하세요:

```python theme={null}
import wandb

with wandb.init() as run:
    run.log({"metric": 0.5})
```

`requirements.txt` 파일을 추가하고 다음 내용을 입력하세요:

```text theme={null}
wandb>=0.17.1
```

디렉터리를 코드 아티팩트로 로깅한 다음, 아래 명령어로 작업을 실행하세요:

```bash theme={null}
wandb launch --uri . --job-name hello-world-code --project launch-quickstart --entry-point "python main.py"
```

앞서 나온 명령어는 다음 작업을 수행합니다:

1. 현재 디렉터리를 `hello-world-code`라는 이름의 코드 아티팩트로 기록합니다.
2. `launch-quickstart` 프로젝트에 `hello-world-code`라는 이름의 작업을 생성합니다.
3. 현재 디렉터리와 Launch의 기본 Dockerfile을 사용해 컨테이너 이미지를 구축합니다. 기본 Dockerfile은 `requirements.txt` 파일의 패키지를 설치하고 엔트리 포인트를 `python main.py`로 설정합니다.

명령어가 완료되면 로컬 코드가 W\&B 코드 아티팩트로 캡처되고 `launch-quickstart` 프로젝트의 재사용 가능한 작업에 연결됩니다.

<div id="image-jobs">
  ## 이미지 작업
</div>

또는 미리 만들어진 도커 이미지를 바탕으로 작업을 구축할 수 있습니다. 이는 ML 코드에 대한 빌드 시스템이 이미 있거나, 작업의 코드나 요구 사항은 조정할 필요가 없지만 하이퍼파라미터나 서로 다른 인프라 규모는 실험해 보고 싶을 때 유용합니다.

Launch는 Docker 레지스트리에서 이미지를 pull한 다음, 지정된 엔트리 포인트로 실행합니다. 엔트리 포인트를 지정하지 않으면 기본 엔트리 포인트로 실행됩니다. 도커 이미지에서 작업을 생성하고 실행하려면 `--docker-image` 옵션에 전체 이미지 태그를 전달하세요.

다음 명령어로 미리 만들어진 이미지에서 작업을 실행하세요:

```bash theme={null}
wandb launch --docker-image "wandb/job_hello_world:main" --project "hello-world"           
```

<div id="automatic-job-creation">
  ## 자동 작업 생성
</div>

`wandb launch`로 명시적으로 생성하는 작업 외에도, W\&B는 추적된 코드를 실행할 때 부수적으로 작업을 생성할 수 있습니다. W\&B는 Launch로 생성되지 않은 run이라도, 소스 코드가 추적된 모든 run에 대해 자동으로 작업을 생성하고 추적합니다. 다음 세 가지 조건 중 하나라도 충족하면 Runs에 추적된 소스 코드가 있는 것으로 간주됩니다.

* run에 연결된 git 원격 저장소와 커밋 해시가 있습니다.
* run이 코드 아티팩트를 로깅했습니다. [`Run.log_code`](/ko/models/ref/python/experiments/run#log_code)를 참조하세요.
* run이 `WANDB_DOCKER` 환경 변수가 이미지 태그로 설정된 도커 컨테이너에서 실행되었습니다.

W\&B가 W\&B run에서 Launch 작업을 자동으로 생성하는 경우, W\&B는 로컬 git 저장소를 기반으로 Git 원격 저장소 URL을 추론합니다.

<div id="launch-job-names">
  ### Launch 작업 이름
</div>

기본적으로 W\&B가 작업 이름을 자동으로 생성합니다. 이름은 작업이 생성되는 방식(GitHub, 코드 아티팩트 또는 도커 이미지)에 따라 결정됩니다. 또는 환경 변수나 W\&B Python SDK를 사용해 Launch 작업 이름을 직접 지정할 수 있습니다.

다음 표는 작업 소스를 기준으로 기본적으로 사용되는 작업 이름 지정 규칙을 설명합니다.

| 소스      | 이름 지정 규칙                                |
| ------- | --------------------------------------- |
| GitHub  | `job-[GIT-REMOTE-URL]-[PATH-TO-SCRIPT]` |
| 코드 아티팩트 | `job-[CODE-ARTIFACT-NAME]`              |
| 도커 이미지  | `job-[IMAGE-NAME]`                      |

W\&B 환경 변수 또는 W\&B Python SDK로 작업 이름 지정하기.

<Tabs>
  <Tab title="환경 변수">
    원하는 작업 이름으로 `WANDB_JOB_NAME` 환경 변수를 설정하세요. 예를 들면 다음과 같습니다.

    ```bash theme={null}
    WANDB_JOB_NAME=awesome-job-name
    ```
  </Tab>

  <Tab title="W&B Python SDK">
    `wandb.Settings`에서 작업 이름을 정의하세요. 그런 다음 `wandb.init()`로 W\&B를 초기화할 때 이 객체를 전달하세요. 예를 들면 다음과 같습니다.

    ```python theme={null}
    settings = wandb.Settings(job_name="my-job-name")
    wandb.init(settings=settings)
    ```
  </Tab>
</Tabs>

<Note>
  도커 이미지 작업의 경우 버전 별칭이 작업의 별칭으로 자동 추가됩니다.
</Note>

<div id="containerization">
  ## 컨테이너화
</div>

작업은 컨테이너에서 실행됩니다. Image jobs는 미리 구축된 도커 이미지를 사용하지만, Git 및 코드 아티팩트 작업은 컨테이너 구축 단계가 필요합니다.

작업의 컨테이너화는 `wandb launch`에 전달하는 인수와 작업 소스 코드에 포함된 파일로 사용자 지정할 수 있습니다. 다음 섹션에서는 빌드 컨텍스트를 제어하고, 맞춤형 Dockerfile을 제공하며, Python 의존성을 관리하는 방법을 설명합니다.

<div id="build-context">
  ### 구축 컨텍스트
</div>

구축 컨텍스트는 컨테이너 이미지를 구축하기 위해 Docker 데몬으로 전송되는 파일 및 디렉터리 트리를 의미합니다. 기본적으로 Launch는 작업 소스 코드의 루트를 구축 컨텍스트로 사용합니다. 하위 디렉터리를 구축 컨텍스트로 지정하려면 작업을 생성하고 실행할 때 `wandb launch`의 `--build-context` 인수를 사용하세요.

<Note>
  `--build-context` 인수는 여러 프로젝트가 있는 모노레포를 참조하는 Git 작업으로 작업할 때 유용합니다. 하위 디렉터리를 구축 컨텍스트로 지정하면 모노레포 내 특정 프로젝트의 컨테이너 이미지를 구축할 수 있습니다.

  공식 W\&B Launch 작업 저장소와 함께 `--build-context` 인수를 사용하는 방법은 [Git 작업](#git-jobs)를 참고하세요.
</Note>

<div id="dockerfile">
  ### Dockerfile
</div>

Dockerfile은 도커 이미지를 구축하는 데 필요한 지침이 들어 있는 텍스트 파일입니다. 기본적으로 Launch는 `requirements.txt` 파일을 설치하는 기본 Dockerfile을 사용합니다. 맞춤형 Dockerfile을 사용하려면 `wandb launch`의 `--dockerfile` 인수로 파일 경로를 지정하세요.

Dockerfile 경로는 구축 컨텍스트를 기준으로 지정하세요. 예를 들어 구축 컨텍스트가 `jobs/hello_world`이고 Dockerfile이 `jobs/hello_world` 디렉터리에 있는 경우, `--dockerfile` 인수는 `Dockerfile.wandb`로 설정해야 합니다. 공식 W\&B Launch 작업 저장소에서 `--dockerfile` 인수를 사용하는 방법은 [Git 작업](#git-jobs)을 참조하세요.

<div id="requirements-file">
  ### Requirements 파일
</div>

맞춤형 Dockerfile이 제공되지 않으면 Launch는 빌드 컨텍스트에서 설치할 Python 의존성을 찾습니다. 빌드 컨텍스트의 루트에 `requirements.txt` 파일이 있으면 Launch는 해당 파일에 나열된 의존성을 설치합니다. 그렇지 않고 `pyproject.toml` 파일이 있으면 Launch는 `project.dependencies` 섹션에 있는 의존성을 설치합니다.
