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

configのすゝめ

240

 configのすゝめ

Yuma Ochi (chizuchizu)

March 23, 2021
Tweet

More Decks by Yuma Ochi (chizuchizu)

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で受け付けてます! 最後に