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

Run 객체 재구성하기

작업에서 wandb.init이 반환하는 Run 객체는 기본적으로 재구성할 수 있습니다. Launch SDK는 작업을 시작할 때 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 객체의 입력값을 받도록 설정합니다. 선택적 includeexclude 옵션은 중첩된 설정 객체 내 경로 접두사를 받습니다. 예를 들어, 작업에서 사용하는 라이브러리의 옵션 중 최종 사용자에게 노출하고 싶지 않은 항목이 있을 때 유용합니다. include 접두사가 제공되면 설정에서 include 접두사와 일치하는 경로만 입력값을 받을 수 있습니다. exclude 접두사가 제공되면 exclude 목록과 일치하는 경로는 입력값에서 제외됩니다. 경로가 includeexclude 접두사 모두와 일치하면 exclude 접두사가 우선 적용됩니다. 앞선 예제에서 ["trainer.private"] 경로는 trainer 객체의 private 키를 필터링하고, ["trainer"] 경로는 trainer 객체 아래에 있지 않은 모든 키를 필터링합니다.
이름에 .이 포함된 키를 필터링하려면 . 앞에 \를 붙여 이스케이프해서 사용하세요.예를 들어, r"trainer\.private"trainer 객체 아래의 private 키가 아니라 trainer.private 키를 필터링합니다.위의 r 접두사는 raw string을 의미합니다.
위 코드를 패키징해 작업으로 실행하면 작업의 입력 유형은 다음과 같습니다.
{
    "trainer": {
        "learning_rate": "float",
        "batch_size": "int",
        "model": "str",
        "dataset": "str",
    },
}
W&B CLI 또는 UI에서 작업을 실행할 때 사용자는 trainer 매개변수 4개만 재정의할 수 있습니다.

run config 입력값에 액세스하기

run config 입력값으로 실행된 작업은 Run.config를 통해 입력값에 액세스할 수 있습니다. 작업 코드에서 wandb.init이 반환하는 Run에는 입력값이 자동으로 설정됩니다. 다음을 사용하세요
from wandb.sdk import launch

run_config_overrides = launch.load_wandb_config()
작업 코드 어디에서나 run config 입력값을 불러올 수 있습니다.

파일 재구성하기

Launch SDK는 작업 코드의 설정 파일에 저장된 입력 값을 관리하는 방법도 제공합니다. 이는 많은 딥러닝 및 대규모 언어 모델 사용 사례에서 흔히 쓰이는 패턴이며, torchtune 예제나 Axolotl config에서 확인할 수 있습니다.
Launch의 Sweeps는 설정 파일 입력을 sweep 파라미터로 사용하는 기능을 지원하지 않습니다. sweep 파라미터는 Run.config 객체를 통해 제어해야 합니다.
launch.manage_config_file 함수는 설정 파일을 Launch 작업의 입력으로 추가하는 데 사용할 수 있습니다. 이렇게 하면 작업을 시작할 때 설정 파일 내의 값을 수정할 수 있습니다. 기본적으로 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 파일을 작업의 입력으로 추가하므로, W&B CLI 또는 UI에서 실행할 때 재구성할 수 있게 됩니다. includeexclude 키워드 인수는 launch.manage_wandb_config와 같은 방식으로 설정 파일에서 허용되는 입력 키를 필터링하는 데 사용할 수 있습니다.

설정 파일 입력값에 액세스

Launch에서 생성된 run에서 launch.manage_config_file이 호출되면 launch가 입력값을 사용해 설정 파일 내용을 패치합니다. 패치된 설정 파일은 작업 환경에서 사용할 수 있습니다.
입력값이 반영되도록 작업 코드에서 설정 파일을 읽기 전에 launch.manage_config_file을 호출하세요.

작업의 Launch drawer UI 맞춤 설정

작업 입력용 스키마를 정의하면 작업을 시작할 때 사용할 맞춤형 UI를 만들 수 있습니다. 작업 스키마를 정의하려면 launch.manage_wandb_config 또는 launch.manage_config_file call에 스키마를 포함하세요. 스키마는 JSON Schema 형태의 Python dict이거나 Pydantic 모델 클래스일 수 있습니다.
작업 입력 스키마는 입력값 검증에는 사용되지 않습니다. 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 of the model",
                    "exclusiveMinimum": 0,
                },
                "batch_size": {
                    "type": "integer",
                    "description": "Number of samples per batch",
                    "enum": [16, 64, 256]
                },
                "dataset": {
                    "type": "string",
                    "description": "Name of the dataset to use",
                    "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이면 중첩된 설정을 정의하는 데 사용됩니다
작업 입력 스키마를 추가하면 Launch drawer에 구조화된 양식이 생성되어 작업을 더 쉽게 시작할 수 있습니다.
작업 입력 스키마 양식