> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-1917.mintlify.site/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" />

Launch 작업은 W\&B Runs를 재현하기 위한 청사진입니다. 작업은 워크로드를 실행하는 데 필요한 소스 코드, 의존성, 입력을 캡처하는 W\&B Artifacts입니다.

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

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

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

W\&B Launch를 사용하면 원격 Git 저장소의 특정 커밋, 브랜치 또는 태그에서 코드와 기타 추적된 에셋을 클론하는 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`를 실행합니다.

특정 브랜치 또는 커밋 해시에서 작업을 구축하려면 `-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>

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

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

```python theme={null}
import wandb

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

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

```txt 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`로 설정합니다.

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

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

이미지는 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>

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

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

Launch 작업이 W\&B run에 의해 자동으로 생성된 경우, Git 원격 저장소 URL은 로컬 git 저장소를 기반으로 추론됩니다.

<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`에 전달하는 인수와 작업 소스 코드에 포함된 파일로 사용자 지정할 수 있습니다.

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

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

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

  공식 W\&B Launch 작업 저장소와 함께 `--build-context` 인수를 사용하는 방법은 [위의 예](#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-jobs)를 참조하세요.

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

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