Run.config 全体をジョブの入力としてキャプチャしますが、Launch SDK は、実行設定の特定のキーを制御したり、JSON または YAML ファイルを入力として指定したりする機能を提供します。
Launch SDK の機能には
wandb-core が必要です。詳細は wandb-core README を参照してください。Run オブジェクトの再設定
ジョブ内の wandb.init によって返される Run オブジェクトは、デフォルトで再設定可能です。Launch SDK を使用すると、ジョブを起動する際に Run.config オブジェクトのどの部分を再設定可能にするかをカスタマイズできます。
launch.manage_wandb_config 関数は、Run.config オブジェクトの入力値を受け入れるようにジョブを設定します。オプションの include および exclude オプションは、ネストされた設定オブジェクト内のパスプレフィックスを受け取ります。これは、例えばジョブがライブラリを使用しており、そのオプションをエンドユーザーに公開したくない場合などに便利です。
include プレフィックスが提供されている場合、その include プレフィックスに一致する設定内のパスのみが入力値を受け入れます。exclude プレフィックスが提供されている場合、exclude リストに一致するパスは入力値から除外されます。パスが include と exclude の両方のプレフィックスに一致する場合、exclude プレフィックスが優先されます。
上記の例では、パス ["trainer.private"] は trainer オブジェクトから private キーを除外し、パス ["trainer"] は trainer オブジェクト配下以外のすべてのキーを除外します。
名前の中に
. を含むキーを除外するには、\ でエスケープした . を使用してください。例えば、r"trainer\.private" は trainer オブジェクト配下の private キーではなく、trainer.private という名前のキーを除外します。上記の r プレフィックスは raw 文字列を表します。trainer パラメータのみを上書きできます。
Run 設定入力へのアクセス
Run 設定入力を使用して起動されたジョブは、Run.config を通じて入力値にアクセスできます。ジョブコード内の wandb.init によって返される Run には、入力値が自動的に設定されます。ジョブコード内の任意の場所で Run 設定の入力値をロードするには、以下を使用します。
ファイルの再設定
Launch SDK は、ジョブコードの設定ファイルに保存されている入力値を管理する方法も提供します。これは、この torchtune の例や、この Axolotl 設定 のように、多くのディープラーニングや大規模言語モデルのユースケースで一般的なパターンです。Sweeps on Launch では、設定ファイルの入力を Sweeps パラメータとして使用することをサポートしていません。Sweeps パラメータは
Run.config オブジェクトを通じて制御する必要があります。launch.manage_config_file 関数を使用して、設定ファイルを Launch ジョブの入力として追加し、ジョブ起動時に設定ファイル内の値を編集できるようにすることができます。
デフォルトでは、launch.manage_config_file が使用されている場合、Run 設定入力はキャプチャされません。launch.manage_wandb_config を呼び出すことで、この振る舞いを上書きできます。
次の例を考えてみましょう。
config.yaml ファイルと共に実行されるとします。
launch.manage_config_file の呼び出しにより config.yaml ファイルがジョブの入力として追加され、W&B CLI または UI から起動する際に再設定可能になります。
include および exclude キーワード引数は、launch.manage_wandb_config と同様に、設定ファイルの受け入れ可能な入力キーをフィルタリングするために使用できます。
設定ファイル入力へのアクセス
Launch によって作成された Run でlaunch.manage_config_file が呼び出されると、launch は設定ファイルの内容を入力値でパッチします。パッチされた設定ファイルはジョブ環境で利用可能です。
ジョブの launch drawer UI のカスタマイズ
ジョブの入力にスキーマを定義することで、ジョブ起動用のカスタム UI を作成できます。ジョブのスキーマを定義するには、launch.manage_wandb_config または launch.manage_config_file の呼び出しにスキーマを含めます。スキーマは JSON Schema 形式の Python 辞書、または Pydantic モデルクラスのいずれかにできます。
- JSON schema
- Pydantic model
次の例は、以下のプロパティを持つスキーマを示しています。一般的に、以下の JSON Schema 属性がサポートされています。
seed: 整数trainer: 指定されたいくつかのキーを持つ辞書:trainer.learning_rate: 0 より大きい浮動小数点数trainer.batch_size: 16, 64, または 256 のいずれかである整数trainer.dataset:cifar10またはcifar100のいずれかである文字列
| 属性 | 必須 | 備考 |
|---|---|---|
type | はい | number, integer, string, object のいずれかである必要があります |
title | いいえ | プロパティの表示名を上書きします |
description | いいえ | プロパティのヘルプテキストを提供します |
enum | いいえ | 自由形式のテキスト入力の代わりにドロップダウン選択を作成します |
minimum | いいえ | type が number または integer の場合にのみ許可されます |
maximum | いいえ | type が number または integer の場合にのみ許可されます |
exclusiveMinimum | いいえ | type が number または integer の場合にのみ許可されます |
exclusiveMaximum | いいえ | type が number または integer の場合にのみ許可されます |
properties | いいえ | type が object の場合、ネストされた設定を定義するために使用されます |
