Writer: sagawa 更新日:2023/11/14
初めまして、福岡オフィスエンジニアの佐川です。今回、このブログでは、Amazon Web Services(AWS)の比較的新しいサービス「Amazon Bedrock」について紹介します。最近のクラウド技術の進展を追っている方は、このサービスの存在を耳にしたことがあるかもしれません。Amazon Bedrockの概要から特徴、利用開始までの流れ、使い方、料金を解説していきます。
サービス概要
Amazon Bedrockは、Amazon や主要な AI スタートアップ企業が提供する基盤モデル (FM) を API を通じて利用できるようにする完全マネージド型サービスです。そのため、さまざまな FM から選択して、ユースケースに最も適したモデルを見つけることができます。
https://aws.amazon.com/jp/bedrock/
簡単に言うと、生成系AIアプリを作成・拡張するサービスで、多様なAIと連携し、APIを利用してデータの解析などが行える。と言うことです。
特徴
・完全マネージド型サービス
GPUインスタンスなどを用意する必要はないと言うことです。
・多彩なAIの選択肢
テキスト、コード、画像処理用など、多種多様なAIモデルを利用可能です。
・モデルのカスタマイズ
自社のニーズに合わせてAIを教育し、より賢くすることができます。
・モデルプロバイダーの選択
異なる専門分野を持つ複数のモデルプロバイダーから選択できます。
学習情報の取り扱い
Amazon Bedrockは、学習情報などのデータに関して、プライバシーを守るように作られています。入力した情報や設定したカスタマイズは、ユーザーのAWSアカウント内だけに保たれ、Amazonがサービスを良くするために使ったり、他の会社に渡したりすることはないようです。
したがって、ユーザーデータをトレーニングに使用しないことから、ChatGPTを利用できない企業にとって、新たな選択肢になると思われます。
ChatGPTとの違い
・カスタマイズ性
Amazon Bedrockは、独自のデータでカスタマイズすることができるため、特定のビジネスニーズに合わせてAIを調整することが可能です。そのため開発者は、特定の分野や市場に調整したAIをソフトウェアで利用することができます。
一方で、ChatGPTは、OpenAIによって開発された汎用的なAIモデルで、ユーザーによるAIの調整は限定されています。
・AWSとの関係性
Amazon Bedrockは、AWSと密接に連携しているため、AWSでの作業を簡単にします。AWSで既に使っているツールや機械学習サービスとの連携もスムーズです。
一方で、ChatGPTは、別会社のサービスとなるので、AWSと連携させるためにはAmazon Bedrockよりも、少し手間がかかります。
・データのプライバシーとコントロール
Amazon Bedrockは、ユーザーのAWSアカウント内でのみデータを処理し、プライバシーを守ります。
一方で、ChatGPTは、デフォルトでユーザーの入力データをサービス改善に使用する可能性があり、ユーザーが特別にリクエストしない限り、提供されたデータはプラットフォームの性能向上のために利用されることがあります。
・モデルの提供元
Amazon Bedrockは、複数のAIモデルプロバイダーからのAIモデルを提供しています。多くのAIを提供しているため、開発者は求める条件に特化したAIを選択できます。
一方で、ChatGPTは、OpenAIによって提供される単一のモデルで、利用できるAIが限られています。
上記から、Amazon Bedrockは、自身のニーズに合わせてAIをカスタマイズできることや、データの安全性が確保されているため、特に企業に適していると言えるが、ChatGPTは、迅速で手軽なAI体験を提供しているため、一般ユーザーに適していると言えそうです。
利用開始までの流れ
コンソール画面での準備
まずは、AWSのコンソール画面でAmazon Bedrockの画面を開き、Model Accessというところから、モデルを有効にします。
ちなみに、ブログ作成時点で、ap-northeast-1でのAIモデルは以下のようになっています。us-east-1では全てのAIモデルが使用できます。
今回は、Claude Instantを使用したいため、[Manage model access]を押下後、[Submit use case details]を押下します。
以下の使用理由の詳細情報が表示されるので、必要情報を記入し、[Submit]を押下します。
少しの時間が経過した後、Claude InstantのAccess statusが、<Use case details required>から<Available to request>に変更されるので、再度、[Manage model access]を押下し、Claude Instantにチェックを入れ[Save changes]を押下します。
<In Progress>から<Access granted>に変わるまで待ち、以下のようになればコンソール画面での準備は完了になります。
テスト
バージョン情報
・Python バージョン 3.9.2
・boto3 バージョン 1.28.60
・pandas バージョン 2.1.1
テストコードの検証
今回は以下のコードでテストしました。
料金体系がデフォルトのオンデマンドであれば従量課金制になるので"max_tokens_to_sample": 200の部分の数値を変更することでトークンのMAX値を設定できます。今回は200にしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import boto3 import json import pandas as pd # AWSログイン設定 credentials_csv = 'credentials.csv' credentials_key = pd.read_csv(credentials_csv, encoding='cp932') access_key = credentials_key['Access key ID'][0] secret_key = credentials_key['Secret access key'][0] # bedrock の初期設定 bedrock_client = boto3.client( service_name ='bedrock-runtime', region_name ='ap-northeast-1', aws_access_key_id = access_key, aws_secret_access_key = secret_key ) chat_prompt = """ Human: 室内で育てるのに適した植物は何ですか? Assistant: """ body = json.dumps({ "prompt": chat_prompt, "max_tokens_to_sample": 200, }) modelId = 'anthropic.claude-instant-v1' accept = 'application/json' contentType = 'application/json' model_response = bedrock_client.invoke_model( body = body, modelId = modelId, accept = accept, contentType = contentType ) decoded_response = model_response["body"].read().decode() print(json.loads(decoded_response)["completion"]) |
ちなみに、API に送信されるプロンプトは以下のようにする必要があります。
1 2 |
Human: Assistant: |
結果は以下のような返答が返ってきました。
料金体系
Amazon Bedrockの料金は、使用するモデルのタイプ、カスタマイズの有無、プロビジョンドスループットの契約期間などによって異なります。
オンデマンド
オンデマンドモードは、実際に使用した量に応じて支払う、従量課金制が採用されています。これは時間に基づいた契約が不要で、不定期に利用する個人ユーザーや使用量が検討がつかない場合に適しています。
テキスト生成では、ユーザーの入力とそれに対する応答の生成に使われるトークンの数に基づいて料金が発生し、画像生成では、生成される画像ごとに料金が発生します。
トークンとは、モデルがユーザーの入力を理解し、適切な応答を生成するために学習する基本単位です。
プロビジョンドスループット
プロビジョンドスループットは、特定のモデルのユニットを購入し、一定のスループットを保証するための料金体系で、大規模で一貫性のある推論ワークロード向けに設計されています。時間単位で課金され、1か月または6か月の契約期間を選ぶことができます。
スループットとは、一定時間内にシステムが処理できるデータ量のことを指します。
モデルのカスタマイズ(微調整)
Amazon Bedrockは、既存のAIモデルに特定のデータセットを用いて追加学習を施すことで、特別なビジネス要件に合わせてモデルをカスタマイズすることもできます。
カスタマイズの費用は、トレーニングに使用するデータの量と学習を繰り返す回数によって決まり、さらに、そのカスタムモデルの保管にも月額料金がかかります。
カスタマイズされたモデルは、オンデマンドではなく、プロビジョンドスループットの処理能力でのみ利用可能です。
初期設定では1モデルユニットから始まり、必要に応じて契約期間を設定してスループットを拡張できます。
モデル別の料金の内訳
AI21 Labs(エーアイ21ラボズ)
<オンデマンド料金>
AI21で利用可能なモデル |
1000トークンの入力(リクエスト)ごとにかかる費用 | 1000トークン出力ごとにかかる費用 |
Jurassic-2 Mid | 0.01250ドル | 0.01250ドル |
Jurassic-2 Ultra | 0.001880ドル | 0.01880ドル |
AI21 Lab モデルにおけるモデルのカスタマイズ(微調整)とプロビジョンドスループットの機能は、まだ提供されていません。
Amazon(アマゾン)
<オンデマンド料金>
AmazonTitanで利用可能なモデル | 1000トークンの入力(リクエスト)ごとにかかる費用 | 1000トークン出力ごとにかかる費用 |
Titan Text – Lite | 0.0003ドル | 0.0004ドル |
Titan Text – Express | 0.0013ドル | 0.0017ドル |
Titan Embeddings | 0.0001ドル | なし |
<カスタマイズ料金>
AmazonTitanで利用可能なモデル | 1000トークンのトレーニングにかかる費用※ | カスタムモデルの 月間保管費用 |
カスタムモデルの推論における1モデルあたり1hの料金(定額契約を結ばない従量課金のスループットコスト) |
Titan Text – Lite | 0.0004ドル | 1.95ドル | 7.10ドル |
Titan Text – Express | 0.0008ドル | 1.95ドル | 20.50ドル |
※総トレーニングトークン量 = コーパス内のトークン合計数 × 実行エポックの総数
<プロビジョンドスループット料金>
AmazonTitanで利用可能なモデル | 1時間のモデル使用料 (契約なし)※ |
1時間のモデル使用料 (1か月)※ |
1時間のモデル使用料 (6か月)※※ |
Titan Text– Lite | 7.10ドル | 6.40ドル | 5.10ドル |
Titan Text – Express | 20.50ドル | 18.40ドル | 14.80ドル |
Titan Embeddings | なし | 6.40ドル | 5.10ドル |
※契約を結ばずに利用するカスタムモデルの推論は、モデルユニットを1つまでに限定されています。※※ベースおよびカスタムモデルの推論に適用され、複数モデルユニットの購入が可能になります。
おおよその金額例
想定:Titan Text– Liteのモデルユニット1つを1ヶ月間の契約で購入し、利用した場合
毎月の総料金=1ユニット×$6.40/時×24時間×31日=$4,761.6×約150円/$=約71万4240円
Anthropic(アンスロピック)
<オンデマンド料金>
Anthropicで利用可能なモデル |
1000トークンの入力(リクエスト)ごとにかかる費用 | 1000トークン出力ごとにかかる費用 |
Claude Instant | 0.00163ドル | 0.00551ドル |
Claude | 0.01102ドル | 0.03268ドル |
<プロビジョンドスループット料金>
Anthropicで利用可能なモデル |
1時間のモデル使用料(1か月)※ | 1時間のモデル使用料(6か月)※ |
Claude Instant | 39.60ドル | 22.00ドル |
Claude | 63.00ドル | 35.00ドル |
※ベースモデル及びカスタムモデルの推論をカバーしています。
おおよその金額例
想定:Claude Instantのモデルユニット1つを1ヶ月間の契約で購入し、利用した場合
毎月の総料金=1ユニット×$39.60/時×24時間×31日=$29,462.4×約150円/$=約441万9360円
Cohere(コーヒア)
<オンデマンド料金>
Cohereで利用可能なモデル |
1000トークンの入力(リクエスト)ごとにかかる費用 | 1000トークン出力ごとにかかる費用 |
Command | 0.0015ドル | 0.0020ドル |
Cohereモデルにおけるモデルのカスタマイズ(微調整)とプロビジョンドスループットの機能は、まだ提供されていません。
Stability AI(スタビリティエーアイ)
<オンデマンド料金>
StabilityAIで利用可能なモデル |
画像解像度 | 標準的な品質 (50ステップ以下の範囲) |
上質レベルの品質 (50ステップを超える範囲) |
SDXL0.8 | 512x512 まで | 画像あたり0.018ドル | 画像あたり0.036ドル |
512x512 を超える範囲 | 画像あたり0.036ドル | 画像あたり0.072ドル |
<プロビジョンドスループット料金>
StabilityAIで利用可能なモデル |
1時間のモデル使用料(1か月)※ | 1時間のモデル使用料(6か月)※ |
SDXL1.0 | 49.86ドル | 46.18ドル |
※ベースモデル及びカスタムモデルの推論をカバーしています。
Stability AIモデルにおけるモデルのカスタマイズ(微調整)の機能は、まだ提供されていません。
おおよその金額例
想定:SDXL1.0のモデルユニット1つを1ヶ月間の契約で購入し、利用した場合
毎月の総料金=1ユニット×$49.86/時×24時間×31日=$37,095.84×約150円/$=約556万4376円
終わりに
このブログではAmazon Bedrockについて解説しました。Claudeのようなモデルを使った日本語対話の可能性から、AWSのシームレスな統合まで、Amazon BedrockはAIの利用を手軽にし、開発者や企業に新たな可能性をもたらしてくれます。
今回取り上げたClaudeは日本語の長い文章にも対応しており、チャットボットとしての機能も期待できるみたいです。
是非、この機会にAmazon Bedrockの機能を試し、自分のビジネスやプロジェクトにどう活かせるか探ってみてください。このブログがその第一歩となり、読者の皆様にとって有用な情報源となれば幸いです。