はじめに
先日、機械学習に取り組んでいるチームへの所属となりました。
大学で少し触れた経験があるだけのわたしは「Jupyter Notebook触ることになるんだろーなー 🤔 」と思っていました。
そこで、Jupyter Notebook環境として考えられるColabとVS Codeについて比較してみました。
Jupyter Notebookとは?
Jupyter Notebookは、データサイエンスなどの分野でよく使われる、プログラミングとその処理結果を同じ画面でイイ感じに表示してくれるツールです。
画面はこんな感じ↓
公式サイトの説明を引用すると、
Project Jupyterは、数十種類のプログラミング言語に対応した、インタラクティブ・コンピューティングのためのオープンソース・ソフトウェア、オープン・スタンダード、サービスを開発するために存在しています。(DeepL翻訳)
だそうです。
ちなみに、わたしはプログラミング言語にPythonを選定しています。
Jupyter Notebookのファイル(以下、.ipynbファイル)は、実体はJSONです。Python、Markdown、その他メタデータを含んでいます。このJSONが見づらく、また、実行した場合の結果も格納されるので、Gitと相性が悪いです 😱
素直にJupyter Notebookを使うなら、Jupyter Notebookサーバを自前で立ち上げることになると思います。が、特にメリットがなく、がっつり使っていくなら、後述するColabかVS Codeのどちらかだと思います。
実は、Jupyter Labという機能が増えた後継があるんですが、Jupyter NotebookとJupyter LabはどちらもJupyterプロジェクトが内包しているようなので、今回は違いを気にしないことにします。(現状、Jupyter Notebookサーバを立ち上げて使っていないので)
環境その1 Colab
Google Colaboratory(以下、Colab)は、Google Driveとの連携が容易な、Jupyter Notebookをベースにした開発環境です。
Googleが提供するColab用のサーバ上で動作するので、ローカルでJupyter Notebookの動作環境を用意するより導入が簡単です。無料で使用を始めることができます。用意しやすいので、いろいろな機械学習のチュートリアルがColab前提だったりします。
ColabアプリをGoogle Driveに追加すれば、Colabのノートブックを作成できるようになります。↓
Colabのノートブックを開くとこんな感じ↓
GitHubとの連携
Colabは、一応 GitHubと連携できます。編集した.ipynbファイルを、ブランチを指定してコミット & プッシュできます。ただ、コミットを追うなどはできず、あくまでも「コードの保存先としてGitHubを使う」程度の使い方しかできません。
環境その2 VS Code
.ipynb
VS Codeは.ipynbファイルをサポートしていて、自分でJupyter Notebookサーバを立ち上げずにJupyter Notebook環境を使うことができます。VS Codeを使うことで、Git関連やそれ以外の拡張機能の恩恵を受けることができ、DXが向上します 💪🏼
ただし、Colabと違いローカルマシンでの実行になるので、マシンパワーが要る処理の場合は、Colabの方が良いと思います。
VS Codeで.ipynbファイルを開くとこんな感じ↓
参考 : https://code.visualstudio.com/docs/datascience/jupyter-notebooks
.py
また、Pythonのファイル(以下、.pyファイル)をJupyter Notebookのように実行することもできます。# %%
というコメントを用いて、.pyファイルをJupyter Notebookのセルに分割し、セルごとに実行できます。Markdownセルなら、# %% [markdown]
です。
.pyファイルで扱うことで、差分が見やすくなり、Gitで管理しやすくなります。
実行結果が別ウインドウに表示されるなど、操作感はJupyter Notebookと少々異なります。
VS Codeで.pyファイルを開いて、実行するとこんな感じ↓
参考 : https://code.visualstudio.com/docs/python/jupyter-support-py
jupytext
jupytextは、.ipynbと.pyの変換をイイ感じにやってくれるライブラリです。
VS Codeの拡張機能としても提供されています。.pyファイルを、VS Codeが.ipynbファイルを開く場合と同じように、開くことができるようになります。まだPreviewなので、採用には注意が必要です。
その他の環境
がっつり機械学習プロジェクトを進める段階になると、Amazon SageMaker StudioやGoogle Cloud Notebookが視野に入ってくると思います。Amazon SageMaker Studioは、最近無料で使えるサブセットのAmazon SageMaker Studio Labが登場したので、試してみるのも良いかもです。
採用したのは…
わたしのチームでは、検討の結果「VS Codeで.pyファイルを扱う」で落ち着いています。もともとGit上での開発に親しんだメンバが多く、さらにVS Code愛用者のわたしが布教活動したからです。
ただ、開発マシンのスペックがとても良いわけではないので、今後重いタスクを実行しようとする場合、別の環境に乗り換える必要があるかもしれません。
おわりに
Jupyter Notebook初心者、とにかく試してみたい人 → Colab
VS Codeに慣れた人、Gitをフルで使いたい人 → VS Code
ではないでしょうか?
参考
- https://jupyter.org
- https://colab.research.google.com
- https://code.visualstudio.com/docs/datascience/jupyter-notebooks
- https://code.visualstudio.com/docs/python/jupyter-support-py
- https://github.com/mwouts/jupytext
- https://marketplace.visualstudio.com/items?itemName=donjayamanne.vscode-jupytext
- https://aws.amazon.com/jp/sagemaker/studio
- https://cloud.google.com/notebooks?hl=ja
- https://studiolab.sagemaker.aws
- https://aws.amazon.com/about-aws/whats-new/2021/12/amazon-sagemaker-studio-lab-no-configuration-ml-service
- Jupyter Notebookを出力を無視してgit管理する方法