Amazon Bedrockを整理してみた

# 背景・目的
昨年、AWSから、生成AIサービスであるBedrockが発表されました。特徴を調べてみます。

# まとめ
下記に特徴を整理します。

|特徴|説明|
|:--|:--|
|概要|Foundation Model(FM)を統合APIを通じて利用できるフルマネージドサービス|
|ユースケース|・ユースケースに適した最適なFMを簡単に試して評価<BR>・ファインチューニングや、検索拡張生成（RAG）などにより、プライベートにカスタマイズしたり、エンタープライズでデータソースを使用してタスクを実行するエージェントを構築|
|AWSとの統合|・インフラ管理不要<BR>・AWSツールを使用して簡単かつ安全に統合できる|
|機能|・FMを使用してプロンプトを送信し、レスポンスを生成できる<BR>・RAG：独自のデータソースの情報でレスポンスの生成を強化できる<BR>・エージェントを構築できる<BR>・トレーニングデータを使用してモデルを特定のタスクや領域に適応させる<BR>・プロビジョンドスループットを購入し、モデルの推論を割引料金で効率化できる<BR>・ユースケースに最適なモデルを判断する<BR>・ガードレール機能により、不適切なコンテンツを防止する|
|料金|・モデルの推論とカスタマイズに料金がかかる。<BR>・推論は、オンデマンド（従量課金）とプロビジョンド（時間課金）に分かれる|

## 主な定義
### 基本的な概念
|概念 |説明|
|:--|:--|
|基盤モデル (FM) |・様々なユースケースに対応できる<BR>・テキストまたは画像を生成する|
|ベースモデル|・プロバイダーによりパッケージ化されている<BR>・すぐに使用可能|
|モデル推論 |・入力から出力を生成するFMのプロセス|
|プロンプト|・入力に適切なレスポンス、出力を生成するように指示する入力<BR>・プロンプトには、レスポンスが使用するモデルのタスクのコンテキスト、出力例、テキストを含めることが可能|
|トークン|・モデルが単一の意味の単位として解釈または予測できる一連の文字<BR>・テキストモデルであれば、単語だけではなく文法上の意味、句読点、一般的なフレーズを持つ単語の一部にも対応可能|
|モデルパラメータ|・入力の解釈とレスポンスの生成におけるモデルとその動作を定義する値<BR>・モデルパラメータはプロバイダーによって制御・更新できる<BR>・モデルパラメータを更新して、モデルカスタマイズのプロセスを通じて新しいモデルを生成することも可能|
|推論パラメータ|・推論中に調整できる値<BR>・推論パラメータは、レスポンスがどの程度変化するかに影響する<BR>・レスポンスの長さ、指定されたシーケンスの出現を制限することも可能|
|プレイグラウンド|・モデル推論の実行を試すGUI<BR>・入力した様々なプロンプトに対して、生成されたレスポンスに対する様々なモデル、設定、推論パラメータの影響をテストする|
|埋め込み|・異なるオブジェクト間の類似性を比較するために、入力を埋め込みと呼ばれる数値ベクトルに変換して情報を集約するプロセス<BR>・例<BR>　・文章と意味の類似性を比較<BR>　・画像を比較し視覚的な類似性を判断<BR>　・テキストと画像を比較し相互に関連性があるか|

### 高度な機能
|機能|説明|
|:--|:--|
|オーケストレーション|・タスクを実行するために、FMとエンタープライズデータ、アプリケーションを調整するプロセス|
|エージェント|入力を周期的に解釈し、基盤モデルを使用して出力を生成するオーケストレーションを実行するアプリケーション|
|取得拡張生成 (RAG) |レスポンスを補強するために、データソースから情報をクエリおよび取得するプロセス|
|モデルのカスタマイズ|・トレーニングデータを使用して、カスタムモデルを生成するためにベースモデルのパラメータを調整するプロセス<BR>例<BR> ・ラベル付きデータを使用する微調整<BR>・ラベルなしデータを使用してモデルパラメータを調整する継続的な事前トレーニング|
|ハイパーパラメータ|モデルのカスタマイズに合わせて調整して下記を制御できる値<BR>　・トレーニングプロセス<BR>　・結果<BR>　・出力カスタムモデル|
|モデル評価|ユースケースに最適なモデルを決定するために、モデル出力を評価、比較するプロセス|
|プロビジョンドスループット|・モデル推論中に処理されるトークンの量やレートをあげる<BR>・ベースモデル、カスタムモデル用に購入するスループットのレベル|

## Amazon Bedrock でサポートされている基盤モデル
[Amazon Bedrock でサポートされている基盤モデル](https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-usage.html)を元に整理します

:::note info
2024年5月6日時点の情報です。最新の情報や詳細は[ドキュメント](https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-usage.html)をご確認ください
:::

|Provider|Model|Input modalities|Output modalities|
|:---|:---|:---|:---|
|Amazon	|Titan Text G1 - Express	|Text	|Text, Chat|
||Titan Text G1 - Lite	|Text|Text|
||Titan Image Generator G1	|Text, Image|Image|
||Titan Embeddings G1 - Text|Text|Embeddings|
||Titan Embeddings Text V2|Text|Embeddings|
||Titan Multimodal Embeddings G1|Text, Image|Embeddings|
|Anthropic|Claude|Text|Text, Chat|Link|
||Claude Instant|Text|Text, Chat|
||Claude 3 Sonnet|Text, Image|Text, Chat|
||Claude 3 Haiku|Text, Image|Text, Chat|
||Claude 3 Opus|Text, Image|Text, Chat|
|AI21 Labs|Jurassic-2 Mid|Text|Text, Chat|
||Jurassic-2 Ultra|Text|Text, Chat|
|Cohere|Command|Text|Text|
||Command Light|Text|Text|
||Command R|Text|Text, Chat|
||Command R+|Text|Text, Chat|
||Embed English|Text|Embeddings|
||Embed Multilingual|Text|Embeddings|
|Meta|Llama 2 Chat 13B|Text|Text, Chat|
||Llama 2 Chat 70B|Text|Text, Chat|
||Llama 2 13B (see note below)|Text|Text|
||Llama 2 70B (see note below)|Text|Text|
||Llama 3 8b Instruct|Text|Text, Chat|
||Llama 3 70b Instruct|Text|Text, Chat|
|Mistral AI|Mistral 7B Instruct|Text|Text|
||Mixtral 8X7B Instruct|Text|Text|
||Mistral Large|Text|Text|
|Stability AI|Stable Diffusion XL|Text, Image|Image|




# 概要
[Amazon Bedrock とは](https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/what-is-bedrock.html)を元に整理します。

> Amazon Bedrock は、主要な AI スタートアップや Amazon が提供する高パフォーマンスな基盤モデル (FM) を、統合 API を通じて利用できるようにするフルマネージド型サービスです。さまざまな基盤モデルから選択して、ユースケースに最適なモデルを見つけることができます。Amazon Bedrock には、セキュリティ、プライバシー、責任のある AI を備えた生成 AI アプリケーションを構築するためのさまざまな機能も用意されています。Amazon Bedrock を使用すると、ユースケースに適した最善の基盤モデルを簡単に試して評価したり、ファインチューニングや検索拡張生成 (RAG) などの手法を使用して基盤モデルをデータでプライベートにカスタマイズしたり、エンタープライズシステムやデータソースを使用してタスクを実行するエージェントを構築したりできます。

- Foundation Model(FM)を統合APIを通じて利用できるフルマネージドサービス
- ユースケース
    - ユースケースに適した最適なFMを簡単に試して評価
    - ファインチューニングや、検索拡張生成（RAG）などにより、プライベートにカスタマイズしたり、エンタープライズでデータソースを使用してタスクを実行するエージェントを構築

> Amazon Bedrock のサーバーレスエクスペリエンスを使用すると、インフラストラクチャを管理することなく、独自のデータを使用して基盤モデルをすばやくプライベートにカスタマイズし、 AWS ツールを使用して簡単かつ安全に統合してアプリケーションにデプロイできます。

- インフラ管理不要
- AWSツールを使用して簡単かつ安全に統合できる

## 機能
> Amazon Bedrock 基盤モデルを活用して、次の機能を確認してください。リージョン別の機能制限については、「」を参照してくださいAWS 地域別のモデルサポート。
> - プロンプトと設定を試す – さまざまな設定や基盤モデルを使用してプロンプトを送信し、モデル推論を実行することで、レスポンスを生成できます。API またはコンソールのテキスト、イメージ、チャットのプレイグラウンドを使用して、グラフィカルインターフェイスで試すことができます。準備ができたら、InvokeModel API にリクエストを送信するようにアプリケーションを設定します。
> - 独自のデータソースの情報でレスポンスの生成を強化する – 問い合わせ対象となるデータソースをアップロードしてナレッジベースを作成し、基盤モデルのレスポンスの生成を強化できます。
> - 顧客の支援方法を推論するアプリケーションを作成する – 基盤モデルを使用し、API 呼び出しを行い、(オプションで) ナレッジベースに問い合わせ、顧客に代わってタスクを推論して実行するエージェントを構築できます。
> - トレーニングデータを使用してモデルを特定のタスクや領域に適応させる – ファインチューニングや継続的な事前トレーニングのためのトレーニングデータを提供することで Amazon Bedrock 基盤モデルをカスタマイズし、モデルのパラメータを調整したり、特定のタスクや領域でのパフォーマンスを向上させたりできます。
> - FM ベースのアプリケーションの効率と出力を向上させる – 基盤モデルのプロビジョンドスループットを購入すると、モデルの推論を割引料金でより効率的に実行できます。
> - ユースケースに最適なモデルを判断する – 組み込みまたはカスタムのプロンプトデータセットを使用してさまざまなモデルの出力を評価し、アプリケーションに最適なモデルを判断できます。
> 注記
Amazon Bedrock のモデル評価はプレビューリリースであり、変更される可能性があります。
> - 不適切または望ましくないコンテンツの防止 – Amazon Bedrock のガードレール機能を使用して、生成 AI アプリケーションに保護手段を実装できます。
注記
Amazon Bedrock のガードレール機能は限定プレビューリリースに付属しています。アクセスをリクエストするには、 AWS アカウント マネージャーにお問い合わせください。

下記の機能があります
- FMを使用してプロンプトを送信し、レスポンスを生成できる
- RAG：独自のデータソースの情報でレスポンスの生成を強化できる
- エージェントを構築できる
- トレーニングデータを使用してモデルを特定のタスクや領域に適応させる
- プロビジョンドスループットを購入し、モデルの推論を割引料金で効率化できる
- ユースケースに最適なモデルを判断する
- ガードレール機能により、不適切なコンテンツを防止する

## Amazon Bedrock の料金
[Amazon Bedrock の料金](https://aws.amazon.com/bedrock/pricing/)を元に整理します。

> Amazon Bedrock では、モデルの推論とカスタマイズに料金がかかります。推論については、次の 2 つの消費プランから選択できます。1/ オンデマンド: このモードでは、時間ベースの契約を行うことなく、従量課金制で FM を使用できます。2/ プロビジョンドスループット: このモードでは、時間ベースの契約で、アプリケーションのパフォーマンス要件を満たす十分なスループットをプロビジョニングできます。

- モデルの推論とカスタマイズに料金がかかる
- モデルの推論では、下記の2つに分かれる
    - オンデマンド
        - 従量課金
    - プロビジョンド
        - 時間ベースの契約
        - パフォーマンス要件を満たす十分なスループット

### 料金モデル
#### オンデマンド
> オンデマンドモードでは、使用した分のみのお支払いとなり、時間ベースの契約はありません。テキスト生成モデルでは、入力トークンの処理および出力トークンの生成ごとに課金されます。埋め込みモデルでは、入力トークンの処理ごとに課金されます。トークンは数文字で構成されており、ユーザー入力と、結果を生成するためのプロンプトを理解するためにモデルが学習する基本単位です。画像生成モデルでは、画像の生成ごとに課金されます。

- 入力トークンの処理、出力トークンの生成ごとに課金される
- 埋め込みモデルは、入力トークンごとに課金される
- トークンとは、数字と文字で構成されており、ユーザ入力と結果を生成するためのモデルが学習スル基本単位
- 画像生成モデルでは、画像生成事に課金される

#### Batch
> バッチモードでは、一連のプロンプトを単一の入力ファイルとして提供し、応答を単一の出力ファイルとして受け取ることができるため、大規模な予測を同時に取得できます。レスポンスは処理され、Amazon S3 バケットに保存されるため、後でアクセスできます。バッチモードの料金は、オンデマンドモードの料金と同じです。

- 一連のプロンプトを単一の入力ファイルとして提供し、応答を単一の出力ファイルとして受け取る
- 大規模な予測を同時に取得できる
- レスポンスはS3に格納される
- 料金は、オンデマンドと同様

#### プロビジョンドスループット
> Provisioned スループットモードでは、特定のベースモデルまたはカスタムモデルのモデルユニットを購入できます。プロビジョンドスループットモードは、主に、スループットの保証を必要とする大規模で一貫性のある推論ワークロード向けに設計されています。カスタムモデルには、プロビジョンドスループットを使用してのみアクセスできます。モデルユニットは、1 分あたりに処理される入力トークンまたは出力トークンの最大数によって測定される特定のスループットを提供します。時間単位で課金されるこのプロビジョンドスループット料金設定では、1 か月または 6 か月の契約期間を柔軟に選択できます。

- 特定のベースモデル、カスタムモデルのモデルユニットを購入できる
- スループットの保証を必要とする大規模で一貫性のある推論ワークロード向けに設計されている
- カスタムモデルには、プロビジョンドスループットを使用してのみアクセス可能
- モデルユニットは1分あたりに処理される入力トークンまたは、出力トークンの最大数により測定される特定のスループットを提供
- 1ヶ月または6ヶ月の契約期間を柔軟に選択可能

#### モデルのカスタマイズ
> Amazon Bedrock を使用すると、データを使用して FM をカスタマイズし、特定のタスクやビジネスコンテキストに合わせてカスタマイズされた応答を提供できます。ラベル付けされたデータを使用してモデルを微調整することも、ラベル付けされていないデータで継続的な事前トレーニングを行うこともできます。テキスト生成モデルのカスタマイズでは、モデルが処理したトークンの数 (トレーニングデータコーパス内のトークン数 x エポック数) に基づいてモデルトレーニング費用が課金されます。また、モデルのストレージはモデルごとに毎月課金されます。エポックとは、微調整プロセス中にトレーニングデータセットを 1 回完全に通過することを指します。カスタマイズされたモデルを使用した推論は、プロビジョニングされたスループットプランに基づいて課金され、プロビジョニングされたスループットを購入する必要があります。カスタマイズされたモデルでは、1 つのモデルユニットが契約期間なしで、推論に使用できます。この単一モデルユニットがカスタムモデルの推論に使用した時間数に対して課金されます。スループットを 1 つのモデルユニット以上に増やしたい場合は、1 か月または 6 か月の契約期間プランを購入する必要があります。

- データを使用してFMをカスタマイズし、特定のタスクやビジネスコンテキストに合わせてカスタマイズされたレスポンスを提供できる
- 下記が可能
    - ラベルづけされたデータを使用してモデルを微調整する
    - ラベル付けできないデータで継続的な事前トレーニングも可能
- モデルが処理したトークン数に基づきトレーニング費用が課金される
    - トレーニングデータコーパス内のトークン数✕エポック数
    - エポックとは、微調整プロセス中にトレーニングデータセットを1回完全に通過すること
- モデルのストレージはモデルごとに毎月課金
- 1つのモデルユニットが契約期間なしで推論に使用できる
- カスタムモデルの推論に使用した時間数に対して課金
- スループットを1つのモデルユニットより増やしたい場合、1ヶ月または6ヶ月の契約プランを購入する

## 主な定義
### 基本概念
#### 基盤モデル (FM) 
> 多数のパラメータを持ち、大量の多様なデータに基づいてトレーニングされた AI モデル。基盤モデルは、さまざまなユースケースに対してさまざまなレスポンスを生成できます。基盤モデルはテキストまたは画像を生成し、入力を埋め込みに変換することもできます。Amazon Bedrock 基盤モデルを使用する前に、 へのアクセスをリクエストする必要があります。基盤モデルの詳細については、「」を参照してくださいAmazon Bedrock でサポートされている基盤モデル。

- 様々なユースケースに対応できる
- テキストまたは画像を生成する

#### ベースモデル
> プロバイダーによってパッケージ化され、すぐに使用できる基盤モデル。Amazon Bedrock は、主要なプロバイダーが提供する業界でも先行するさまざまな基盤モデルを提供しています。詳細については、「Amazon Bedrock でサポートされている基盤モデル」を参照してください。

- 　プロバイダーによりパッケージ化されている
- 　すぐに使用可能

#### モデル推論 
> 特定の入力 (プロンプト) から出力 (レスポンス) を生成する基盤モデルのプロセス。詳細については、「モデル推論を実行する」を参照してください。

- 入力から出力を生成するFMのプロセス

#### プロンプト
> 入力に適切なレスポンスまたは出力を生成するように指示するモデルに提供される入力。例えば、テキストプロンプトは、モデルが応答する 1 行で構成されたり、モデルが実行する指示やタスクを詳細に説明したりできます。プロンプトには、レスポンスで使用するモデルのタスクのコンテキスト、出力例、またはテキストを含めることができます。プロンプトを使用して、分類、質問への回答、コード生成、クリエイティブな記述などのタスクを実行できます。詳細については、「 プロンプトエンジニアリングガイドライン」を参照してください。

- 入力に適切なレスポンス、出力を生成するように指示する入力
- プロンプトには、レスポンスが使用するモデルのタスクのコンテキスト、出力例、テキストを含めることが可能

#### トークン
> モデルが単一の意味の単位として解釈または予測できる一連の文字。例えば、テキストモデルでは、トークンは単語だけでなく、文法上の意味 (「-ed」など）、句読点 (「？」など）、または一般的なフレーズ (「大量の」など) を持つ単語の一部にも対応できます。

- モデルが単一の意味の単位として解釈または予測できる一連の文字
- テキストモデルであれば、単語だけではなく文法上の意味、句読点、一般的なフレーズを持つ単語の一部にも対応可能

#### モデルパラメータ
> 入力の解釈とレスポンスの生成におけるモデルとその動作を定義する値。モデルパラメータはプロバイダーによって制御および更新されます。モデルパラメータを更新して、モデルカスタマイズ のプロセスを通じて新しいモデルを作成することもできます。

- 入力の解釈とレスポンスの生成におけるモデルとその動作を定義する値
- モデルパラメータはプロバイダーによって制御・更新できる
- モデルパラメータを更新して、モデルカスタマイズのプロセスを通じて新しいモデルを生成することも可能

#### 推論パラメータ
> レスポンスに影響を与えるためにモデル推論中に調整できる値。推論パラメータは、さまざまなレスポンスがどの程度変化するかに影響し、レスポンスの長さや指定されたシーケンスの出現を制限することもできます。特定の推論パラメータの詳細と定義については、「」を参照してください推論パラメータ。

- 推論中に調整できる値
- 推論パラメータは、レスポンスがどの程度変化するかに影響する
- レスポンスの長さ、指定されたシーケンスの出現を制限することも可能

#### プレイグラウンド
> Amazon Bedrock に慣れるためにモデル推論の実行を試す AWS Management Console ことができる、 のわかりやすいグラフィカルインターフェイス。プレイグラウンドを使用して、入力したさまざまなプロンプトに対して生成されたレスポンスに対するさまざまなモデル、設定、推論パラメータの影響をテストします。詳細については、「プレイグラウンド」を参照してください。

- モデル推論の実行を試すGUI
- 入力した様々なプロンプトに対して、生成されたレスポンスに対する様々なモデル、設定、推論パラメータの影響をテストする

#### 埋め込み
> 共有数値表現を使用して異なるオブジェクト間の類似性を比較するため、入力を埋め込み と呼ばれる数値のベクトルに変換して情報を集約するプロセス。例えば、文を比較して意味の類似性を判断したり、画像を比較して視覚的な類似性を判断したり、テキストと画像を比較して相互に関連性があるかどうかを調べたりできます。ユースケースに関連する場合は、テキストと画像の入力を平均的な埋め込みベクトルに結合することもできます。詳細については、モデル推論を実行するおよびAmazon ベッドロックのナレッジベースを参照してください。

- 異なるオブジェクト間の類似性を比較するために、入力を埋め込みと呼ばれる数値ベクトルに変換して情報を集約するプロセス
- 例
    - 文章と意味の類似性を比較
    - 画像を比較し視覚的な類似性を判断
    - テキストと画像を比較し相互に関連性があるか

### 高度な機能
#### オーケストレーション
> タスクを実行するために基盤モデルとエンタープライズデータおよびアプリケーションを調整するプロセス。詳細については、「Agents for Amazon Bedrock」を参照してください。

- タスクを実行するために、FMとエンタープライズデータ、アプリケーションを調整するプロセス

#### エージェント
> 入力を周期的に解釈し、基盤モデルを使用して出力を生成するオーケストレーションを実行するアプリケーション。エージェントは、顧客のリクエストを実行するために使用できます。詳細については、「Agents for Amazon Bedrock」を参照してください。

- 入力を周期的に解釈し、基盤モデルを使用して出力を生成するオーケストレーションを実行するアプリケーション

#### 取得拡張生成 (RAG) 
> プロンプトに対する生成されたレスポンスを補強するために、データソースから情報をクエリおよび取得するプロセス。詳細については、「Amazon ベッドロックのナレッジベース」を参照してください。

- レスポンスを補強するために、データソースから情報をクエリおよび取得するプロセス

#### モデルのカスタマイズ
> トレーニングデータを使用して、カスタムモデルを作成するためにベースモデルのモデルパラメータ値を調整するプロセス。モデルのカスタマイズの例としては、ラベル付きデータ (入力と対応する出力) を使用する微調整 や、ラベルなしデータ (入力のみ) を使用してモデルパラメータを調整する継続的な事前トレーニング などがあります。Amazon Bedrock で使用できるモデルカスタマイズ技術の詳細については、「」を参照してくださいカスタムモデル。

- トレーニングデータを使用して、カスタムモデルを生成するためにベースモデルのパラメータを調整するプロセス
- 例
    - ラベル付きデータを使用する微調整
    - ラベルなしデータを使用してモデルパラメータを調整する継続的な事前トレーニング

#### ハイパーパラメータ
> モデルのカスタマイズに合わせて調整してトレーニングプロセスと、その結果、出力カスタムモデルを制御できる値。特定のハイパーパラメータの詳細と定義については、「」を参照してくださいカスタムモデルのハイパーパラメータ。

- モデルのカスタマイズに合わせて調整して下記を制御できる値
    - トレーニングプロセス
    - 結果
    - 出力カスタムモデル

#### モデル評価
> ユースケースに最適なモデルを決定するために、モデル出力を評価および比較するプロセス。詳細については、「モデル評価」を参照してください。

- ユースケースに最適なモデルを決定するために、モデル出力を評価、比較するプロセス

#### プロビジョンドスループット
> モデル推論中に処理されるトークンの量やレートを上げるために、ベースモデルまたはカスタムモデル用に購入するスループットのレベル。モデルのプロビジョンドスループットを購入すると、モデル推論の実行に使用できるプロビジョンドモデルが作成されます。詳細については、「Amazon Bedrock のプロビジョニングされたスループット」を参照してください。

- モデル推論中に処理されるトークンの量やレートをあげる
- ベースモデル、カスタムモデル用に購入するスループットのレベル

## Amazon Bedrock でサポートされている基盤モデル
[Amazon Bedrock でサポートされている基盤モデル](https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-usage.html)を元に整理します

[まとめ](https://qiita.com/zumax/items/ad61c2ae4cb767aff05f#amazon-bedrock-%E3%81%A7%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%9F%BA%E7%9B%A4%E3%83%A2%E3%83%87%E3%83%AB)をご確認ください。

# 考察
今回は、Bedrockの特徴や対応するモデル、料金等を整理しました。今後はプレイグラウンドを通して実際に試してみたいと思います。

# 参考

https://aws.amazon.com/jp/bedrock/

https://docs.aws.amazon.com/ja_jp/bedrock/?icmpid=docs_homepage_ml

https://aws.amazon.com/bedrock/pricing/


https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/models-supported.html