메인 콘텐츠로 건너뛰기
Launch 의 핵심 경험은 하이퍼파라미터 및 Datasets 와 같은 다양한 job 입력값을 사용하여 쉽게 실험하고, 이러한 job을 적절한 하드웨어로 라우팅하는 것입니다. 일단 job이 생성되면, 원래 작성자 이외의 Users 도 W&B GUI 또는 CLI를 통해 이러한 입력값을 조정할 수 있습니다. CLI 또는 UI에서 런칭할 때 job 입력값을 설정하는 방법에 대한 자세한 내용은 Enqueue jobs 가이드를 참조하세요. 이 섹션에서는 job에 대해 조정 가능한 입력값을 프로그래밍 방식으로 제어하는 방법을 설명합니다. 기본적으로 W&B jobs는 전체 Run.config를 job의 입력값으로 캡처하지만, Launch SDK는 run config의 특정 키를 제어하거나 JSON 또는 YAML 파일을 입력값으로 지정하는 함수를 제공합니다.
Launch SDK 함수를 사용하려면 wandb-core가 필요합니다. 자세한 내용은 wandb-core README를 참조하세요.

Run 오브젝트 재설정

기본적으로 job에서 wandb.init에 의해 반환된 Run 오브젝트는 재설정될 수 있습니다. Launch SDK는 job을 런칭할 때 Run.config 오브젝트의 어떤 부분을 재설정할 수 있는지 커스터마이징하는 방법을 제공합니다.
import wandb
from wandb.sdk import launch

# launch sdk 사용을 위해 필요합니다.
wandb.require("core")

config = {
    "trainer": {
        "learning_rate": 0.01,
        "batch_size": 32,
        "model": "resnet",
        "dataset": "cifar10",
        "private": {
            "key": "value",
        },
    },
    "seed": 42,
}


with wandb.init(config=config):
    launch.manage_wandb_config(
        include=["trainer"], 
        exclude=["trainer.private"],
    )
    # 기타 코드
launch.manage_wandb_config 함수는 Run.config 오브젝트에 대한 입력값을 허용하도록 job을 설정합니다. 선택 사항인 includeexclude 옵션은 중첩된 설정 오브젝트 내의 경로 접두사를 인수로 받습니다. 이는 예를 들어, 최종 사용자에게 노출하고 싶지 않은 옵션을 가진 라이브러리를 job에서 사용하는 경우 유용할 수 있습니다. 만약 include 접두사가 제공되면, include 접두사와 일치하는 설정 내의 경로만 입력값을 허용합니다. exclude 접두사가 제공되면, exclude 목록과 일치하는 경로는 입력값에서 필터링되어 제외됩니다. 경로가 includeexclude 접두사 모두에 일치하는 경우, exclude 접두사가 우선순위를 갖습니다. 앞선 예시에서 ["trainer.private"] 경로는 trainer 오브젝트에서 private 키를 필터링하여 제외하고, ["trainer"] 경로는 trainer 오브젝트 아래에 있지 않은 모든 키를 필터링하여 제외합니다.
이름에 .이 포함된 키를 필터링하려면 \로 이스케이프된 .을 사용하세요.예를 들어, r"trainer\.private"trainer 오브젝트 아래의 private 키가 아니라 trainer.private라는 이름의 키를 필터링합니다.위의 r 접두사는 raw string을 의미합니다.
위의 코드가 패키징되어 job으로 실행되면, job의 입력 유형은 다음과 같습니다:
{
    "trainer": {
        "learning_rate": "float",
        "batch_size": "int",
        "model": "str",
        "dataset": "str",
    },
}
W&B CLI 또는 UI에서 job을 런칭할 때, 사용자는 오직 네 개의 trainer 파라미터만 오버라이드할 수 있습니다.

run config 입력값 액세스

run config 입력값과 함께 런칭된 jobs는 Run.config를 통해 입력값에 액세스할 수 있습니다. job 코드의 wandb.init에서 반환된 Run에는 입력값이 자동으로 설정됩니다.
from wandb.sdk import launch

run_config_overrides = launch.load_wandb_config()
를 사용하여 job 코드의 어디에서나 run config 입력값을 로드할 수 있습니다.

파일 재설정

Launch SDK는 job 코드의 설정 파일에 저장된 입력값을 관리하는 방법도 제공합니다. 이는 torchtune 예시나 Axolotl config와 같이 많은 딥러닝 및 대규모 언어 모델 유스 케이스에서 흔히 사용되는 패턴입니다.
Sweeps on Launch는 설정 파일 입력값을 sweep 파라미터로 사용하는 것을 지원하지 않습니다. Sweep 파라미터는 Run.config 오브젝트를 통해 제어되어야 합니다.
launch.manage_config_file 함수를 사용하여 설정 파일을 Launch job의 입력으로 추가하면, job을 런칭할 때 설정 파일 내의 값을 편집할 수 있는 권한을 얻게 됩니다. 기본적으로 launch.manage_config_file이 사용되면 run config 입력값은 캡처되지 않습니다. launch.manage_wandb_config를 호출하면 이 행동을 오버라이드합니다. 다음 예시를 살펴보세요:
import yaml
import wandb
from wandb.sdk import launch

# launch sdk 사용을 위해 필요합니다.
wandb.require("core")

launch.manage_config_file("config.yaml")

with open("config.yaml", "r") as f:
    config = yaml.safe_load(f)

with wandb.init(config=config):
    # 기타 코드
    pass
이 코드가 인접한 config.yaml 파일과 함께 실행된다고 가정해 봅시다:
learning_rate: 0.01
batch_size: 32
model: resnet
dataset: cifar10
launch.manage_config_file 호출은 config.yaml 파일을 job의 입력으로 추가하여 W&B CLI 또는 UI에서 런칭할 때 재설정 가능하게 만듭니다. includeexclude 키워드 인수를 사용하여 launch.manage_wandb_config와 동일한 방식으로 설정 파일에 대해 허용 가능한 입력 키를 필터링할 수 있습니다.

설정 파일 입력값 액세스

Launch에 의해 생성된 run에서 launch.manage_config_file이 호출되면, launch는 설정 파일의 내용을 입력값으로 패치합니다. 패치된 설정 파일은 job 환경에서 사용할 수 있습니다.
입력값이 확실히 사용되도록 하려면 job 코드에서 설정 파일을 읽기 전에 launch.manage_config_file을 호출하세요.

job의 launch drawer UI 커스터마이징

job 입력값에 대한 스키마를 정의하면 job을 런칭하기 위한 커스텀 UI를 생성할 수 있습니다. job의 스키마를 정의하려면 launch.manage_wandb_config 또는 launch.manage_config_file 호출에 이를 포함하세요. 스키마는 JSON Schema 형식의 python 사전이거나 Pydantic 모델 클래스일 수 있습니다.
job 입력값 스키마는 입력값을 검증하는 데 사용되지 않습니다. 오직 launch drawer의 UI를 정의하는 데만 사용됩니다.
다음 예시는 아래 속성을 가진 스키마를 보여줍니다:
  • seed: 정수
  • trainer: 몇 가지 키가 지정된 사전:
    • trainer.learning_rate: 0보다 커야 하는 부동 소수점 수
    • trainer.batch_size: 16, 64 또는 256 중 하나여야 하는 정수
    • trainer.dataset: cifar10 또는 cifar100 중 하나여야 하는 문자열
schema = {
    "type": "object",
    "properties": {
        "seed": {
          "type": "integer"
        }
        "trainer": {
            "type": "object",
            "properties": {
                "learning_rate": {
                    "type": "number",
                    "description": "모델의 학습률 (Learning rate)",
                    "exclusiveMinimum": 0,
                },
                "batch_size": {
                    "type": "integer",
                    "description": "배치당 샘플 수",
                    "enum": [16, 64, 256]
                },
                "dataset": {
                    "type": "string",
                    "description": "사용할 데이터셋 이름",
                    "enum": ["cifar10", "cifar100"]
                }
            }
        }
    }
}

launch.manage_wandb_config(
    include=["seed", "trainer"], 
    exclude=["trainer.private"],
    schema=schema,
)
일반적으로 다음과 같은 JSON Schema 속성이 지원됩니다:
속성필수 여부비고
typenumber, integer, string, object 중 하나여야 함
title아니요속성의 표시 이름을 오버라이드함
description아니요속성에 대한 도움말 텍스트를 제공함
enum아니요자유 형식 텍스트 입력 대신 드롭다운 선택 메뉴를 생성함
minimum아니요typenumber 또는 integer인 경우에만 허용됨
maximum아니요typenumber 또는 integer인 경우에만 허용됨
exclusiveMinimum아니요typenumber 또는 integer인 경우에만 허용됨
exclusiveMaximum아니요typenumber 또는 integer인 경우에만 허용됨
properties아니요typeobject인 경우, 중첩된 설정을 정의하는 데 사용됨
job 입력 스키마를 추가하면 launch drawer에 구조화된 양식이 생성되어 job을 더 쉽게 런칭할 수 있습니다.
Job 입력 스키마 양식