Stable Diffusionを使うようになって、Google ColabやSageMakerを利用してノートブックでプログラム作成をすることが多くなってきた。
少し前にディープラーニング開発をやっていた頃は、ローカルPC上でJupyter Notebookを使ってプログラムを作ることはよくやっていたが、しばらくこういうことはやっていなかった。
Stable Diffusionを利用した画像生成や再開するディープラーニング・機械学習開発でも使うことが多くなってくるので、改めてGPU搭載PCにJupyter Notebookをインストールしてローカルなノートブック開発環境構築した。
自分の備忘録も兼ねて、Jupyter Notebookのインストールと環境構築の方法を記事に書いておくことにする。
Jupyter Notebookには、初期の頃からのノートブック単独版と(IDE的拡張が追加されている)JupyterLab版の2つの種類がある。「Jupyter Notebook」で検索するとこの両方の情報が混在ヒットして、記載されているインストール手順が違っていたりする。この辺の事情が分かっていない人は混乱するんじゃないだろう。
本記事では、ノートブック単独版をJupyter Notebook、JupyterLab版をそのままJupyterLabと呼んで、この2つのインストール方法を分けて記載する。
Jupyter Notebookのインストール
Jupyter Notebookのインストール方法として、システム側に入れるのと、言語ツール環境に入れるのの2つの方法がある。後者の場合は、さらにグローバル環境または仮想環境に入れるのの2つの方法がある。
Jupyter Notebookをシステム側に入れる
$ sudo apt install python3-pip $ pip3 install jupyter notebook
% brew install jupyter
Jupyter Notebookを言語ツールのグローバル環境に入れる
pyenvを使っている場合
$ pyenv install 3.10.12 $ cd $ pyenv global 3.10.12 $ python --version Python 3.10.12 $ pip install jupyter notebook
asdfを使っている場合
$ asdf install python 3.10.12 $ cd $ asdf global python 3.10.12 $ python --version Python 3.10.12 $ pip install jupyter notebook
Jupyter Notebookを言語ツールの仮想環境に入れる
pyenvを使っている場合
$ mkdir PROJECT_DIR $ cd PROJECT_DIR $ pyenv local 3.10.12 $ python --version Python 3.10.12 $ pipenv --python 3.10 $ pipenv install jupyter notebook
asdfを使っている場合
$ mkdir PROJECT_DIR $ cd PROJECT_DIR $ asdf local python 3.10.12 $ python --version Python 3.10.12 $ pipenv --python 3.10 $ pipenv install jupyter notebook
JupyterLabのインストール
JupyterLabもインストール方法として、システム側、言語ツールのグローバル環境、言語ツールの仮想環境に入れるのの3つの方法がある。
JupyterLabをシステム側に入れる
$ sudo apt install python3-pip $ pip3 install jupyterlab
% brew install jupyterlab
JupyterLabを言語ツールのグローバル環境に入れる
pyenvを使っている場合
$ pyenv install 3.10.12 $ cd $ pyenv global 3.10.12 $ python --version Python 3.10.12 $ pip install jupyterlab
asdfを使っている場合
$ asdf install python 3.10.12 $ cd $ asdf global python 3.10.12 $ python --version Python 3.10.12 $ pip install jupyterlab
JupyterLabを言語ツールの仮想環境に入れる
pyenvを使っている場合
$ mkdir PROJECT_DIR $ cd PROJECT_DIR $ pyenv local 3.10.12 $ python --version Python 3.10.12 $ pipenv --python 3.10 $ pipenv install jupyterlab
asdfを使っている場合
$ mkdir PROJECT_DIR $ cd PROJECT_DIR $ asdf local python 3.10.12 $ python --version Python 3.10.12 $ pipenv --python 3.10 $ pipenv install jupyterlab
Jupyter Notebook/JupyterLabの起動実行
Jupyter Notebook
Jupyter Notebookをシステム側、言語ツールのグローバル環境に入れた場合
$ jupyter notebook .... .... .... .... To access the server, open this file in a browser: file:///home/USERNAME/.local/share/jupyter/runtime/jpserver-xxxxx-open.html Or copy and paste one of these URLs: http://localhost:8888/tree?token=9c18d70a...... http://127.0.0.1:8888/tree?token=9c18d70a...... .... .... .... ....
Jupyter Notebook起動後のノートブック作成手順はJupyterLabと同じなので、下記のJupyterLabの記載を参照のこと。
Jupyter Notebookを言語ツールの仮想環境に入れた場合
$ cd PROJECT_DIR $ pipenv run jupyter notebook
JupyterLab
JupyterLabをシステム側、言語ツールのグローバル環境に入れた場合、
$ jupyter lab .... .... .... .... To access the server, open this file in a browser: file:///home/USERNAME/.local/share/jupyter/runtime/jpserver-xxxxx-open.html Or copy and paste one of these URLs: http://localhost:8888/tree?token=f37955ad...... http://127.0.0.1:8888/tree?token=f37955ad...... .... .... .... ....
ブラウザからURLlocalhost:8888
にアクセスすると、JupyterLabのログイン画面が表示される。
上のJupyterLabの起動時に表示されたトークンの値を[Password or token:]
に入力して[ Log in ]
を押すと、下のような画面に変わる。
ファイル一覧からいずれかのディレクトリを開いた状態で、メニュー[File] > [New] > [Notebook]
を選ぶと、そのディレクトリの中にノートブックが作成され、使用するカーネルの選択を聞かれるので、いずれかのカーネルを選択すれば、新しいノートブックが表示される。
JupyterLabを言語ツールの仮想環境に入れた場合
$ cd PROJECT_DIR $ pipenv run jupyter lab
Jupyter Notebook/JupyterLabの設定
インストール後のデフォルト状態では、Jupyter Notebook/JupyterLabはトークンによるログイン、ポート番号8888になっているが、セキュリティ的見地からこれらの設定は変更しても良いだろう。
以下の操作によって、これらの設定を変更できる
Jupyter Notebook
$ jupyter notebook --generate-config Writing default config to: /home/USERNAME/.jupyter/jupyter_notebook_config.py # Jupyter Notebookのパスワードを設定 $ jupyter notebook password Enter password: # パスワードを入力 Verify password: # パスワードを再入力 [JupyterPasswordApp] Wrote hashed password to /home/USERNAME/.jupyter/jupyter_server_config.json # Jupyter Notebookサーバーのポート番号を変更 $ vi ~/.jupyter/jupyter_notebook_config.py - # c.ServerApp.port = 0 + c.ServerApp.port = 5555
JupyterLab
$ jupyter lab -–generate-config Writing default config to: /home/USERNAME/.jupyter/jupyter_lab_config.py # JupyterLabのパスワードを設定 $ jupyter lab password Enter password: # パスワードを入力 Verify password: # パスワードを再入力 [JupyterPasswordApp] Wrote hashed password to /home/USERNAME/.jupyter/jupyter_server_config.json # JupyterLabサーバーのポート番号を変更 $ vi ~/.jupyter/jupyter_lab_config.py -# c.ServerApp.port = 0 +c.ServerApp.port = 5555
VSCode用Jupyter Notebook環境の構築
ブラウザからJupyter Notebookを使うのも悪くはないが、プログラム開発にVisual Studio Codeを常用している身としては、VSCodeでノートブック・プログラミングをやりたくなってくる。
VSCodeに拡張機能 "Jupyter" をインストールすると、VSCode上でもノートブックが利用できるようになる。
VSCodeではプロジェクト・ディレクトリ単位でのプログラム作成・編集になるので、Jupyter Notebookを言語ツールの仮想環境に入れる場合についてだけ説明しておく。仮想環境によってプロジェクト毎にノートブックで使用するPythonのバージョンを変えられるので、これがもっとも合理的な使い方ではないだろうか。
Jupyter Notebook用仮想環境を作成する
pyenvを使っている場合
$ mkdir PROJECT_DIR $ cd PROJECT_DIR $ pyenv local 3.10.12 $ python --version Python 3.10.12 $ pipenv --python 3.10
asdfを使っている場合
$ mkdir PROJECT_DIR $ cd PROJECT_DIR $ asdf local python 3.10.12 $ python --version Python 3.10.12 $ pipenv --python 3.10
VSCode用Jupyter Notebookカーネル環境を作成する
$ pipenv shell $ pip install ipykernel $ ipython kernel install --user --name=pipenv_3.10.12 $ exit
オプション--name
に指定するのはJupyter Notebookカーネルの名前だが、これは任意で良い。
VSCode側のJupyter Notebookカーネルの設定
上記で作成した仮想環境のディレクリトをVSCodeから開く。
拡張子 .ipynb
のファイルを作成すると、ノートブックとして認識され、Jupyter Notebookのカーネルを選べるようになる。
右上の[Select kernel]
を押すと、[Jupyter Kernel...]
というメニューが表示されるので、これを選ぶと上で作成したカーネルの名前が出てくる。
当該カーネルを選ぶと、それがノートブックで使用されるカーネルとして設定される。
小生は、ローカルPCでJupyter Notebookを利用するときはこのVSCodeを使う方法を常用している。ノートブック作成に使うのはほとんどこちらの方だけだ。JupyterLab固有の機能を使うときだけそちらを利用している
【追記】〔2023-12-22〕
上で利用しているipykernel
ライブラリによるJupyter Notebookカーネルの簡単な扱い方を備忘録として書いておく。
- カーネルの作成
ipython kernel install --user --name=KERNEL_NAME
- カーネルの削除
jupyter kernelspec uninstall KERNEL_NAME
- カーネル一覧の表示
jupyter kernelspec list
【参照リンク】