메인 콘텐츠로 건너뛰기

Colab에서 실행해 보기

Launch 잡은 W&B 실행을 재현하기 위한 설계도입니다. 잡은 워크로드를 실행하는 데 필요한 소스 코드, 의존성, 입력을 포함하는 W&B 아티팩트입니다. wandb launch 명령으로 잡을 생성하고 실행합니다.
실행을 제출하지 않고 잡만 생성하려면 wandb job create 명령을 사용하십시오. 더 자세한 내용은 명령어 참조 문서를 참조하십시오.

Git 작업

W&B Launch를 사용하여 원격 Git 저장소의 특정 커밋, 브랜치 또는 태그에서 코드와 기타 추적되는 자산을 클론하는 Git 기반 작업을 생성할 수 있습니다. 코드가 포함된 URI를 지정하려면 --uri 또는 -u 플래그를 사용하고, 필요하다면 --build-context 플래그로 하위 디렉터리를 지정합니다. 다음 명령으로 Git 저장소에서 “hello world” 작업을 실행합니다:
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 저장소를 임시 디렉터리에 클론합니다.
  2. hello 프로젝트에 hello-world-git라는 이름의 job을 생성합니다. 이 job은 저장소 기본 브랜치의 최신 커밋에 연결됩니다.
  3. jobs/hello_world 디렉터리와 Dockerfile.wandb를 사용해 컨테이너 이미지를 빌드합니다.
  4. 컨테이너를 시작하고 python job.py를 실행합니다.
특정 브랜치 또는 커밋 해시에서 job을 빌드하려면 -g, --git-hash 인수를 추가합니다. 전체 인수 목록을 보려면 wandb launch --help를 실행합니다.

원격 URL 형식

Launch 작업과 연결된 git 원격 저장소는 HTTPS 또는 SSH URL 중 하나일 수 있습니다. URL 유형에 따라 작업 소스 코드를 가져올 때 사용되는 프로토콜이 결정됩니다.
원격 URL 유형URL 형식접근 및 인증 요구 사항
httpshttps://github.com/organization/repository.gitgit 원격 저장소에 인증하기 위한 사용자 이름 및 비밀번호
sshgit@github.com:organization/repository.gitgit 원격 저장소에 인증하기 위한 SSH 키
정확한 URL 형식은 호스팅 제공자마다 다를 수 있습니다. wandb launch --uri로 생성된 작업은 제공된 --uri에 지정된 전송 프로토콜을 사용합니다.

코드 아티팩트 작업

작업은 W&B 아티팩트에 저장된 모든 소스 코드에서 생성할 수 있습니다. 로컬 디렉터리를 --uri 또는 -u 인자로 지정해 새 코드 아티팩트와 작업을 생성하세요. 시작하려면 빈 디렉터리를 만들고 main.py라는 이름의 Python 스크립트를 생성한 뒤 다음 내용을 추가하세요:
import wandb

with wandb.init() as run:
    run.log({"metric": 0.5})
requirements.txt 파일을 생성하고 다음 내용을 입력합니다:`
wandb>=0.17.1
다음 명령을 사용해 디렉터리를 코드 아티팩트로 로그하고 잡을 실행하세요:
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라는 이름의 job을 생성합니다.
  3. 현재 디렉터리와 Launch의 기본 Dockerfile을 기반으로 컨테이너 이미지를 빌드합니다. 기본 Dockerfile은 requirements.txt 파일을 설치하고, 엔트리 포인트를 python main.py로 설정합니다.

이미지 잡

또 다른 방법으로는, 미리 만들어진 Docker 이미지를 기반으로 잡을 생성할 수 있습니다. 이는 이미 ML 코드를 위한 빌드 시스템이 구축되어 있거나, 잡에 사용되는 코드나 요구사항을 변경할 계획은 없지만 하이퍼파라미터나 인프라 규모만 바꿔가며 실험해 보고 싶은 경우에 유용합니다. 이미지는 Docker 레지스트리에서 가져와 지정된 엔트리 포인트로 실행되며, 엔트리 포인트가 지정되지 않은 경우 기본 엔트리 포인트로 실행됩니다. Docker 이미지에서 잡을 생성하고 실행하려면 --docker-image 옵션에 전체 이미지 태그를 전달하십시오. 미리 만들어진 이미지에서 간단한 잡을 실행하려면 다음 명령을 사용하십시오:
wandb launch --docker-image "wandb/job_hello_world:main" --project "hello-world"           

자동 잡 생성

W&B는 Launch를 통해 생성된 실행이 아니더라도, 소스 코드가 추적되는 모든 실행에 대해 자동으로 잡을 생성하고 추적합니다. 다음 세 가지 조건 중 하나라도 만족하면 해당 실행은 소스 코드가 추적되는 것으로 간주됩니다:
  • 실행에 연결된 Git 원격 저장소(remote)와 커밋 해시가 있는 경우
  • 실행이 코드 아티팩트를 로깅한 경우. Run.log_code를 참조하세요.
  • WANDB_DOCKER 환경 변수가 이미지 태그 값으로 설정된 Docker 컨테이너에서 실행이 수행된 경우
Launch 잡이 W&B 실행에 의해 자동으로 생성되는 경우, Git remote URL은 로컬 Git 리포지토리에서 추론됩니다.

Launch 작업 이름

기본적으로 W&B가 자동으로 작업 이름을 생성합니다. 작업 이름은 작업이 어떤 방식으로 생성되었는지(GitHub, 코드 아티팩트, Docker 이미지)에 따라 달라집니다. 또는 환경 변수나 W&B Python SDK를 사용해 Launch 작업 이름을 직접 지정할 수 있습니다. 다음 표는 작업 소스별 기본 작업 이름 네이밍 규칙을 보여줍니다:
SourceNaming convention
GitHubjob-<git-remote-url>-<path-to-script>
Code artifactjob-<code-artifact-name>
Docker imagejob-<image-name>
W&B 환경 변수 또는 W&B Python SDK를 사용해 작업 이름 지정하기
WANDB_JOB_NAME 환경 변수를 원하는 작업 이름으로 설정합니다. 예를 들어:
WANDB_JOB_NAME=awesome-job-name
Docker 이미지 기반 작업의 경우 버전 별칭이 자동으로 해당 작업의 별칭으로 추가됩니다.

컨테이너화

Job은 컨테이너에서 실행됩니다. 이미지 Job은 미리 빌드된 Docker 이미지를 사용하고, Git 및 코드 아티팩트 Job은 별도의 컨테이너 빌드 단계가 필요합니다. Job의 컨테이너화는 wandb launch 인수와 Job 소스 코드 내의 파일로 사용자 정의할 수 있습니다.

빌드 컨텍스트

빌드 컨텍스트는 컨테이너 이미지를 빌드하기 위해 Docker 데몬으로 전송되는 파일과 디렉터리 트리를 의미합니다. 기본적으로 Launch는 작업 소스 코드의 루트 디렉터리를 빌드 컨텍스트로 사용합니다. 하위 디렉터리를 빌드 컨텍스트로 지정하려면, 작업을 생성하고 실행할 때 wandb launch--build-context 인수를 사용합니다.
--build-context 인수는 여러 프로젝트가 포함된 모노레포를 대상으로 하는 Git 작업을 다룰 때 특히 유용합니다. 하위 디렉터리를 빌드 컨텍스트로 지정하면, 해당 모노레포 내의 특정 프로젝트에 대한 컨테이너 이미지를 빌드할 수 있습니다.공식 W&B Launch jobs 리포지토리에서 --build-context 인수를 사용하는 방법은 위의 예시를 참고하세요.

Dockerfile

Dockerfile은 Docker 이미지를 빌드하기 위한 명령이 포함된 텍스트 파일입니다. 기본적으로 Launch는 requirements.txt 파일을 설치하는 기본 Dockerfile을 사용합니다. 사용자 정의 Dockerfile을 사용하려면 wandb launch--dockerfile 인자를 사용해 해당 파일의 경로를 지정합니다. Dockerfile 경로는 빌드 컨텍스트를 기준으로 상대 경로로 지정합니다. 예를 들어, 빌드 컨텍스트가 jobs/hello_world이고 Dockerfile이 jobs/hello_world 디렉터리에 위치해 있다면, --dockerfile 인자는 Dockerfile.wandb로 설정해야 합니다. 공식 W&B Launch jobs 리포지토리에서 --dockerfile 인자를 사용하는 방법은 위 예시를 참고하십시오.

Requirements 파일

사용자 정의 Dockerfile이 제공되지 않은 경우, Launch는 빌드 컨텍스트에서 설치할 Python 종속성을 찾습니다. 빌드 컨텍스트의 루트에 requirements.txt 파일이 있으면 Launch는 해당 파일에 나열된 종속성을 설치합니다. 그렇지 않고 pyproject.toml 파일이 있는 경우 Launch는 project.dependencies 섹션에 정의된 종속성을 설치합니다.