こしあん
2023-06-13

Jupyter Lab上からChatGPTを使える「Jupyter AI」をDockerから利用する


1.3k{icon} {views}


Jupyter Lab上から簡単にChatGPTを使える「Jupyter AI」をカスタムDockerで動かしてみました。使用するライブラリに応じてオリジナルな開発環境を自在に構築することができます。

はじめに

Jupyter LabからChatGPTを簡単に使えるJupyter AIを見つけたので、Dockerから使ってみました。

本当に手軽にChatGPTを使えて、ノートブックとの連携も簡単なので非常に有望ですい。「ChatGPTを別窓でブラウザで開いて、そこからコピペする」(大抵ChatGPTを起動するまでがめんどい)みたいなこともほぼ必要なくなるかと思います。

Jupyter AIで用意されているDockerもありますが、カスタム環境構築をしたい場合も多いので、1からDockerfileを書く方法を紹介します。

参考記事

Jupyter AIについては以下の記事を見てみてください

ディレクトリ構成

  • 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の中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です