見出し画像

研究に便利なツールまとめ2021

博士学生をしています。1年くらい前にも書いていたのですが、多少改善していると思います。

筆者の環境

ラップトップとしてMacBook Air,タブレット端末としてiPad Air+Apple Pencilを使っています.開発はこのmac上で、実際の計算は研究室他の計算サーバー上で行います.

論文を読む

去年同様Good Readerを使っています.Good ReaderはiPadからもmacからも使えるので,気分によってデバイスを変えて読んでいます.書き込むときはiPadが便利です.

画像1

昨年の記事を読むとMendeleyを使っていましたが,今はこれといった論文管理ツールは使っていません.bibファイルは感謝の気持ちを込めながら手で書いています.

論文を書く

去年同様TeXPadを使っています.特殊なパッケージを使っていなければタイピングと同時にタイプセット結果が見られるので捗ります.

画像2

共同で執筆するときにはOverleafが便利です.DropboxやGitHub連携もあるのでローカルの好きな環境で書いて,Overleafに反映させることもできますが,オンラインで編輯している人がいるとアジャパーになるので注意が必要です.

論文の図などはプレゼンテーションツールであるKeyNoteで描いています.KeyNoteの数式は気に入らないので,数式部分のみTex2Imgを使っています.

コードを書く

プログラミングはPythonが主なので相変わらずPyCharmを使っています.初期状態から気の利いた機能が使えるので助かります.ルール違反の指摘やコードの整理がしっかりしているので,あまり気にせずそこそこ綺麗なコードを書くことができます.たまにVSCodeも使っています.Vimと同じで拡張機能をちゃんと設定できれば便利だと思います.

研究で日々使うことになる言語やライブラリはドキュメントなどを熟読すると良いです.たとえばPythonは標準ライブラリが充実していて,色々なものが既に同梱されているので,標準ライブラリのドキュメントをあらかじめ読んでおくことで余計な実装の手間が省けます.

実験をする

複数のサーバーを利用しているのでmac上で開発を行い,以下のようにrsyncを使って現在使えるサーバーとプロジェクトのレポジトリを同期しています.この運用はD. Tran兄貴の記事に教わりました.

rsync -avz --delete --exclude-from $HOME/.rsync_exclude $PWD server:

.rsync_exclude には同期しないディレクトリ,ファイルを書いておきます.逆に計算サーバーが一つしかなければVSCodeのリモート編輯などを使うのも便利です.

画像3

プロジェクトのレポジトリはGitHubのテンプレートを使って同じディレクトリ構成になるようにしています.同じようなコードを2回以上書くと間違えるので,何度も使うコードはまとめてライブラリにしています.

実験結果を収集し可視化するのにはwandbを使っています.実験設定毎にまとめて,さまざまなグラフとして表示できるのでモデルの比較をするときや論文を執筆するときに助かります.もとの実験コードに1行足すだけでTensorboardへの出力を読み取ってくれるので,いつでも中止できるのも良いところです.他のツールの候補はここにまとまっています.

画像4

プロジェクト毎に仮想環境を切り分けるかDockerを使うことで再現性を(ある程度)担保できます.Pythonの仮想環境にはいくつか流儀があるようですが,私はPyTorchと相性の良いcondaを使っています.プロジェクトが増えると仮想環境や環境変数が増えますが,direnvを使うとプロジェクトディレクトリに移動するだけで自動的にプロジェクト固有のものを読み込んでくれて便利です.

実験が増えてくると計算を順次行って欲しくなります.最も簡単なのは実行したいジョブをあらかじめshell scriptに連ねて実行することですが,一度実行したら追加できません.最近はpueueというツールを使っていて,これはジョブをキューに積んでおくと順次実行してくれます.ジョブを投げたときの環境変数やカレントディレクトリを使ってくれるのも便利なポイントです.

巨大なデータセットのダウンロードや重みなどのバックアップにはrcloneを利用して,研究室のGoogle Driveにコピーしています.rcloneはrsyncのようなコマンドでGoogle DriveやDropboxとのファイル共有が可能です.

rclone copy -v remote:datasets/imagenet.tar .
rclone copy -v project_dir remote:project_dir

情報の管理

最近はnotionを使っています.表やカレンダーも扱えるので,予算の管理やミーティングの資料,記録にも使えます.数式も扱えるので,簡単な文書を書くのにも向いています.

画像5

そのほか

The Missing Semester of Your CS Education: 基本的なツールの使い方がまとまっています

情報系研究者のためのtips 2019年度版: 実験設定の書き方など参考にしています.

心の疲れをとる技術: オンラインだと特に研究しすぎてしまったり,逆に研究していないのではないかと不安になるわけですがそういうときに読みます.あんまり読みやすくはないです.

学生はGitHubやPyCharmを無料で使うことができます.また,Google Driveは研究室のアカウントを作ると無制限に使うことができます.


この記事が気に入ったらサポートをしてみませんか?