Jupyter AIでもAmazon Bedrockが使えます!!
Jupyter AIシリース(?)の続編です。
環境構築
2023/10/09時点ではAmazon Bedrock対応はまだリリース版には含まれていないため、GitHubのmainリポジトリから導入します。
Dockerで構築します。
FROM jupyter/minimal-notebook:lab-4.0.6
RUN pip install --no-cache-dir \
git+https://github.com/jupyterlab/jupyter-ai.git#subdirectory=packages/jupyter-ai-magics \
git+https://github.com/jupyterlab/jupyter-ai.git#subdirectory=packages/jupyter-ai \
boto3
リリース版に含まれたあとはpip install --no-cache-dir jupyter-ai boto3
で良いと思います。
ビルド
docker build -t jupyter-ai .
起動
AWSの認証情報を環境変数で渡したいので、.env
ファイルを作成します。
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
docker run -it --rm \
-p 8888:8888 \
--env-file=${PWD}/.env \
jupyter-ai
ターミナルにトークン付きのURLが表示されますので、ブラウザでアクセスします。
起動しました!!
チャットインターフェイス
左パネルにチャットのボタンが追加されています。
Welcomeメッセージが表示されますので、Start Here
をクリックします。
Language modelとEmbedding modelにAmazon Bedrockが生えてます!
anthropic.claude-instant-v1とamazon.titan-embed-text-v1を選択して進めてみます。
チャットをしてみます。
日本語もOK!
ノートブックについて質問できる
ただチャットができるだけではありません。ノートブックのセルに対して範囲選択をすると、チャットエリアの下部にInclude selection
とReplace selection
が表示されます。
Include selection
だと選択したコードを含んだ形で質問ができます。
このコードはStable Diffusionを用いたイメージジェネレーションを行っていると思われます。
DiffusionPipelineはStable DiffusionのAPIで、事前トレーニング済みのモデルをロードするためのクラスです。
from_pretrainedで"runwayml/stable-diffusion-v1-5"と指定することで、Stable Diffusionのバージョン1.5をロードしています。
torch_dtype=torch.float16で半精度浮動小数点計算を指定しています。
pipeline.to("cuda")でGPU(ここではcuda)にモデルを移行しています。
pipeline("An image of a squirrel in Picasso style")で入力文字列からイメージジェネレーションを実行し、images[0]で最初のイメージを取得しています。
つまりこのコードはStable DiffusionモデルをロードしGPUに置き、「Picasso様式の Squir
すっげー!
Replace selection
にチェックを入れると、選択したコード部分がチャットの回答で上書きされます。ただし、チャットの回答が正しいかはわからないので、チェックしてから更新するほうが良さそうです。(そもそも、コードで返ってこないこともありますし。)
ローカルデータについて学ぶ
これだけじゃありません。チャットが質問に答える際にローカルデータを含めるようにすることもできます。embedding modelが使用されます。
試しにhuggingface/diffusersのREADMEを埋め込んでみます。
mkdir docs
cd docs
wget https://raw.githubusercontent.com/huggingface/diffusers/main/README.md
準備完了です。
チャット欄に/learn
コマンドを入力し、覚えさせます。
/learn /home/jovyan/docs
うまく行ったようです。
質問する際は/ask
コマンドを使用します。
/ask "pipでDiffusersをインストールする方法を教えて"
Diffusersをpipでインストールする方法は以下のとおりです:
pip install --upgrade diffusers[torch] このコマンドではDiffusersライブラリに必要な依存関係もまとめてインストールします。
Torchバックエンドを使用する Diffusers をインストールする場合は [torch] オプションを指定します。
また、Flaxバックエンドを使用する場合は [flax] オプションを指定します:
pip install --upgrade diffusers[flax] Diffusersをcondaでインストールする方法については文書が詳しく説明していますので、必要に応じて参照してください。
以上がpipを使ったDiffusersのインストール方法です。
ばっちり!!
%%ai
マジックコマンド
Jupyter AIはチャットだけではありません。%%ai
マジックコマンドも使えます。
- 拡張のロード
%load_ext jupyter_ai_magics
これだけです。
使えるモデルの一覧を取得
%ai list
Bedrockが生えてます!
マジックコマンドを使う際にmodel ID
を一緒に指定します。
%%ai bedrock-chat:anthropic.claude-instant-v1
"hello world"とコンソールに出力するJavaScriptのコードを出力して
ほー
デフォルトではMarkdownでの出力となりますが、-f
または--format
オプションで書式を指定できます。
%%ai bedrock-chat:anthropic.claude-instant-v1 -f code
"hello world"とコンソールに出力するJavaのコードを出力して
ほーほー
他のセルの内容を参照する
前のセルのインプットを参照させられます。
%%ai bedrock-chat:anthropic.claude-instant-v1
以下のコードの意味を小学生にわかるように説明して
--
{In[6]}
おお!
インプットだけでなくアウトプットも使えます。 更にエラーも使えますので、こんなこともできます。
%%ai bedrock-chat:anthropic.claude-instant-v1
以下のPythonコードを実行しました。
--
{In[8]}
--
すると、エラーとなりました。
--
{Err[8]}
--
エラーの原因を教えてください。
うおおおおおおおおおおお!
すっごい!!
-f code
と組み合わせて、 エラーを修正させちゃったりなんかもできちゃったりします!
2023/10/09時点ではStable Diffusionは使えなさそうですが、今後に期待です!!
参考
https://pip.pypa.io/en/stable/topics/vcs-support/#url-fragments