메인 콘텐츠로 건너뛰기

Colab에서 사용해 보기

Launch 작업은 W&B run을 재현하기 위한 청사진입니다. 작업은 워크로드를 실행하는 데 필요한 소스 코드, 의존성, 입력을 포함하는 W&B Artifacts입니다. 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 작업 저장소를 임시 디렉터리에 복제합니다.
  2. hello 프로젝트에 hello-world-git이라는 작업을 생성합니다. 이 작업은 저장소 기본 브랜치의 HEAD 커밋에 연결됩니다.
  3. jobs/hello_world 디렉터리와 Dockerfile.wandb를 사용해 컨테이너 이미지를 빌드합니다.
  4. 컨테이너를 시작하고 python job.py를 실행합니다.
특정 브랜치 또는 커밋 해시에서 작업을 빌드하려면 -g, --git-hash 인수를 추가하세요. 전체 인수 목록을 보려면 wandb launch --help를 실행하세요.

원격 URL 형식

Launch 작업에 연결된 Git 원격은 HTTPS URL 또는 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 Artifact에 저장된 모든 소스 코드에서 생성할 수 있습니다. 로컬 디렉터리를 --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라는 이름의 작업을 생성합니다.
  3. 현재 디렉터리와 Launch의 기본 Dockerfile로 컨테이너 이미지를 빌드합니다. 기본 Dockerfile은 requirements.txt 파일의 의존성을 설치하고 엔트리포인트를 python main.py로 설정합니다.

Image jobs

또는 미리 만들어진 도커 이미지를 기반으로 작업을 빌드할 수 있습니다. 이는 ML 코드용 빌드 시스템이 이미 갖춰져 있거나, 작업의 코드나 종속성은 조정할 계획이 없지만 하이퍼파라미터나 서로 다른 인프라 규모로 실험해 보고 싶을 때 유용합니다. 이미지는 Docker 레지스트리에서 가져와 지정된 엔트리 포인트로 실행되며, 지정하지 않으면 기본 엔트리 포인트로 실행됩니다. 도커 이미지에서 작업을 생성하고 실행하려면 --docker-image 옵션에 전체 이미지 태그를 전달하세요. 미리 만들어진 이미지에서 단순한 작업을 실행하려면 다음 명령어를 사용하세요:
wandb launch --docker-image "wandb/job_hello_world:main" --project "hello-world"           

자동 작업 생성

W&B는 추적된 소스 코드가 있는 모든 run에 대해, 해당 run이 Launch로 생성되지 않았더라도 자동으로 작업을 생성하고 추적합니다. 다음 세 가지 조건 중 하나라도 충족하면 해당 run에는 추적된 소스 코드가 있는 것으로 간주됩니다:
  • run에 연결된 git 원격 저장소와 커밋 해시가 있습니다.
  • run이 코드 아티팩트를 로깅했습니다. Run.log_code를 참조하세요.
  • run이 WANDB_DOCKER 환경 변수가 이미지 태그로 설정된 도커 컨테이너에서 실행되었습니다.
W&B run에서 Launch 작업이 자동으로 생성되면 Git 원격 저장소 URL은 로컬 git 저장소에서 추론됩니다.

Launch 작업 이름

기본적으로 W&B가 작업 이름을 자동으로 생성합니다. 이름은 작업이 생성되는 방식(GitHub, 코드 아티팩트 또는 도커 이미지)에 따라 결정됩니다. 또는 환경 변수나 W&B Python SDK를 사용해 Launch 작업 이름을 직접 지정할 수도 있습니다. 다음 표는 작업 소스를 기준으로 기본적으로 사용되는 작업 이름 지정 규칙을 보여줍니다.
소스이름 지정 규칙
GitHubjob-<git-remote-url>-<path-to-script>
코드 아티팩트job-<code-artifact-name>
도커 이미지job-<image-name>
W&B 환경 변수 또는 W&B Python SDK로 작업 이름 지정
원하는 작업 이름으로 WANDB_JOB_NAME 환경 변수를 설정합니다. 예를 들면 다음과 같습니다.
WANDB_JOB_NAME=awesome-job-name
도커 이미지 작업의 경우 버전 alias가 작업의 alias로 자동 추가됩니다.

컨테이너화

작업은 컨테이너에서 실행됩니다. Image 작업은 미리 빌드된 도커 이미지를 사용하는 반면, Git 및 code 아티팩트 작업은 컨테이너 빌드 step이 필요합니다. 작업 컨테이너화는 wandb launch 인수와 작업 소스 코드 내 파일을 사용해 사용자 지정할 수 있습니다.

빌드 컨텍스트

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

Dockerfile

Dockerfile은 도커 이미지를 빌드하기 위한 지침이 담긴 텍스트 파일입니다. 기본적으로 Launch는 requirements.txt 파일을 설치하는 기본 Dockerfile을 사용합니다. 맞춤형 Dockerfile을 사용하려면 wandb launch--dockerfile 인수로 파일 경로를 지정하세요. Dockerfile 경로는 빌드 컨텍스트를 기준으로 지정됩니다. 예를 들어 빌드 컨텍스트가 jobs/hello_world이고 Dockerfile이 jobs/hello_world 디렉터리에 있다면 --dockerfile 인수는 Dockerfile.wandb로 설정해야 합니다. 공식 W&B Launch 작업 저장소에서 --dockerfile 인수를 사용하는 예시는 위 예시를 참조하세요.

Requirements 파일

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