> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/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="code" />

이 페이지에서는 W\&B run을 필요할 때마다 재현할 수 있도록 W\&B Launch 작업을 생성하는 방법을 설명합니다. Launch 작업은 W\&B run을 재현하기 위한 청사진입니다. 작업은 워크로드 실행에 필요한 소스 코드, 의존성, 입력을 캡처하는 W\&B 아티팩트입니다.

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

`wandb launch` 명령으로 작업을 생성하고 실행할 수 있습니다.

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

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

소스 코드가 원격 저장소에 있고 Launch가 특정 커밋, 브랜치 또는 태그 시점의 코드를 복제하게 하려면 Git 기반 작업을 사용하세요. W\&B Launch는 원격 Git 저장소의 커밋, 브랜치 또는 태그에서 코드와 기타 추적 대상 자산을 복제합니다. `--uri` 또는 `-u` 플래그로 코드가 있는 URI를 지정하고, 필요하면 `--build-context` 플래그로 하위 디렉터리를 지정하세요.

다음 명령으로 Git 저장소에서 hello world 작업을 실행하세요.

```bash theme={"system"}
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 작업 저장소](https://github.com/wandb/launch-jobs)를 임시 디렉터리에 복제합니다.
2. `hello` 프로젝트에 `hello-world-git`이라는 작업을 생성합니다. 이 작업은 저장소 기본 브랜치의 헤드 커밋과 연결됩니다.
3. `jobs/hello_world` 디렉터리와 `Dockerfile.wandb`를 사용해 컨테이너 이미지를 구축합니다.
4. 컨테이너를 시작하고 `python job.py`를 실행합니다.

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

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

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

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`의 전송 프로토콜을 사용합니다.

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

소스가 원격 Git 저장소가 아닌 로컬 디렉터리에 있다면 코드 아티팩트 작업을 사용하세요. W\&B 아티팩트에 저장된 소스 코드라면 무엇이든 작업으로 생성할 수 있습니다. `--uri` 또는 `-u` 인수에 로컬 디렉터리를 지정하면 새 코드 아티팩트와 작업이 생성됩니다.

먼저 빈 디렉터리를 만들고, 다음 내용이 담긴 `main.py`라는 Python 스크립트를 추가하세요.

```python theme={"system"}
import wandb

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

다음 내용으로 `requirements.txt` 파일을 추가하세요.

```text theme={"system"}
wandb>=0.17.1
```

다음 명령어를 사용하여 디렉터리를 코드 아티팩트로 로깅하고 작업을 실행하세요.

```bash theme={"system"}
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` 프로젝트에서 재사용할 수 있는 작업에 연결됩니다.

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

미리 만들어 둔 도커 이미지로 작업을 구축할 수도 있습니다. 이 방식은 ML 코드용 구축 시스템이 이미 있거나, 작업의 코드나 요구 사항은 바꿀 계획이 없지만 하이퍼파라미터나 인프라 규모를 바꿔 가며 실험하려는 경우에 유용합니다.

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

다음 명령을 사용하여 미리 만들어 둔 이미지에서 작업을 실행하세요.

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

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

`wandb launch`로 직접 생성하는 작업 외에도, W\&B는 추적되는 코드를 실행하는 과정에서 작업을 자동으로 생성할 수 있습니다. 소스 코드가 추적되는 run이라면 Launch로 생성되지 않았더라도 W\&B가 해당 run의 작업을 자동으로 생성하고 추적합니다. 다음 세 가지 조건 중 하나라도 충족하는 run은 소스 코드가 추적되는 것으로 간주됩니다.

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

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

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

기본적으로 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={"system"}
    WANDB_JOB_NAME=awesome-job-name
    ```
  </Tab>

  <Tab title="W&B Python SDK">
    `wandb.Settings`로 작업 이름을 정의한 다음, `wandb.init()`으로 W\&B를 초기화할 때 이 객체를 전달하세요. 예:

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

<Note>
  도커 이미지 작업의 경우 W\&B가 버전 별칭을 작업의 별칭으로 자동 추가합니다.
</Note>

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

작업은 컨테이너에서 실행됩니다. 이미지 작업은 미리 구축된 도커 이미지를 사용하지만, Git 작업과 코드 아티팩트 작업은 컨테이너 구축 단계를 거쳐야 합니다.

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

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

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

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

  공식 W\&B Launch 작업 저장소에서 `--build-context` 인수를 사용하는 예시는 [Git 작업](#git-jobs)을 참고하세요.
</Note>

<h3 id="dockerfile">
  Dockerfile
</h3>

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)을 참조하세요.

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

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