機械学習を勉強するときはIDEっぽいJupyterLabを使うと便利
いまお仕事の関係で、機械学習の教科書的な書籍を読んだりオンライン講座を受講したりしながらサンプルやチュートリアルを動かして勉強しています。
以前にこちらのエントリーで機械学習の『勉強環境』としてJupyterNotebook/Dockerを使っています、というチラシの裏紙っぽいエントリを書いたところ、「Dockerのスペルが違うじゃないか、いい加減にしろ」というフィードバックを頂きました。
が、最近「JupyterLab」なるものがあると知り、これがなかなか便利なのでいつも使っています。 ということで、機械学習の勉強環境を構築するためJupyterLabの動くDockerイメージを作ったので、簡単にご紹介です。
1.JupyterLabとは
JupyterLabはJupyter Notebookをベースに拡張したIDEで、ブラウザで動作します。
色々な機能がありますが、まずなによりもターミナルが同一画面で使えるのが便利です。Google Cloud ShellやAzure Cloud Shellにすっかり慣れてしまったゆとりなので、ありがたい。
また、タブで画面分割ができチュートリアルやお手本のサンプルコードと自分の書いたコードを見比べながらチェックできるので、勉強環境にはぴったりです。
JupyterLabの公式リポジトリはこちらです。
2. JupyterLabを使うには
このJupyterLabを使えるDockerイメージ「asashiho/ml-jupyterlab」をDockerHubで公開していますのでそれをもとに、次のコマンドで「ml-container」という名前のDockerコンテナを起動します。 Dockerのインストールは、こちらで簡単に紹介しています。
コマンドのpオプションは、コンテナで転送するポート番号を指定してます。 ここでは、JupyterLabが8888番ポートを使っています。
$ docker run -p 8888:8888 --name ml-container -it asashiho/ml-jupyterlab
コンテナは、[Ctrl]+[C]で停止できます。
また、バックグラウンドで動いている場合は、次のコマンドでコンテナを起動/停止できます。
$ docker container start ml-container $ docker container stop ml-container
コンテナは、次のコマンドで削除できます。
$ docker container rm ml-container
なお、コンテナを削除するとデータも消えますので、データを消したくないときは docker runコマンドでコンテナを起動するときに、Dockerのホストマシン(お使いのPCやクラウドインスタンス)をディレクトリをvオプションでマウントしてください。
Dockerコンテナが起動できたら、ブラウザから以下のアドレスにアクセスしてJupyterNotebookを使います。 アクセス先のURLは、docker runコマンドを実行したときのコンソールに表示されますので、パスに/labを追加してください。
クラウドのインスタンスの場合は、以下のアドレスでアクセスできます。
http://DockerホストのIPアドレス:8888/lab?token=<your token>
MacOSまたはWindowsPCのローカル環境の場合は、以下のアドレスでアクセスできます。
http://localhost:8888//lab?token=<your token>
こんな感じです。
3. 環境をカスタマイズしたくなったときは
Dockerイメージは「Dockerfile」という定義ベースのファイルで実行環境の構成を管理しています。
このファイルをカスタマイズし、Dockerfileをビルドすることで、任意のDockerイメージを作成できます。たとえば、Pythonのバージョンを変えたい、TensorFlowを最新にしたい、足りないライブラリがあった、など。
今回お試しで使ったDockerイメージのもとになるDockerfileをGithubで公開してますので、ご参考までに。
無理のない、よい機械学習の勉強ライフを。