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
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 フォルダ配下を見てください。