Yaml Training

Yamlで学習内容を記述して学習する方法となります。

1. Yaml format

# --- EnvConfigの内容を記載します。(keyは[env, envs]のどちらか)
# id にenvのIDを記載(必須)
# その他オプションは必要に応じて記載(※1)
env:
  id: Grid

# --- RLConfigの内容を記載します。(keyは[rl,algorithm,algorithms]のどれか)
# _target_ にアルゴリズムのConfigへのパスを記載(必須)
# その他オプションは必要に応じて記載(※2)
rl:
  _target_: srl.algorithms.ql.Config

# --- 学習内容を記載します。(keyは[runner,runners,context,contexts]のどれか)
# play_mode に学習内容を、追加で学習条件を記載(必須)
# その他オプションは必要に応じて記載(※3)
context:
  play_mode: train  # Literal["train", "train_mp", "rollout", "train_only", "evaluate"]
  max_train_count: 10000
※1 envに設定できる項目はこちら EnvConfig
※2 RLConfigに共通で設定できる項目はこちら RLConfig、それ以外は各アルゴリズムを参照
※3 Contextに設定できる項目はこちら Context

2. Run

yamlファイルをloadして実行する例です。

yaml_training.yaml
env:
  id: Grid
rl:
  _target_: srl.algorithms.ql.Config

context: 
  play_mode: train
  max_train_count: 10000
yaml_training.py
import os

import srl

yaml_path = os.path.join(os.path.dirname(__file__), "yaml_training.yaml")

# yamlファイルから読み込む
runner = srl.load(yaml_path)

# loadした設定情報を表示
runner.summary(show_changed_only=True)

# yamlに設定されている内容で実行する
runner.play()

# 結果の簡易評価
print(runner.evaluate())

3. hydra

設定管理ライブラリの hydra(https://hydra.cc/) から作られた設定や OmegaConf(https://github.com/omry/omegaconf) からでもロードできます。 コード例は以下です。

import hydra
from omegaconf import OmegaConf

import srl


@hydra.main(version_base=None, config_path=".", config_name="yaml_training")
def main(cfg):
    OmegaConf.resolve(cfg)

    # dict形式からrunnerを作成
    runner = srl.load(cfg)

    # loadした設定情報を表示
    runner.summary(show_changed_only=True)

    # 設定されている内容で実行する
    runner.play()

    # 結果の簡易評価
    print(runner.evaluate())


if __name__ == "__main__":
    main()
その他のサンプルは以下の examples を見てください。
- examples/sample_template
- examples/sample_template_adv

また、yamlのサンプルは configs フォルダ配下を見てください。