Upgrade to Pro — share decks privately, control downloads, hide ads and more …

configのすゝめ

230

 configのすゝめ

Yuma Ochi (chizuchizu)

March 23, 2021
Tweet

Transcript

  1. 再現性 IS ALL YOU NEED 実験をして結果を比較したとき、必要なパラメータがわからないと 再現がとれません。seed値含めて再現とれないモデルは危険です。 たくさんの手法を実験するとき、コードの大幅な手直しが求められ ることがあります。抽象的なコードを書き、具体的なものはconfig として与えることでその手直しがより楽に済むことがあります。

    実行環境が変わるとき、パスで詰みませんか。また、コードを人と 共有したとき、何を変更したら良いかわかるようにしたいですよ ね。configだけの変更で済めば頭を使う必要がなくなります。 C O N F I G の す ゝ め 02 再 現 性 汎 用 性 読 み や す さ config管理の必要性
  2. 選択肢 C O N F I G の す ゝ

    め 03 “config”としての書き方 - dataclass - OmegaConf(今回紹介する) その都度保存すれば良いので再現性確保 にはもってこい    アリ ベタ書き - hydra - OmegaConf 外部ファイルを操作する必要有り コードとconfigを完全分離させるのはと ても賢い    アリ(紹介するライブラリではこ っちでも書けるので今回は割愛) YAML 01 02 03 引数で - argparse - absl 論文実装とかは大体これ IDE使う人間にとってはやめてほしい 以外の感情がない   今回は扱わない
  3. C O N F I G の す ゝ め

    dataclassのような使い勝手、また色々な入力(引数、文字列、辞書型、リスト)を受け付ける 拡張性が高い YAML形式→簡単アクセス 05
  4. 07 C O N F I G の す ゝ

    め HASATTR / GETATTR 辞書型のGET KEY POINT 実装例 →↑↑↑↑ 関数もconfig
  5. G E T A T T R H A S

    A T T R 割と便利かもしれない 01 02 x.foobarとgetattr(x, "foobar")は同義で、その関数の戻り値が返される。 引数を渡したい場合にはgetattr(x, "foobar")(hoge=True)のようにすればOK! そもそも関数が存在しなければAttirbuteError getattr(x, "foobar")でAttributeErrorになればFalse、それ以外ならTrue → 存在するか否か 組み込み関数の補足 C O N F I G の す ゝ め 08
  6. O m e g a C o n f を

    使 お う 抽 象 的 な コ ー ド を 書 く で き る も の は す べ て C O N F I G 管 理 他 人 が 使 う こ と を 考 え て 01 03 02 04 使い勝手が良いです。十分な機能かつ必要最低限。 必然的に良いコードが書けるようになるらしい (らしい) 引数がconfigのみで済むから綺麗に書けるよね感はある 実験が円滑に進みます。再現性も担保されます。 汚いコードが必然的になくなるらしい(らしい) 今日のまとめ C O N F I G の す ゝ め 16
  7. カ レ ン ト デ ィ レ ク ト リ

    が 移 動 さ れ る 無 駄 に 保 存 し た が る 気 付 い た 、 こ れ 中 身 の O m e g a C o n f で 十 分 ? ? 01 02 03 パスが通らなくて毎回毎回意識する必要があって頭が疲れる。 実験管理ライブラリでconfigの中身を全てuploadしているので保 存する必要が無いのにたくさんフォルダ作って保存されるのに嫌 気が差した。 上の理由は設定とかで何とかなるはずですが、結局Hydraにだけ ある機能を全く使わないことがわかったので中で動いてる OmegaConfだけで良くない???っていう結論に至りました。 hydraを やめた理由 C O N F I G の す ゝ め 10
  8. C O N F I G の す ゝ め

    何か質問があればSLACK, TWITTERで受け付けてます! 最後に