AWS Bedrockを使ってみた

目次

AWS Bedrockとは

AWS Bedrock は Amazon Web Services (AWS) が提供する、 完全マネージド型の生成 AI サービスです。

・複数のAIモデルが利用可能
・セキュリティ、プライバシーポリシーなどはAWSに準拠
・AIモデルのチューニング可能
・APIで利用でき、AWSの各種サービスと連携が簡易に可能
・料金は従量課金制

利用可能なAIモデル

・Anthropic社『Claude』
・Amazon社『Titan』
・Meta社『Llama』
など、複数のAIモデルが利用可能ですが、リージョンによって利用可能なモデルやバージョンは異なります。

東京リージョンとバージニア北部リージョンを例に表にしてみました。
バージニア北部のほうが利用可能なモデルが多いことがわかります。

リージョンClaudeTitanEmbedAILlamaEmbedAIMistralAIStability AIJamba
東京
バージニア北部
リージョン別利用可能AIモデル

次に、利用可能なバージョンについても見ていきます。今回はAnthropic社の『Claude』を例にします。
執筆時点(2024/11/30)では最新のClaude 3.5 HaikuやClaude 3.5 Sonnet v2はバージニア北部では利用可能ですが、東京では利用ができません。一つ前のClaude 3.5 Sonnet止まりです。

リージョンClaude 3.5 HaikuClaude 3.5 Sonnet v2Claude 3.5 SonnetClaude 3 OpusClaude 3 SonnetClaude 3 Haiku
東京
バージニア北部
リージョン別利用可能Cloudeバージョン

Claude 3.5 Sonnetの東京での利用開始日はバージニア北部の利用開始から約1ヶ月半後でしたので、2024/10/22に発表された最新のClaude 3.5 HaikuやClaude 3.5 Sonnet v2についても東京での利用開始が待ち遠しいです。

●Claude 3.5 Sonnet
リリース日: 2024/06/20
バージニア北部での利用開始日: 2024/06/21
東京での利用開始日: 2024/08/07

●Claude 3.5 Haiku / Claude 3.5 Sonnet v2
リリース日: 2024/10/22
バージニア北部での利用開始日: 2024/10/23
東京での利用開始日: ????

BedrockのAPIリクエスト

Bedrock APIをpythonからリクエストしてみます。

●実行環境
・Python 3.9.12
・boto3 1.35.19
・json 2.0.9

●サンプルコード

import boto3
import json
bedrock_runtime_client = boto3.client(
service_name="bedrock-runtime",
aws_access_key_id='{AWS_ACESS_KEY}',
aws_secret_access_key='{AWS_SECRET_ACCESS_KEY}' ,
region_name='us-east-1')

body = json.dumps({
"max_tokens": 1024,
"anthropic_version": "bedrock-2023-05-31",
"temperature": 0.1,
"top_p": 0.9,
"messages": [
{
"role": "user",
"content": "日本の首都はどこですか?"
}
]
})

modelId = 'anthropic.claude-3-haiku-20240307-v1:0'
accept = 'application/json'
contentType = 'application/json'

response = bedrock_runtime_client.invoke_model(
body=body, modelId=modelId
)

response_body = json.loads(response.get('body').read())
print(response_body["content"][0]["text"])

●実行結果

日本の首都は東京です。

東京は日本の政治、経済、文化の中心地で、日本の首都として機能しています。1869年に江戸から東京に首都が移されて以来、日本の首都として重要な役割を果たし続けています。

東京は人口約1,400万人を擁する大都市で、日本政府の所在地や国会議事堂、皇居などの主要な政治機関が集中しています。また、金融、商業、交通の中心地としても知られています。

日本の首都が東京であることは、日本の歴史や地理的特徴から見て非常に重要な事実です。東京は日本の政治・経済・文化の中心として、国内外から注目されている都市といえます。

全く調整などはしていないためいろいろな情報が返ってきていますが、もちろんチューニングをして情報を絞るなどは可能です。

料金

利用料金は1,000トークン辺りの従量課金制です。1トークンあたりの文字数は0.96~2.6文字。

モデル1,000入力トークン当たり1,000出力トークン当たり
Claude 3.5 Sonnet
Claude 3 Sonnet
$0.003$0.015
Claude 3.5 Haiku$0.001$0.005
Claude 3 Haiku$0.00025$0.00125
Claudeの料金一例

利用料金はリージョン間で固定なことが多いようですが、詳細はAWSの公式ページのご確認をお願いいたします。

(参考サイト)
https://aws.amazon.com/jp/bedrock/pricing/

CloudWatchLogと連携することで正確なトークン数の計測が可能です。

(参考サイト)
https://qiita.com/cyberBOSE/items/9286fac198c248c721b9

規約

AWSの規約を確認すると
・入力情報やトレーニングデータは学習に利用されない
・不正利用検出が完全自動化されている(自動的に行われるため人が内容を確認することはない)
と記載がありますので、入力データが学習されてしまうということはありません。

(AWS Bedrock 規約)
https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html

ベースモデルとカスタムモデル

Bedrockでは2つのモデルが提供されておりますので、違いをまとめます。

項目ベースモデルカスタムモデル
準備期間すぐに使用可能学習時間が必要
コスト使用量ベース学習コスト+使用量
精度汎用的ドメイン特化側
メンテナンスAWS/提供元が担当利用者側で必要
データ要件不要学習データが必要
ベースモデル・カスタムモデルについて

ベースモデルはすぐに利用可能だが、精度は汎用的。
カスタムモデルは学習コストがかかるが、その分利用者側で詳細に組み込むことが可能。
ということになります。

現状ベースモデルでの利用を行っておりますが、汎用的とはいえ高い精度で答えが返ってくる印象です。一度ベースモデルを利用してみて「より精度を上げたい」「独自データの学習が必要」という場合はカスタムモデルを利用していく形が良さそうです。

まとめ

今回AWS Bedrockを触ってみましたが、簡単にAIのシステム導入が可能でした。慣れてしまえばベースモデルを利用してレスポンスを取得するまでに1~2時間で可能かもしれません。

費用や規約面などで調査が必要なことは多いですが、ぜひ一度検討してみてはいかがでしょうか。

役に立ったらシェアしていただけると嬉しいです
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次