🔖
Amazon Bedrock実装②:Docker on Cloud9で実装してみる
Bedrock勉強中
Bedrockの使い方の勉強メモ
事前準備/環境
バージニアリージョン(us-east-1)に、Cloud9(Ubuntu Server 22.04 LTS)を立てます。
また、Cloud9のEC2のIAMロールに必要な権限を付与しておきます(面倒なら、とりあえず AdministratorAccess 付与しちゃう)
以下はCloud9のDockerバージョンです。
iam0001:~/environment $ docker --version
Docker version 24.0.7, build afdd53b
Dockerファイルを作成する
ここからの作業はCloud9で実施します。
ディレクトリ構成は以下のようにします。test.pyは、Bedrockにプロンプトを発行し結果を表示するPython3スクリプトです。
iam0001:~/environment $ tree
.
├── README.md
└── docker
├── Dockerfile_Bedrock
└── work
└── test.py
2 directories, 3 files
iam0001:~/environment $
Dockerファイル
Dockerfile_Bedrock
ARG python_image_v="python:3.10-buster"
FROM ${python_image_v}
ARG work_dir="/work/"
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}
# pip更新
RUN pip install --upgrade pip
# boto3インストール
RUN pip install boto3
# リージョン情報を設定する
ENV AWS_DEFAULT_REGION=us-east-1
# Bedrockに必要なモジュールをインストール
RUN pip install --no-build-isolation --force-reinstall \
"boto3>=1.28.57" \
"awscli>=1.29.57" \
"botocore>=1.31.57" \
"langchain==0.0.320"
test.py
import boto3
import json
# Boto3 セッションの作成
session = boto3.Session()
# Bedrock クライアントの作成
bedrock_client = session.client(service_name='bedrock')
bedrock_runtime_client = session.client(service_name='bedrock-runtime')
# 利用可能な基盤モデル一覧の表示
"""
foundation_models = bedrock_client.list_foundation_models()
print("Available foundation models:")
for model in foundation_models.get("modelSummaries", []):
print(f"Model ID: {model['modelId']}, Model Name: {model['modelName']}")
"""
# モデルの同期的呼び出し(Anthropic Claude-v2 の場合)
prompt = "Human:AWSサービスって何ですか?\nAssistant:"
body = json.dumps({
"prompt": prompt,
"max_tokens_to_sample": 300,
"temperature": 0.1,
"top_k": 1,
"stop_sequences": ["\n\nHuman"]
})
model_id = "anthropic.claude-v2"
accept = "application/json"
content_type = "application/json"
response = bedrock_runtime_client.invoke_model(
body=body,
modelId=model_id,
accept=accept,
contentType=content_type
)
response_body = json.loads(response.get('body').read())
print("Generated completion:")
print(response_body.get('completion'))
以上で準備完了です。
動作確認
Dockerを起動しBedrockが実行できるか動作確認する
Dockerの起動
Dockerイメージを作る
$ docker build -f Dockerfile_Bedrock -t bedrock_img .
Dokckerコンテナを作成し起動する
$ docker run --rm --name bedrock_env -v $PWD/work/:/work/ -dit bedrock_img
Dockerコンテナに入る
$ docker exec -it bedrock_env bash
test.py(Bedrock実行スクリプト)実行
Dockerコンテナに入った状態で、test.pyを実行します。
iam0001:~/environment/docker $ docker exec -it bedrock_env bash
root@f83fd462c12d:/work# ls
test.py
root@f83fd462c12d:/work# python test.py
Generated completion:
AWS(Amazon Web Services)は、Amazon.comが提供するクラウドコンピューティングサービスの総称です。
主なサービスには以下のようなものがあります。
- EC2(Elastic Compute Cloud): 仮想サーバーのレンタルサービス
- S3(Simple Storage Service): オブジェクトストレージサービス
- RDS(Relational Database Service): リレーショナルデータベースの管理サービス
- DynamoDB: NoSQLデータベースサービス
- SQS(Simple Queue Service): メッセージキューサービス
- SNS(Simple Notification Service): プッシュ通知サービス
- Lambda: サーバーレスコンピューティングサービス
- API Gateway: API管理サービス
- CloudFront: CDNサービス
AWSでは、これらのサービスをオンデマンドで利用でき、必要な分だけを利用して課金されるため、スケーラブルなアプリケーション
root@f83fd462c12d:/work#
無事動きました。
===
- Bedrock実装関連の記事
- Amazon Bedrock実装①:Python3(boto3)で実装してみる
- Amazon Bedrock実装②:Docker on Cloud9で実装してみる
- Webサーバーを立てずにlambdaを実行するhtml+JavaScript on Cloud9
- Amazon Bedrock実装③:Lambda(Python3)で実装してみる
- Amazon Bedrock実装④:Cloud9環境のhtmlプレビューでBedrockを使えるようにする
Discussion