Jupyter Lab上からChatGPTを使える「Jupyter AI」をDockerから利用する
Jupyter Lab上から簡単にChatGPTを使える「Jupyter AI」をカスタムDockerで動かしてみました。使用するライブラリに応じてオリジナルな開発環境を自在に構築することができます。
目次
はじめに
Jupyter LabからChatGPTを簡単に使えるJupyter AIを見つけたので、Dockerから使ってみました。
本当に手軽にChatGPTを使えて、ノートブックとの連携も簡単なので非常に有望ですい。「ChatGPTを別窓でブラウザで開いて、そこからコピペする」(大抵ChatGPTを起動するまでがめんどい)みたいなこともほぼ必要なくなるかと思います。
Jupyter AIで用意されているDockerもありますが、カスタム環境構築をしたい場合も多いので、1からDockerfileを書く方法を紹介します。
参考記事
Jupyter AIについては以下の記事を見てみてください
- Jupyter AIが出た!試した!!すごい!!!
- Jupyter AIでHuggingFace Hubを使うと、これまたすごい!
-
公式GitHub
- 公式ドキュメント
ディレクトリ構成
- home
- ここ以下がマウントされます
- Dockerfile
- docker-compose.yaml
- (requirements.txt):今回は入れていないがオプションで
Dockerfile
本当に最小の構成で書きます。PyTrochしか入れていないので、各自requiremtns.txtなどを書いてカスタマイズしてみてください。
Dockerfile
FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu20.04
RUN apt-get update
ENV TZ=Asia/Tokyo
ENV LANG=en_US.UTF-8
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get install -yq --no-install-recommends python3-pip \
python3-dev \
wget \
git \
libopencv-dev \
tzdata && apt-get upgrade -y && apt-get clean
RUN ln -s /usr/bin/python3 /usr/bin/python
RUN pip install -U pip &&\
pip install --no-cache-dir torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
RUN pip install --no-cache-dir jupyter_ai jupyter_server
WORKDIR /home
EXPOSE 8888
CMD ["jupyter", "lab", "--notebook-dir=/home", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--ServerApp.token=''"]
docker-compose.yaml
version: '1'
services:
notebook:
build: .
image: jupyter-ai
ports:
- "18888:8888"
volumes:
- ./home:/home
environment:
- OPENAI_API_KEY=<your-open-ai-api-key>
このケースでは、
- コンテナのポート8888を、PCのポート18888にフォワーディングしています。ブラウザから「127.0.0.1:18888」とすると、Jupyter Labを開けます
- Dockerfileの直下の「home」ディレクトリを、コンテナ側の「/home」にマウントしています。こうすることで、Jupyter Labで作成したNotebookをPC側からも参照できます
- Jupyter AIの拡張機能の読み込みにOpenAI API Keyが必要になるので、docker-compose.yaml内に記述してください。他に環境変数が必要ならここに書いてください
なお、この実装はこちらのリポジトリを参考にしました。
ビルドと起動
docker-composeを使用しているので、ビルドは、
docker-compose build
起動は
docker-compose up
でOKです。コンテナの起動後「127.0.0.1:18888」とブラウザで開くと、Jupyter Labが立ち上がります。
ポートフォワーディングとかマウントとかいちいち手動で入力するのめんどいので、docker-compose作ったほうが楽だと思います。
終了・削除
Docker側の画面で「Ctrl+C」で
コンテナごと削除したい場合は、以下のように使えます。Colab感覚で使いたいときはこれ便利そうですね。
docker-compose down
動かしてみる
環境変数で登録しても、チャットウィンドウのところは別途APIキーを設定する必要がありました。LLMとEmbedding APIをセットします。
「Save Changes」をおしたとは左上の「←」を押すとチャットウィンドウに行きます(これ最初わからなくてハマった)
簡単に使ってみる
/generateでノートブック作成
チャットウィンドウで
/generate Pillowで入力画像からエッジ抽出するノートブック
とするとサンプルノートブックを作ってくれます。これが使い物になるかはさておき、たたき台としてはかなりいいと思います。
%%aiでノートブック内でChatGPTを使う
拡張機能を読み込みます。「jupyter_ai_magics」はjupyter_aiと同時にインストールされます。
%load_ext jupyter_ai_magics
ChatGPTにコードを作らせます。「%%ai」がJupyter AIでLLMなどのAIを呼び出すコマンドで、「chatgpt」がモデルの指定です。「chatgpt」の部分を変えるとHugging Faceのモデルを呼び出したりすることができます。
%%ai chatgpt
Pillowでフォントサイズを変えるコード書いて
ブラウザウィンドウ変えなくていいのがいいですよね。
ノートブック内のコードについて質問する
コードを右クリックしてチャットウィンドウから質問すると返してくれます。このケースは「このコードについて解説して」としたときの返答です。ドキュメント作る時とか便利そう。
また、オプションを変えれば置き換えもできるので、「ここはこうじゃない」というような部分調整にも使えそうです。
まとめ
Jupyter AI+カスタムDockerであなただけの最強開発環境を作ろう
冒頭の参考記事にもう少し詳細な使い方の解説あるので、気になった方は読んでみてください。
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー