メインコンテンツまでスキップ

Ray Tune

W&Bは、軽量な2つの統合を提供することでRayと統合します。

1つ目はWandbLoggerで、Tuneに報告されたメトリクスをWandb APIに自動的にログします。もう1つは@wandb_mixinデコレータで、関数APIと一緒に使用できます。これにより、Tuneのトレーニング情報を用いてWandb APIが自動的に初期化されます。たとえば、wandb.log()を使用してトレーニングプロセスを記録するなど、通常どおりWandb APIを使用できます。

WandbLogger

from ray.tune.integration.wandb import WandbLogger

Wandbの設定は、tune.run()のconfigパラメータにwandbキーを渡すことで行われます(以下の例参照)。

wandb configエントリの内容は、キーワード引数としてwandb.init()に渡されます。ただし、以下の設定は、WandbLogger自体の設定に使用される例外です。

パラメータ

api_key_file (str)Wandb APIキーが含まれるファイルへのパス。

api_key (str) – Wandb APIキー。api_key_fileを設定する代わりに使用。

excludes (list)logから除外されるべきメトリクスのリスト。

log_config (bool) – 結果 dict の config パラメータがログに記録されるかどうかを示す真偽値。PopulationBasedTrainingのように、トレーニング中にパラメータが変更される場合などに役立ちます。デフォルトはFalseです。

from ray.tune.logger import DEFAULT_LOGGERS
from ray.tune.integration.wandb import WandbLogger

tune.run(
train_fn,
config={
# ここで検索空間を定義します
"parameter_1": tune.choice([1, 2, 3]),
"parameter_2": tune.choice([4, 5, 6]),
# wandb設定
"wandb": {
"project": "Optimization_Project",
"api_key_file": "/path/to/file",
"log_config": True,
},
},
loggers=DEFAULT_LOGGERS + (WandbLogger,),
)

wandb_mixin

ray.tune.integration.wandb.wandb_mixin(func)

このRay Tune Trainable mixinは、Trainableクラスや関数APIの@wandb_mixinとともに、Wandb APIを初期化するのに役立ちます。

基本的な使い方は、トレーニング関数の前に@wandb_mixinデコレータを付けるだけです:

from ray.tune.integration.wandb import wandb_mixin


@wandb_mixin
def train_fn(config):
wandb.log()

Wandbの設定は、wandb keytune.run()configパラメータに渡すことで行われます(下の例を参照してください)。

wandb設定エントリの内容は、wandb.init()にキーワード引数として渡されます。ただし、以下の設定はWandbTrainableMixin自体を設定するために使用されます。

パラメータ

api_key_file(str) – WandbのAPIキーが含まれるファイルへのパス。

api_key(str) – Wandb APIキー。api_key_fileを設定する代わりに。

Wandbのgrouprun_idrun_nameはTuneによって自動的に選択されますが、対応する設定値を記入することで上書きすることができます。

他の有効な設定設定については、こちらを参照してください。https://docs.wandb.com/library/init

例:

from ray import tune
from ray.tune.integration.wandb import wandb_mixin


@wandb_mixin
def train_fn(config):
for i in range(10):
loss = self.config["a"] + self.config["b"]
wandb.log({"loss": loss})
tune.report(loss=loss)


tune.run(
train_fn,
config={
# ここで検索範囲を定義する
"a": tune.choice([1, 2, 3]),
"b": tune.choice([4, 5, 6]),
# wandbの設定
"wandb": {"project": "Optimization_Project", "api_key_file": "/path/to/file"},
},
)

例示コード

以下は、統合の使い方を確認するために作成したいくつかの例です。

  • Colab: 統合を試す簡単なデモ。

  • ダッシュボード: この例から生成されたダッシュボードを表示します。

Was this page helpful?👍👎