LoginSignup
7
5

Amazon BedrockのWorkshopをVisual Studio Codeで動かすまでの手順

Last updated at Posted at 2023-09-30

はじめに

Amazon BedrockのGAに伴い、JAWS-UG横浜支部でワークショップのもくもく会を開催しました。
https://jawsug-yokohama.connpass.com/event/297915/

BedrockはGA前から変更された点が多く、Langchainのバージョンを上げないといけない等注意点が多かったので、まずはスタートラインに立てるようにするための記事です。

日本語のワークショップURL

ワークショップのGitHubリポジトリ

現時点で、日本語のワークショップは未完成のものが多く、実際はワークショップのGitHubリポジトリを見に行くのが良いです。

この記事は2023/9/30時点のものです。

環境

  • OS:Windows10 + WSL2(Ubuntu 20.04.6)

手順

1. Pythonのインストール

apt install -y python3 python3-pip (git)

※Gitがない場合はGitもインストールしておきましょう。

2. AWS CLIのインストール (最新じゃないとハマります)

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

3. Workshopリポジトリのクローン

git clone https://github.com/aws-samples/amazon-bedrock-workshop
cd amazon-bedrock-workshop

4. bedrock-python-sdkの更新 (不要になりました)

クローンしたフォルダに、以下のスクリプトをdownload-dependencies.shという名前で作成し、実行します。

download-dependencies.sh
#!/bin/sh

set -e

echo "(Re)-creating directory"
rm -rf ./dependencies
mkdir ./dependencies
cd ./dependencies
echo "Downloading dependencies"
curl -sS https://d2eo22ngex1n9g.cloudfront.net/Documentation/SDK/bedrock-python-sdk.zip > sdk.zip
echo "Unpacking dependencies"
# (SageMaker Studio system terminals don't have `unzip` utility installed)
if command -v unzip &> /dev/null
then
    unzip sdk.zip && rm sdk.zip && echo "Done"
else
    echo "'unzip' command not found: Trying to unzip via Python"
    python -m zipfile -e sdk.zip . && rm sdk.zip && echo "Done"
fi
sh download-dependencies.sh

5. boto3のアップグレード (不要になりました)

pip install --upgrade boto3

6. Langchainのインストール(バージョン指定)

バージョンの指定 0.0.304 が超重要です

pip install --quiet langchain==0.0.304

7. Bedrockのモデルのアクセス設定

  • Bedrockは現時点で バージニア オレゴン オハイオ シンガポール がサポートされています。
    しかし、シンガポールとオハイオは使用できるモデルが制限されています。
    バージニアオレゴンを選びましょう。

  • Amazon Bedrockの画面から Model access を選びます。
    最初は Access statusavailable になっています。

※この状態で使えるかと思っていましたが、APIアクセスが AccessDeniedException で弾かれて少し悩みました。
以下の、モデルのアクセス設定が必要となります。

  • Edit から必要なモデルをチェックし、 Save changes をクリックすることでステータスが In Progressとなります。
    image.png

  • 数分で Access grantedになります。
    image.png

8. VisualStudio Codeへjupyter拡張のインストール

  • Visual Studio CodeのExtensionsを開き、jupyterで検索すると出てくるのでインストールしましょう。
    image.png

9. ワークショップの実施

  • Visual Studio Codeで 3.でクローンしたリポジトリのフォルダを開きます。
  • 00_Intro -> bedrock_boto3_setup.ipynb を開くとJupyter拡張が良い感じに表示してくれます。
    image.png
  • Create the boto3 clientの部分でコードを修正します。
    ローカルから実行する場合はロールではなくプロファイルからCredentialを読み込む場合が多いと思います。
    リージョンの指定及び、AWSのプロファイル名をしておきましょう。
    ※この内容はほぼすべてのワークショップシナリオで必須となります。
os.environ["AWS_DEFAULT_REGION"] = "us-east-1"  # E.g. "us-east-1"
os.environ["AWS_PROFILE"] = "xxx"
# os.environ["BEDROCK_ASSUME_ROLE"] = "<YOUR_ROLE_ARN>"  # E.g. "arn:aws:..."


boto3_bedrock = bedrock.get_bedrock_client(
    assumed_role=os.environ.get("BEDROCK_ASSUME_ROLE", None),
    region=os.environ.get("AWS_DEFAULT_REGION", None),
    runtime=False
)
  • 修正したら実行しましょう
    image.png
    成功すると Create new client ...が表示されるはずです。

  • その下の Validate the connection を実行してJSONのレスポンスが戻ってくればOKです。

  • InvokeModel body and outputtitanのモデル以外のものは実行できると思います。
    ※titanはGAに伴いモデルIDが変わっているようです。

以上

初学者へのおすすめシナリオ

以下のものはAWSのリージョンとプロファイルの指定を修正する部分を間違えなければすんなりと動いてくれるので、色々試したりコードを追いかけて理解するのに役立ちました。

  • 01_Generation - 01_zero_shot_generation.ipynb
  • 05_Image - Bedrock Stable Diffusion XL.ipynb
  • 06_CodeGeneration - 00_code_generatation_w_bedrock.ipynb

謝礼

KAG小板橋さんのブログが大変参考になりました!ありがとうございます。
https://qiita.com/yoshii0110/items/f82c04dcf1cdd381553e

最後に

ワークショップを通して、LLMをアプリケーションに組み込むイメージがグッと上がりました。
AWSのコストで実施できるのも嬉しい部分ですね。

更新履歴

2023/10/1 手順4.5.は不要になったので取り消し線を付けておきました。
@hayao_k ご指摘ありがとうございます!

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5