Open1

研究お役立ちまとめ(初めてのサーバー計算編)

T_TseiT_Tsei

サーバーで計算するにあたって

jupyter notebook / lab を乱用しない!

世にあまたある機械学習、深層学習、データサイエンス書籍や関連講座のほとんどでjupyter notebookでのプログラム実行が行われているためか、.py ファイルの実行・活用ができないパターンが観測される。jupyter notebookは便利なツールだが、万能ではないので注意が必要である。くれぐれも、このjupyter notebookを実行したらデータの前処理、モデルのハイパラ探索、テストデータの結果・可視化までできるゼ!という最強notebookを作らないように。

jupyter notebook で避けるべきこと

・機械学習モデルの学習
モデルの学習時には多くのハイパーパラメータを調整する場合がほとんどである。grid searchで探索するにしろ、optunaで探索するにしろ、探索に時間がかかることが多い。通常、サーバー上で立ち上げたjupyter notebookはssh接続が切れた瞬間に計算が途中終了するが、これが問題となる。中にはパソコンをスリープさせず、計算が終了するまで放置するというパターンがあるようだが、ノートパソコンの場合寿命を縮めるばかりか、持ち運びできるという最大のメリットが失われており明らかにダメな解決策である。

nohup / screen を使おう
ssh接続が切れても計算を続けられる方法としてnohupやscreenコマンドが存在する。notebookの該当処理を.pyファイルにそのまま記載し、nohupをつけて実行するとssh接続が切れてもサーバー上で計算は走り続ける。計算後に出来上がったものが保存されることは事前に確認しておくと良い。

https://atmarkit.itmedia.co.jp/ait/articles/1708/24/news022.html

https://qiita.com/hnishi/items/3190f2901f88e2594a5f

ただし、screenコマンドは使えないこともある。例えば、ubuntuサーバーだとscreenはデフォルトでは入っていない(はず)。

jupyter notebookが好ましい場合

コマンドの実行例とその結果の両方を共有する必要がある場合
書籍の付属サンプルコードにjupyter notebookが多いのはこれが理由であろう。研究の場合、グラフの可視化等も該当する。

明らかに試行錯誤が必要なとき
データの前処理、キュレーションなど、1つ前の実行結果を見て次の実行内容を考えたいときはjupyter notebookで行うのが向いているだろう。

https://qiita.com/surei/items/9f25d7efa7c67d55d98f

また、この「試行錯誤が容易」という点がデメリットともなることもお忘れなきよう。セルを上下しながら実行してしまうと、カーネルを再起動して上から通貫して実行した際に同じ結果が得られなくなってしまう。一通りコードが書けたらカーネルを再起動、上から順番に全て実行してみるという確認はやってみても良い。

Further Reading: jupyter使用の落とし穴について

https://scicomp.aalto.fi/scicomp/jupyter-pitfalls/