More Related Content
Similar to cvpaper.challenge 研究効率化 Tips (20)
cvpaper.challenge 研究効率化 Tips
- 2. cvpaper.challengeの概要
2
● ⽇本のCV分野を強くするチャレンジ︕
u論⽂読破・まとめ・発想・議論・実装・論⽂執筆に⾄るまで取り組む
Member List: 現在50+
名
(産総研/筑波⼤/電⼤/早⼤/慶⼤/東⼤等)
年間1,000+本/合計4,000+本の論⽂まとめ
全てWeb上にて無料公開
15+本のTOP会議論⽂採択
含CVPRx2/ICRA/BMVC/ICCVW/CVPRW/ECCVW/ICPRx2
CVPR 2015/2018 完全読破チャレンジ
ECCV 2018 網羅的サーベイ
cvpaper.challengeの研究プロジェクト
サーベイ・研究をより⾼い⽔準で組織化
⼈を⾒ない⼈物⾏動認識
ECCV16WS Award
ViEW16若⼿奨励賞
Dynamic Fashion Cultures
MIRU17学⽣奨励賞
# イメージ図
NIDB
Near-Miss Incident DB
交通事故解析/予測
ICRA18/CVPR18
3D-ResNets-PyTorch
CVPR18/GitHub世界4位
〜集合知を発揮しやすい環境に〜
その他多数のProj.が推進中
多読/精読により知⾒獲得
学⽣のトップ会議投稿&参加
網羅的動向把握からテーマ考案
- 18. ABCIの場合
● 一般的なログイン方法
○ まずは以下のコマンドを入力
○ 次に別のターミナルを開いて以下のコマンドを入力
● 長い入力を2回も求められる & 2窓必要
$ ssh -i /path/identity_file -L 10022:es:22 -l username as.abci.ai
Enter passphrase for key '/path/identity_file': <- パスフレーズ入力
$ ssh -i /path/identity_file -p 10022 -l username localhost
Enter passphrase for key '-i /path/identity_file': <- パスフレーズ入力
- 21. キーの割り当てを変更する
● 無変換 / 変換 → 英数 / かな or BackSpace / Enter
○ 英数 / かな: 素早く英語と日本語の入力変更
(macの日本語配列では標準?)
○ BackSpace / Enter: 右手小指が楽
- 26. 自動化できること① Shell Script
● 学習が終了したら次を実行する
● 並列で学習を行う
● データの前処理方法を記載
● 実験の経過が保存できる
(再現性を担保できる)
便利コマンド
jq (JSON のパース)
nohup (バックグラウンドで実行)
- 34. 青木研のサーバー (高橋)
● 計算用サーバ
○ メンバーの数だけdockerのコンテナを用意しているため,自由に環境構
築が可能!
○ Django アプリによるGPU consoleで,誰がどのGPUを使用しているか
一目でわかる→便利&研究モチベUP
- 37. ⽬次
1. 効率よく実験を回す
- argparse x yaml x dataclass
2. 綺麗なコードを書く
- formatting (black / isort)
- 循環的複雑度 / 認知的複雑度
- pre-commit / flake8 について
37
- 38. 深層学習の実験では…
• ハイパーパラメータが多い
例) 学習率, ネットワーク構造,重み
• Ablation Study が必要となる場合
⼿法のどこが有⽤であったかの検証
例) ⼿法A,⼿法B,⼿法Cの三つを組み合わせた⼿法を提案
38
(A, B, C)
(A, B)
(B, C)
(A, C)
(A)
(B)
(C)
これらの⽐較
が⾒たい
- 53. argparse × yaml file
必要なパラメータの情報を .yaml file に書き込み
argparse によってそのyaml ファイルを指定する
53
config.yam
l
※ json file でもいいと思いま
す
- 54. argparse × yaml file のいい点
• コマンドライン引数がスッキリ
• パラメータの保存も簡単
• 結果を yaml fileと同じディレクトリに保存するようにすれば
パラメータと結果の管理も簡単
• ⾃動的に yaml file を作ることも可能
54
- 55. .yaml file の作り⽅
• key: value の形でファイルに記述する
• value の型は⾃動で判別してくれる
• コメントは無視される
• (ネストもできる)
• python上でyaml file を読み込むと
辞書型として扱われる
55
- 58. argparse × yaml × addict のダメな点
• 設定を読み込んだ変数がミュータブル
• 型が所望のものかどうかを確認をしてくれない
• 設定の過不⾜を検出できない
• (addictだと) 存在しないキーも参照できてしまう
• (addictを⽤いると)外部パッケージに依存
58
- 61. argparse × yaml × dataclass の良い点
• 設定を読み込んだ変数がイミュータブル
• 型の確認ができる
• 必要な変数が⼀⽬瞭然
• 設定の過不⾜を検出できる
• 外部パッケージに依存しない
61
⾃分の実装:
https://github.com/yiskw713/pytorch_template/blob/master/src/libs/config.py
configの⾃動⽣成の実装もあります.
https://github.com/yiskw713/pytorch_template/blob/master/src/utils/make_config
s.py
- 65. 実験結果の管理⽅法
• 紙媒体
- めんどくさい
- ヒューマンエラー
• csv とかに書き込む
- ⼀番シンプル︖
- 可視化とかが地味にめんどくさい
• tensorboard
- ⼀発で可視化してくれる
- いちいちリモートサーバーに⾏かないといけない
- 重い
- events.out.tfevents.* ファイルが邪魔
65
- 67. Weights and Biases (W&B)
• web上に実験結果を保存できるサービス
• 個⼈利⽤・アカデミック利⽤は200GB?まで無料
• 実際の学習ログを⾒せます
67
https://www.wandb.com
/
- 68. W&Bでできること
• 実験ログの記録
- 画像や⾳声,動画,点群なんかにも対応
- 後からのダウンロードも可能
• 引数の⼀括管理 (辞書ライクなオブジェクトならOK)
• 実験設定ごとの⽐較,ハイパラの⽐較,影響度や相関などの解析
• Github での commit ID の管理
• CPU や GPU の稼働率,メモリなどのモニタリング
• モデルの gradient の可視化,モデル⾃体の保存(ローカルのものが不要になる)
• terminal上の出⼒も確認できる
68
- 76. flake8で複雑度の⾃動算出
- 循環的複雑度
flake8 [python_script] --max-complexity 10
- 認知的複雑度
flake8-cognitive-complexity という拡張機能を使う
これらのformattingやflake8による複雑度の計算を
GitHubのコミット前に⾃動で⾏うことができます
76
⾃分の記事:
https://zenn.dev/yiskw713/articles/3c3b4022f3e3f22d27
6d
- 95. ● ディスカッション・ミーティング
○ 木曜・金曜に学生だけでディスカッションを行う
○ ディスカッションの内容を受け,土曜に先生とミーティング
● 係制度
○ 1人1つ「サーバ管理係」「ディスカッションスケジュール係」等の係を持つ
○ みんなで協力して円滑な研究室環境を整える(大人数ゆえにできる事?)
● 新B4向け春休み勉強会
○ 研究室での生活からPython/Pytorchの基礎,論文の読み方や数学まで
○ 新M1〜Dの学生が持ち回りで勉強会(講義)を行う
● 情報共有用Slack / Wiki
○ 研究室内部で活発な情報共有を促す
○ 先輩が中心になって積極的に発言・記事を執筆
研究効率化のためのMPRGの取り組み
- 100. ● よく行う動作を高速化する
○ ブラウジング,コーディング,基本的なPC操作など……
○ ツールやソフトも活用しよう(後述)
● ショートカットキーを使う
○ コピーペーストなど基本的なショートカットキー
○ (Macの場合)Ctrl+←↓↑→:Mission Control などなど……
● 便利なUnixコマンドを使う
○ タブ補完,コマンド履歴(言うまでもありませんが……)
○ dirs/pushd/popd などなど……
時短テクを使う
- 102. ● OSショートカットキー
○ Mac のキーボードショートカット
■ https://support.apple.com/ja-jp/HT201236
○ Ubuntu 18.04で使えるキーボードショートカット一覧
■ https://sicklylife.hatenablog.com/entry/2017/10/16/231442
● Unixコマンド・シェルなど
○ おすすめシェル時短テクニック&ツールまとめ
■ https://myenigma.hatenablog.com/entry/2015/06/23/220100
その他の時短テク
- 103. ● ある1日の予定:どっちが効率的?
10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00
進め方1
進め方2
コーディング 昼飯 Discussion資料作成 論文サーベイ 休憩 学習結果テスト 結果
まとめ
コンテナ立ち上げ Deep learning学習
Discussion資料作成 コーディング
コンテナ立ち上げ
昼飯 Deep learning学習
タスクの順番を考える
- 106. ● サーバに入れると便利なやつら
● screen
○ 端末の中に仮想端末を開く(1窓のみ)
○ sshで切断しても実行され続ける
○ tmuxやTerminatorが便利なのであまり使わない
● tmux
○ 端末多重化,1つの窓(Window)に複数の端末(Pane)を開ける
○ もちろんsshで中断しても実行され続ける
● Terminator
○ 端末多重化(tmuxと似ている)
おすすめツール2:仮想端末と端末多重化
- 113. ● 後輩の指導が困難に
○ 対面で指導できないぶん,Slack・音声ベースでやり取り
→ 毎週決まった時間に先輩後輩が話す時間を設けて漏れなく指導できるように
● 人によっては自宅で研究できない(incl. 荒木)
○ 自宅がうるさい,休憩モードになってしまう,体調が悪くなる etc……
○ 去年まではちゃんと研究できていたのに,今年に入ってから研究できなくなった人も
→ 入構制限が緩和されたため,感染対策に努めながら大学で研究
● 指導担当外の学生(特にB4)との面識がほとんどない
○ B4同士,先輩-B4があまり仲良くない
○ 名前を聞いても「誰だ……?」となる現象が起きている
→ オンラインイベントを催すも参加者が少なめで,直接的な解決にならず
オンライン化で発生した問題(と解決策)
- 175. cvpaper.challengeの研究体制
– 知識︓論⽂・Web・講演資料・サーベイテンプレート等から把握
– テーマ︓メンバー間の議論により洗練
– 進捗︓打ち合わせにより把握
– コミュニケーション︓ITツールで補助(e.g. Slack, Twitter)
– 論⽂︓多重チェックが重要,即ち早め(テーマ⽴案・実験と同時)に書く
GL1
JL1
Mem1M
・
・
HQ
GLN
JLN
MemNM
・
・
GLは投稿計画⽴案・進
捗確認・打合せ調整
JLは実装・実験のリード
メンバー間の密なコ
ミュニケーションに
より進捗促進
HQは全体の進捗確認
やサポート,戦略考案,
環境作りなど
機関内外で連携(相補的チェック・議論・サーベイ共有・勉強会・ハッカソン等)
・
・
・
Advisesr
Mem11
Advisesr
Adviserがサポート
MemN1
研究メンバー(約70名)
- 178. • サーベイ(概要/詳細レベル)
– 概要レベル︓網羅的サーベイ
– 詳細レベル︓研究グループ/個⼈単位で当該分野を担当
• メタサーベイなど
広い分野の論⽂を読んでからテーマ設定の幅が広がった
cvpaper.challengeの研究体制
研究メンバー(36名)
サーベイ
サーベイメンバー(500名超)
研究メンバー(約70名)
- 182. • アイディア考案(分割と統合)
– ブレストの並列化
• 12名集まったら4名3グループに分割
• 少⼈数分割により,全員が発⾔しやすくする
– 論⽂のみでなく,あらゆるトレンド,個⼈の知識や経験を活⽤
アイディアは「全員で」考える
cvpaper.challengeの研究体制
研究メンバー(36名)
サーベイ サマリ アイディア
サーベイメンバー(500名超)
研究メンバー(約70名)
- 183. • アイディア考案(再帰的な強化)
– 既出のアイディアに引⽤や追記
• スレッド形式でアイディアに対する議論
– いつどこでもブレストとアイディア強化
• ITツール(Slack)で管理している
アイディアは「常時」「全員」で考える
cvpaper.challengeの研究体制
研究メンバー(36名)
サーベイ サマリ アイディア
アイディアに引⽤,追記
2018年1〜4⽉までに「436」のアイデ
ィアを蓄積
サーベイメンバー(500名超)
研究メンバー(約70名)
- 186. • 論⽂執筆(全員で書く)
– 右図の通り
– (できれば)ひと⽉前には完成させ校正
(当然ですが)論⽂は共著者全員で作り上げる
研究メンバー(36名)
cvpaper.challengeの研究体制
サーベイ サマリ アイディア
テーマ
設定
実装
実験
論⽂
https://twitter.com/HirokatuKataoka/status/1058135009763053568
サーベイメンバー(500名超)
研究メンバー(約70名)
- 189. AIST研究職員として
• 研究時間を作るためのTips
– 睡眠は7時間⽬安
• これがベスト︖,短時間睡眠は何度もやったがNG
– メール/SNSを⾒るのは⼀⽇2〜3回に限定
• 11:30, 15:00, 18:30など
– 打ち合わせはできれば週の2〜3⽇にまとめる
• 予定の主導権を握る
– 集中して研究できる時間を(予定を⼊れられる前に)確保
• 最低限主著として研究できる時間/他の予定はブロック
– ToDo Listは紙に書いてデスクの上に置く
• 結局コレが良かった
- 192. メンターとして
• 産総研RA/筑波⼤連携研究室
– RAが論⽂の主著になれるようにサポート
• アシスタントという名⽬ではあるが,好きなことをやらせたい
• 年間1本Top-tier会議への投稿, 1年〜2年に1回はIF付き論⽂
– 研究テーマはなるべく興味を持てるものを選定
• 相談しながら決める, 必要ならこちらでテーマを⽤意
– ⽉1で1-on-1(対⾯), 週1以上進捗報告(Slack)
• 希望があればいつでもOK, コミュニケーションは密にしたい
– 研究リソース確保(ノートPC1⼈/台, スパコン使⽤権)
• スパコン使⽤は現状プロジェクトに依存ホントは全員⾃由に使えるようにしたい
– 出勤/事務⼿続きなど情報共有は全員で共有
• Slackのチャンネルにて管理
- 194. 予算代表として
• 申請書執筆のTips
– ストーリー重視 & 実⾏⼒アピール
• 如何に「凄そう」なテーマを「絶対実現可能」か端的に説明
– 何度も書き直す
• 過去の申請書を⾒返すとver. 10〜20くらい
– 熟練者に⾒てもらう
• 書く前のストーリーから最終版の校正まで
– 予備実験の結果を載せる
• 既に研究してることを載せる,ストーリーを書く際にも想像が膨らむ
– 少しでも問題設定が優れた研究をする(正論)
• 私も何か良い⽅法知りたいです︕
–