当記事は「2024年4月21日」時点の情報に基づき執筆しています。
こんにちは、つくぼし(tsukuboshi0755)です!
当エントリは弊社AWS事業本部による『AWS入門ブログリレー 2024』の28日目のエントリです。
このブログリレーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
AWSをこれから学ぼう!という方にとっては文字通りの入門記事として、またすでにAWSを活用されている方にとってもAWSサービスの再発見や2024年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。
では、さっそくいってみましょう。今回のテーマは『Amazon Bedrock』です。
基本情報
Amazon Bedrockについて、まず初めに知っておくべき基本情報を説明します。
Amazon Bedrockとは
Amazon Bedrockとは、主要な生成AIの基盤モデル(FM)を、AWS上で利用できるフルマネージド型サービスです。
AWSを介さず直接生成AIサービスを利用する場合と比較して、Amazon Bedrockから基盤モデルを利用すると以下のようなメリットを得られます。
- 有名なAI企業が提供する、テキスト生成/埋め込み/画像生成等の様々な基盤モデルを、同一のAPIで使用可能
- RAGのカスタマイズ、エージェントの構築等の便利な機能を利用可能
- プライバシーとセキュリティを維持しながら、生成AIアプリケーションを構築可能
- 使い慣れたAWSサービスとのスムーズな統合が可能
Amazon Bedrockの始め方
Bedrockを初めて利用する際は、事前に以下のマネジメントコンソールのモデルアクセスより、基盤モデルへのアクセスリクエストが必要になります。
詳細は以下のブログをご確認ください。
注意点として、通常Bedrockにおける最新の基盤モデルは、バージニア(us-east-1)及びオレゴン(us-west-2)のリージョンから先にリリースされる一方で、東京(ap-northeast-1)等のリージョンには遅れてリリースされる傾向にあります。
そのためBedrockの一部の基盤モデル及び機能が、東京リージョンで利用できない場合があります。
ただバージニア及びオレゴンのBedrockを利用する場合でも比較的レスポンスは早い傾向にあり、また通信もAWS内部で閉じるためセキュリティも担保されています。
そのため生成AIアプリ基盤をAWSで構築する場合は、他のリソースについては自国のリージョンを利用しつつ、Bedrockのみバージニアやオレゴンのリージョンを指定し利用するパターンが多いです。
本記事でも、基本的にバージニア及びオレゴンリージョンにおけるBedrockの利用を前提として解説します。
Amazon Bedrockの使い方
Bedrockの使い方について、GUIとAPIの2つの観点から説明します。
GUIでの利用
プレイグラウンドを利用する事で、以下の通りマネジメントコンソールから簡単にAmazon Bedrockの基盤モデルを呼び出す事ができます。
各々の基盤モデルがどのような出力を返すかを検証する際に便利です。
APIでの利用
Amazon Bedrock Runtime APIを利用する事で、アプリケーションのプログラムからAmazon Bedrockの基盤モデルを呼び出す事ができます。
Amazon Bedrock Runtime APIでは、以下2つのアクションが提供されています。
- InvokeModel:基盤モデルからのレスポンスについて、内容を一度にすべて取得
- InvokeModelWithResponseStream:基盤モデルからのレスポンスについて、内容を少量の文字ずつ徐々にストリームとして取得
APIの詳細については、以下の公式ドキュメントをご確認ください。
AWS CLIからInvokeModel
を実行する場合のコマンド例は、以下の通りです。
aws bedrock-runtime invoke-model \
--model-id anthropic.claude-3-sonnet-20240229-v1:0 \
--body "{\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"日本の偉人の名言を1つ教えてください。\\n\"}]}],\"anthropic_version\":\"bedrock-2023-05-31\",\"max_tokens\":2000,\"temperature\":1,\"top_k\":250,\"top_p\":0.999,\"stop_sequences\":[\"\\n\\nHuman:\"]}" \
--cli-binary-format raw-in-base64-out \
--region us-west-2 \
invoke-model-output.txt
Boto3(Python)からInvokeModel
を実行する場合のコード例は、以下の通りです。
invoke_model.py
import boto3
import json
brt = boto3.client(service_name="bedrock-runtime", region_name="us-west-2")
modelId = "anthropic.claude-3-sonnet-20240229-v1:0"
body = json.dumps(
{
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [{"type": "text", "text": "日本の偉人の名言を1つ教えてください。"}],
}
],
}
)
response = brt.invoke_model(modelId=modelId, body=body)
response_body = json.loads(response.get("body").read())
print(response_body)
料金体系
Bedrockには様々な料金体系があり、用途に応じて各々の料金体系を選択できます。
詳細は以下の料金表をご確認ください。
以下では、主要な2種類の料金体系について簡単に紹介します。
オンデマンド
使用した分のみ課金される、スタンダードな料金体系です。
モデルの種類により、以下の形で従量課金されます。
- テキスト生成モデル:入力トークンの処理および出力トークンの生成ごとに課金
- 埋め込みモデル:入力トークンの処理ごとに課金
- 画像生成モデル:画像の生成ごとに課金
プロビジョンドスループット
特定のベースモデルまたはカスタムモデルについて、モデルユニットという単位で購入する料金体系です。
モデルユニットは、1分あたりに処理される入力トークンまたは出力トークンの最大数によって測定される特定のスループットを表します。
こちらの料金体系の場合、1か月または6か月の契約期間を選択し、課金する形になります。
関連用語
Amazon Bedrockでは、生成AI独自の用語が多く出てきます。
以下の公式ドキュメントで説明があるため、一通りご確認ください。
以下では、本記事の説明に必要な関連用語を簡単に説明します。
モダリティ
基盤モデルが扱うデータの種類を指します。
2024/4現在、Amazon Bedrockでは以下4種類のモダリティが利用可能です。
- Text:入力されたテキストを解釈し、テキストを出力するモデル
- Vision:入力された画像を解釈し、テキストを出力するモデル
- Image:入力されたテキストを解釈し、画像を出力するモデル
- Embedding:入力されたテキストを解釈し、埋め込みベクトルを出力するモデル
埋め込み
テキストや画像などのデータを、数値ベクトルに変換する事を指します。
埋め込みモデル(Embedding)を利用することで、テキストや画像を数値ベクトルに変換する事ができ、その数値ベクトルを元に様々な処理を行う事が可能になります。
トークン
テキストや画像などのデータを、生成AIが処理するために最小単位に分割したものを指します。
トークン数は、基盤モデルが処理できるデータの最大量を表します。
テキスト生成モデル
Amazon Bedrockで利用可能なテキスト生成モデルは、以下の表の通りです。
なお価格については、オレゴンリージョンでのオンデマンド料金モデルを参照します。
基盤モデル | プロバイダー | モダリティ | 最大トークン | 対応言語 | 入力トークン 1,000 個あたりの価格 | 出力トークン 1,000 個あたりの価格 |
---|---|---|---|---|---|---|
Claude Instant | Anthropic | Text | 100,000 | 英語と他の複数の言語 | 0.00080 USD | 0.00240 USD |
Claude | Anthropic | Text | 200,000 | 英語と他の複数の言語 | 0.00800 USD | 0.02400 USD |
Claude 3 Haiku | Anthropic | Text & Vision | 200,000 | 英語と他の複数の言語 | 0.00025 USD | 0.00125 USD |
Claude 3 Sonnet | Anthropic | Text & Vision | 200,000 | 英語と他の複数の言語 | 0.00300 USD | 0.01500 USD |
Claude 3 Opus | Anthropic | Text & Vision | 200,000 | 英語と他の複数の言語 | 0.01500 USD | 0.07500 USD |
Command | Cohere | Text | 4,000 | 英語 | 0.00150 USD | 0.00200 USD |
Command Light | Cohere | Text | 4,000 | 英語 | 0.00030 USD | 0.00060 USD |
Jurassic-2 Mid | AI21 Labs | Text | 8,191 | ※1 | 0.01250 USD | 0.01250 USD |
Jurassic-2 Ultra | AI21 Labs | Text | 8,191 | ※1 | 0.01880 USD | 0.01880 USD |
Llama 2 Chat 13B | Meta | Text | 4,096 | 英語 | 0.00075 USD | 0.00100 USD |
Llama 2 Chat 70B | Meta | Text | 4,096 | 英語 | 0.00195 USD | 0.00256 USD |
Mistral 7B Instruct | Mistral AI | Text | 32,000 | 英語 | 0.00015 USD | 0.00020 USD |
Mixtral 8x7B Instruct | Mistral AI | Text | 32,000 | ※2 | 0.00045 USD | 0.00070 USD |
Mistral Large | Mistral AI | Text | 32,000 | ※2 | 0.00800 USD | 0.02400 USD |
Titan Text G1 - Lite | Amazon | Text | 4,000 | 英語 | 0.00030 USD | 0.00040 USD |
Titan Text G1 - Express | Amazon | Text | 8,000 | ※3 | 0.00080 USD | 0.00160 USD |
※1英語、スペイン語、フランス語、ドイツ語、ポルトガル語、イタリア語、オランダ語
※2英語、フランス語、イタリア語、ドイツ語、スペイン語
※3英語 (GA)、100以上の言語での多言語 (プレビュー)
テキスト生成モデルでは、Anthropic社、Cohere社、AI21 Labs社、Meta社、Mistral AI社、Amazon社が提供するモデルを利用できます。
なお種類が多いため、以下では代表的なテキスト生成モデルに絞って紹介します。
Claude
ClaudeはAnthropic社が提供するテキスト生成モデルです。
日本語にも対応しており、最大トークンも多いため、Bedrockでテキスト生成するのであればまず検討したいモデルになります。
最新モデルであるClaude 3では、待望のVisionモデルが搭載されています。
2024/4現在、テキスト生成モデルで画像を扱いたい場合は、こちらのモデル一択になります。
BedrockにおけるClaude 3の画像認識については、以下の記事も合わせてご確認ください。
またClaude 3では、Haiku/Sonnet/Opusの3つのモデルが提供されており、価格と性能に応じて選択できるようになっています。
特にHaikuは、現状の基盤モデルの中では非常に安く利用できるテキスト生成モデルであり、コストを抑えたい場面では有力な選択肢になります。
BedrockにおけるClaude 3 Haikuについては、以下の記事も合わせてご確認ください。
逆にOpusは、Anthoropic社の検証によるとGPT-4を超えるトップレベルのベンチマークを持ち、性能が求められる場面では有力な選択肢になります。
BedrockにおけるClaude 3 Opusについては、以下の記事も合わせてご確認ください。
Llama
LlamaはMeta社が提供するテキスト生成モデルです。
現状提供されているLlama 2は、クローズドモデルであるGPT-4及びClaudeとは異なるオープンソースモデルであるため、無償で研究及び商用利用ができるという特徴があります。
BedrockにおけるLlama 2については、以下の記事も合わせてご確認ください。
Mistral
MistralはMisral AI社が提供するテキスト生成モデルです。
オープンソースモデルであるMistral 7B InstructやMixtral 8x7B Instruct、及びクローズドモデルでありながら高性能なMistral Largeが提供されています。
特にMistral Largeは、Mistral AI社によるとGPT-4に次ぐベンチマークを持つ高性能モデルとして、注目を集めています。
BedrockにおけるMistral Largeについては、以下の記事も合わせてご確認ください。
Titan Text
Titan TextはAmazon社が提供するテキスト生成モデルです。
Titan Text G1ではLiteとExpressの2つのモデルが提供されており、価格とトークン数に応じて選択できるようになっています。
特にExpressは、2024/4現在はプレビュー版ですが100以上の言語での多言語も提供されており、今後日本語でも利用できるようになる事が期待されています。
BedrockにおけるTitan Textについては、以下の記事も合わせてご確認ください。
埋め込みモデル
Amazon Bedrockで利用可能な埋め込みモデルは、以下の表の通りです。
なお価格については、オレゴンリージョンでのオンデマンド料金モデルを参照します。
基盤モデル | プロバイダー | モダリティ | 最大トークン | 言語 | 入力トークン 1,000 個あたりの価格 | 入力画像1枚あたりの価格 |
---|---|---|---|---|---|---|
Embed English | Cohere | Embedding | 512 | 英語 | 0.0001 USD | 該当なし |
Embed Multilingual | Cohere | Embedding | 512 | 108 の言語 | 0.0001 USD | 該当なし |
Titan Embeddings G1 - Text | Amazon | Embedding | 8,000 | ※4 | 0.0001 USD | 該当なし |
Titan Multimodal Embeddings G1 | Amazon | Embedding | 128 | 英語 | 0.0008 USD | 0.00006 USD |
※4英語、アラビア語、中国語 (簡体字)、フランス語、ドイツ語、ヒンディー語、日本語、スペイン語、チェコ語、フィリピン語、ヘブライ語、イタリア語、韓国語、ポルトガル語、ロシア語、スウェーデン語、トルコ語、中国語 (繁体字)、オランダ語、カンナダ語、マラヤーラム語、マラーティー語、ポーランド語、タミル語、テルグ語など。
埋め込みモデルでは、Cohere社とAmazon社が提供するモデルを利用できます。
以下では各々の埋め込みモデルについて簡単に紹介します。
Embed
Embedは、Cohere社が提供する埋め込みモデルです。
埋め込みに関して優れた性能を持つと言われており、Bedrockで埋め込みベクトルを生成するのであればまずこちらから検討すると良いかもしれません。
特にEmbed Multilingualは日本語に対応しているため、日本語のテキストを埋め込みベクトルに変換できます。
Titan Embeddings
Titan Embeddingsは、Amazon社が提供する埋め込みモデルです。
Titan Embeddings G1も日本語に対応しており、かつトークン数が多いという特徴を持つため、トークン数がネックになる場面では有力な選択肢になります。
BedrockにおけるTitan Embeddings G1については、以下の記事も合わせてご確認ください。
またTitan Multimodal Embeddings G1は、テキストと画像の組み合わせで埋め込みベクトルを生成する事ができます。
2024/4現在、埋め込みモデルで画像を扱いたい場合は、こちらのモデル一択になります。
BedrockにおけるTitan Multimodal Embeddingsについては、以下の記事も合わせてご確認ください。
画像生成モデル
Amazon Bedrockで利用可能な画像生成モデルは、以下の表の通りです。
なお価格については、オレゴンリージョンでのオンデマンド料金モデルを参照します。
基盤モデル | プロバイダー | モダリティ | 最大トークン | 言語 | 画像解像度 | 標準画質で生成された画像1枚あたりの価格 | 高品質で生成された画像1枚あたりの価格 |
---|---|---|---|---|---|---|---|
SDXL 1.0 | Stability AI | Image | 77 | 英語 | 1024 x 1024 | 0.040 USD | 0.080 USD |
Titan Image Generator G1 | Amazon | Image | 77 | 英語 | 512 x 512 | 0.008 USD | 0.010 USD |
Titan Image Generator G1 | Amazon | Image | 77 | 英語 | 1024 x 1024 | 0.010 USD | 0.012 USD |
画像生成モデルでは、Stability AI社とAmazon社が提供するモデルを利用できます。
以下では各々の画像生成モデルについて簡単に紹介します。
SDXL(Stable Diffusion XL)
SDXLは、Stability AI社が提供する画像生成モデルです。
高画質な画像を生成する事ができるため、Bedrockで画像生成するのであればまずこちらから検討すると良いかもしれません。
BedrockにおけるSDXLについては、以下の記事も合わせてご確認ください。
なおSDXL0.8については、2024/5/1以降レガシーモデルとしてBedrockで利用できなくなるため、本記事では説明を割愛します。
Titan Image Generator
Titan Image Generatorは、Amazon社が提供する画像生成モデルです。
現状SDXLより低価格な画像生成モデルとして利用できるため、コストを抑えたい場面では有力な選択肢になります。
BedrockにおけるTitan Image Generatorについては、以下の記事も合わせてご確認ください。
拡張機能
Amazon Bedrockの基盤モデルをより便利に活用するための機能について紹介します。
ナレッジベース
ナレッジベースは、データソースを集約し、RAGを活用したアプリケーションを構築できる機能です。
AWSに存在するデータストアから情報を取得し、そのデータを元に基盤モデルが応答を生成する事ができます。
Bedrockのナレッジベースについては、以下の記事も合わせてご確認ください。
エージェント
エージェントは、アプリケーション内で自律型エージェントを構築・設定でき、エンドユーザーが組織のデータとユーザー入力に基づいてアクションを実行するのに役立つ機能です。
エージェント専用のAPIを自動的に呼び出してアクションを実行すると共に、ナレッジベースを呼び出してこれらのアクションの情報を補足する事が可能です。
Bedrockのエージェントについては、以下の記事も合わせてご確認ください。
カスタムモデル
カスタムモデルは、基盤モデルに対してトレーニングデータを提供し、モデルをカスタマイズできる機能です。
基盤モデルに対してファインチューニングや継続的な事前トレーニングを実施する事で、特定のユースケースに合わせたパフォーマンスを向上させる事ができます。
Bedrockのカスタムモデルについては、以下の記事も合わせてご確認ください。
その他(プレビュー版機能)
その他の機能について紹介します。
なお以下機能は2024/4現在ではプレビュー版のため、今後のリリースによっては変更される可能性がありますのでご注意ください。
ウォーターマーク検出
ウォーターマークとは、著作権表示のため画像に写し込まれる小さな図案や文字を指します。
ウォーターマーク検出を用いる事で、画像に写し込まれたウォーターマークを検出し、コンテンツが不正に変更されていないかを確認する事ができます。
Bedrockのウォーターマーク検出については、以下の公式ドキュメントも合わせてご確認ください。
モデル評価
モデル評価を用いる事で、モデルの性能を評価し、モデルの改善を行う事ができます。
自動モデル評価、またはヒューマンワーカーによるモデル評価ジョブのいずれかを作成し、使用するモデル、推論パラメータ、モデルが実行するタスクのタイプ、およびジョブで使用されるプロンプトデータを定義できます。
Bedrockのモデル評価については、以下の公式ドキュメントも合わせてご確認ください。
プライバシーとセキュリティ
Amazon Bedrockのプライバシーやセキュリティに関する設定/情報について紹介します。
ログ記録
以下のマネジメントコンソールにおけるBedrockの設定から、モデル呼び出しのログ記録を有効にする事ができます。
ログ記録を有効にする事で、Bedrockの基盤モデル呼び出しに関するログをCloudWatch LogsまたはS3に送信できます。
特にCloudWatch Logsに出力する事で、各種CloudWatch機能と組み合わせてモデル呼び出しを監視する事も可能になります。
Bedrockのモデル呼び出しのログ記録については、以下の記事も合わせてご確認ください。
またBedrockはCloudTrailと統合されているため、BedrockにおけるAPI呼び出しはCloudTrailによって記録されます。
閉域網アクセス
PrivateLinkを併せて利用する事で、Bedrockの基盤モデルを閉域網からのみ呼び出すように設定する事もできます。
Bedrockへのアクセスを閉域網のみに制限する事で、プライベートな生成AIアプリの構築が可能になります。
Bedrockの閉域網アクセスについては、以下の記事も合わせてご確認ください。
利用規約
生成AIサービスを利用する際にプライバシーを保障されるかどうかを確かめるには、利用規約の確認が重要です。
Bedrockの利用規約には、「入力されたプロンプト情報はモデルの学習に利用しない」「不正な利用については自動検出する仕組みが備わっている」等の記載があり、プライバシー保護にも配慮されています。
Bedrockの利用規約については、以下の記事も合わせてご確認ください。
最後に
以上、『AWS入門ブログリレー 2024』の28日目のエントリ『Amazon Bedrock』編でした。
次回、4/22は弊社たかくにによる『Knowledge bases for Amazon Bedrock』編の予定です!