目次
はじめに
Goolgleのベイズ統計、機械学習の研究者である
Dustin Tran氏が下記のような面白いブログ記事を上げていたので、
そのメモです。
メモ
Googleの機械学習エンジニアにによるエンジニアリングのやり方。研究に使うツールを紹介していて面白い。 https://t.co/IrPU3t34Wx
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
ちょっと内容をメモしてみる。まず初めに何を解くべきかを考える。そのために研究のアイデアをまとめる一枚の文章を作る。そこにはもっと深く考えるべきアイデアのリストがまとめられる。そしてこのリストは世間へのインパクトの大きさの順番でソートしておく。
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
この文書のアップデートを毎日実施して、アイデアリストを日々の勉強の結果に応じて更新し続けることが重要。また、このリストは一つの場所にまとめ、同じフォーマットで記述し続けることが重要。
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
論文の管理の仕方。良い研究には大量の論文をよむことが重要。これには色々試したが、Papers appが一番良い。 論文管理として重要なのは、リポジトリが一つで複数のデバイスで同期されること。また、このアプリはPDFが読みやすい。この人は細かくタグを付けるのが好きらしい。https://t.co/OP8AKPzD05
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
プロジェクトの管理の仕方。彼は研究に関するものをまとめてGithubで管理している。コードだけでなく、ミーティングのメモや、ホワイトボードの写真、論文も一つにまとめている。リポジトリの構成はスクショの通り、READMEには、TODOをまとめる。 pic.twitter.com/Xg50MPco06
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
docには、各学会毎に論文のtexをいれる。texファイルは各章毎に分けた方が、コンフリクトが起きずに複数人で編集しやすい。etcには他の場所に入らない、ホワイトボートの写真やミーティングのメモ、マークダウンのアイディアノートなどを入れる。
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
srcにはコードを入れるが、直下には直接実行可能なファイルのみ置いて、ライブラリやユーティリティはcodebaseの下に置く。
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
コードの書き方。この人はPython 確率モデリングツール Edward を使ってコードを書いている。 コードの再利用性を高めるために、コードpep8に準拠し、共通利用するクラスや関数は出来るだけ個別のファイルにして、codebaseの下に置くようにする。https://t.co/affWs8DyvJ
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
Jupyter notebookは上手くワークフローに組み込めてないらしい。(めっちゃわかる。。)
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
実験の管理。処理にはクラウドを使う。これにより並列的に処理を実行して、効率的にテストできる。ローカルでスクリプトが出来たら、1. rsyncでクラウドサーバーにリポジトリのコードを全部コピー 2. sshでサーバーにログイン 3 tmuxてスクリプトを起動。デタッチすれば処理中に他のことが出来る
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
ハイパーパラメータが必要なスクリプトは、argparseを使ってスクリプトの引数で指定出来るようにする。実験の結果の管理は、checkpoint/に処理途中の結果をタイムスタンプ付きのディレクトリに保存する。これはデータを見て、途中で処理を止めるため。log/の下には学習結果の可視化用のデータを保存。
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
out/には、グラフなどを置く。サブディレクトリの名前はout/ checkpoint/ log/ で同じにする。解析用の元のデータは複数のプロジェクトで使うかもなので、~/dataに置く。virtualenvを使ってライブラリの依存関係は管理する。
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
学習結果の確認にはTensorboardが良い。最後に実験は独立的なものものではない。実験をしながら、他の研究者と議論したり、論文を読むことで深く問題を理解できる。 https://t.co/pJmKMAt3zV
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
この人のlatexのテンプレートはここにある。https://t.co/J86GoXLTnG
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
これでメモツイート終わり。すごく面白かった。 ブログにアーカイブしよう。個人的TODO papersを使ってみる。 リポジトリの構成を真似る。 latexのテンプレートを使ってみる。
— Atsushi Sakai (@Atsushi_twi) 2018年3月11日
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。