はじめに
JupyterLabを使うとき、いろんな環境で使いたいなあなんて思ってました。そのために、DockerにJupyterLabを入れて起動していたのですが、そもそもJupyterのカーネルで、Dockerのカーネルを選択できれば便利ではないか?と思って、どうやればいいか調べてみました。
この設定をすることで、お好きなDockerイメージのカーネルでJupyterを起動できるようになります。自分用にまとめておこうと思ったのですがKaggleのGPUのDockerイメージのカーネルを追加してみたので、KagglerでDeepLearningをする人にもおすすめできそうだなあと思って、Qiitaに記事を書いておくことにしました。こんな感じでKaggleのイメージのカーネルを選べます!
実行環境
- Ubuntu: 20.04
- MacとかWindowsでも本質は同じだと思います
- Docker: 20.10.10
- JupyterLab: 3.2.3
- 多分JupyterNotebookだけでもいいはず。
- NVIDIAドライバ: 450.156.00
- GPUを使用しない場合は不要
- NVIDIA Container Toolkit: 1.5.1-1
- GPUを使用しない場合は不要
設定手順
Dockerのカーネルをjupyterに追加
まず、JupyterLabのインストール先を確認します。特に自分で指定していない場合は、~/.local/
以下のはずです。
インストール先の階層を辿っていくとkernelsというディレクトリがあるので、そこに作成したいカーネルごとにディレクトリを作成します。
cd JupyterLabのインストール先/share/jupyter/kernels
mkdir kaggle_v106
cd kaggle_v106
これでJupyterLabのインストール先/share/jupyter/kernels/kaggle_v106
というディレクトリが作成されて、作成したkaggle_v106
がカレントディレクトリとなっているはずです。kernel.json
というファイルを新規作成します。
touch kernel.json
そしたら、お好みのエディタでこのファイルを開いて、内容を以下の通りにしてください。
{
"argv": [
"/usr/bin/docker",
"run",
"--network=host",
"--gpus",
"all",
"-v",
"{connection_file}:/connection-spec",
"gcr.io/kaggle-gpu-images/python:v106",
"python",
"-m",
"ipykernel_launcher",
"-f",
"/connection-spec"
],
"display_name": "kaggle:v106",
"language": "python"
必要に応じて以下の変更を加えてください。
GPUを使用しない場合は次の記述は不要です。
"--gpus",
"all",
他のコンテナを使用したい場合は、次の記述を変更してください。ただしそのコンテナにはipythonとipykernelがインストールされている必要があります。
"gcr.io/kaggle-gpu-images/python:v106",
お好きな表示名に変えてください。
"display_name": "kaggle:v106",
アイコンを変える
カッコよくJupyter上の表示でアイコンを表示させたい人はlogo-32x32.png
とlogo-64x64.png
というロゴ画像ファイルを用意してください。解像度はそれぞれ32x32、64x64としてください。今回の例ではKaggleのアイコンを使用しています。
以上でJupyterから使えるようになってるはずです!
備考
jupyterlabを起動するユーザはdockerコマンドを使える必要があります。従ってdockerグループに属している必要があります。
さいごに
もっと詳しく書いてほしいとか、こうするにはどうしたらいいかとか要望がありましたらコメント頂けますと幸いです。最大限対応いたします!
参考
DockerでGPUを使う準備ができていない人へ
NVIDIAドライバやNVIDIA Container Toolkitをインストールしておいてください。