Amazon Bedrock で Claude 2.1 モデルが東京リージョンに対応！

# ついに Claude 2.1 が東京リージョンに来ました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3567948/e4b2d1f3-2f1d-1ab8-d0bc-631508c5485c.png)

これまで東京リージョンで利用可能だったAnthropic社基盤モデル「Claude Instant」は、「高速で低価格」を主な特徴とする性能重視のものでした。魅力的な要素ではありますが、一方で、それぞれのユースケースに合致するわけではありませんでした。さらに、複雑な推論を求められたり、高い精度が必要とされる場合には、対応するのが難しかったのです。

そのような状況から、「Claude 2」を利用したいユーザーは、別のリージョン（例えばバージニア北部）を利用しなければならず、セキュリティ面での問題やレイテンシによる応答時間の遅さなど、不便な状況に置かれることがありました。

Claude 2.1 の東京リージョンでの利用開始により、これらの問題は大幅に改善され、日本のユーザーにとってBedrockがより手軽に利用することが可能となります。

| 基盤モデル | モデル属性|最大トークン|ユースケース|オンデマンド料金<br>(入力トークン1,000個あたり)|オンデマンド料金<br>(出力トークン1,000個あたり)|
| :------: | :------ |:------:|:------|:------:|:------:|
| Claude 2.1 | テキスト生成, 会話, <b>複雑な推論と分析 |200k|要約、Q&A、トレンド予測、複数の文書の比較と対比、分析|0.00800 USD|0.02400 USD|
| Claude Instant 1.2 |テキスト生成, 会話 |18k|カジュアルな対話、テキスト分析、要約、文書理解|0.00080 USD|0.00240 USD|

# Claude 2 が東京リージョンで利用可能になったメリット
日本のユーザーにとって特に2つの利点があります。

#### １．レスポンスが高速化
東京リージョン内のサービス間のアクセスにおいて、データの転送速度が向上し、レイテンシも改善します。

#### ２．セキュリティとガバナンスへの対応
セキュリティやガバナンスの面から、データや通信を日本から出してはいけないというような企業にとって、Claude 2.1が東京リージョンで利用可能になったことは大きなメリットになります。

# では、さっそく使ってみましょう

Claude 2.1 と Claude Instant 1.2 に対して簡単な質問をしてみます。
※デフォルトで比較する機能がBedrockにあること今気づきました！素晴らしい♪

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3567948/589ef47c-b5cb-7341-6685-5d47841784f2.png)

##### Claude 2.1（キャプチャの左側）
回答に時間が掛かったものの、回答内容は具体性と正確性 ◯ でした。

##### Claude Instant 1.2（キャプチャの右側）
回答が高速だったものの、回答内容は具体性と正確性が △ でした。

# せっかくなのでレイテンシを比較してみる
東京リージョンのLambda から、バージニア北部リージョン と 東京リージョン の Claude 2.1 をそれぞれAPIコールしてレイテンシ比較をやってみます。

以下、レイテンシ比較のための適当なコード。
異なるメッセージを３回ずつ、異なるリージョンのBedrockにリクエストを投げます。

```python:Bedrockレイテンシ比較　　us-east-1(バージニア北部)　VS　ap-northeast-1(東京)
import json
import logging
import boto3
import time

# Bedrockランタイムの設定
BEDROCK_CLIENT_US = boto3.client(service_name='bedrock-runtime', region_name="us-east-1")
BEDROCK_CLIENT_JP = boto3.client(service_name='bedrock-runtime', region_name="ap-northeast-1")
BEDROCK_MODEL_ID = 'anthropic.claude-v2:1'

# ロギング設定
logger = logging.getLogger()
logger.setLevel(logging.INFO)

def send_bedrock_api(keyword, botClient):
    """
    Bedrock APIを使用してテキストを生成する関数
    """
    logger.info(keyword)
    body = json.dumps({
        "prompt": f"\n\nHuman:{keyword}\n\nAssistant:",
        "max_tokens_to_sample": 1000,
        "temperature": 0.5,
        "top_p": 0.9,
    })

    accept = 'application/json'
    content_type = 'application/json'

    startTime = time.perf_counter()
    response = botClient.invoke_model(body=body, modelId=BEDROCK_MODEL_ID, accept=accept, contentType=content_type)
    response_body = json.loads(response.get('body').read())
    text = response_body.get('completion')
    logger.info(text)
    
    endTime = time.perf_counter()
    elapsed_time = endTime - startTime
    logger.info(f"処理時間: {elapsed_time:.2f} 秒") 

def lambda_handler(event, context):
    logger.info("-- バージニア北部リージョン ＃１ --")
    send_bedrock_api("Amazon RDSで利用可能なDBを挙げてください", BEDROCK_CLIENT_US)
    
    logger.info("-- バージニア北部リージョン ＃２ --")
    send_bedrock_api("Amazon RDSの各DBの特徴を整理してください", BEDROCK_CLIENT_US)
    
    logger.info("-- バージニア北部リージョン ＃３ --")
    send_bedrock_api("Amazon RDSで各DBのオンデマンド利用料金をまとめてください", BEDROCK_CLIENT_US)

    logger.info("-- 東京リージョン ＃１ --")
    send_bedrock_api("Amazon RDSで利用可能なDBを挙げてください", BEDROCK_CLIENT_JP)
    
    logger.info("-- 東京リージョン ＃２ --")
    send_bedrock_api("Amazon RDSの各DBの特徴を整理してください", BEDROCK_CLIENT_JP)
    
    logger.info("-- 東京リージョン ＃３ --")
    send_bedrock_api("Amazon RDSで各DBのオンデマンド利用料金をまとめてください", BEDROCK_CLIENT_JP)

```

### 実行結果
#### ▼サマリ
| Bedrockリージョン | １回目 | ２回目 | ３回目 |
| :------ | :------ |:------:|:------|
| 東京 Lambda → バージニア北部 Claude 2.1 | 35.17 秒 | 24.71 秒 | 16.47 秒 |
| 東京 Lambda → 東京 Claude 2.1 | 11.11 秒 | 17.48 秒 | 14.59 秒 |

今回の試行結果では東京リージョン内で処理した方が早いという結果が出ました。
数秒のラグは大きいですね。

実行結果の詳細ログは以下に載せておきますので、参考までに。


<details><summary>実行結果ログ　東京 Lambda → バージニア北部 Claude 2.1</summary>

```text 
[INFO]	2024-03-14T14:27:44.909Z - バージニア北部リージョン ＃１ --
[INFO]	2024-03-14T14:27:44.909Z mazon RDSで利用可能なDBを挙げてください
[INFO]	2024-03-14T14:28:20.077Z Amazon RDSで利用できる主なデータベースは以下の通りです。
- MySQL
- MariaDB
- PostgreSQL 
- Oracle
- Microsoft SQL Server
- Aurora(AWSオリジナルのリレーショナルデータベース)

これらのリレーショナルデータベースは、RDSを利用することで容易にセットアップ、運用、スケーリングができるようになります。特にAuroraはAWSのクラウドに最適化された高性能なデータベースです。

また、最近ではドキュメント型データベースのAmazon DocumentDBや時系列データベースのAmazon TimestreamもRDSのサービスとして利用できるようになっています。
[INFO]	2024-03-14T14:28:20.078Z ★ ★ ★ 処理時間: 35.17 秒 ★ ★ ★
[INFO]	2024-03-14T14:28:20.078Z - バージニア北部リージョン ＃２ --
[INFO]	2024-03-14T14:28:20.078Z mazon RDSの各DBの特徴を整理してください
[INFO]	2024-03-14T14:28:44.785Z Amazon RDSで利用できる主なデータベースとその特徴は以下の通りです。
- Amazon Aurora
    - AWSが独自に開発したMySQLとPostgreSQLの互換データベース
    - パフォーマンス、可用性、耐障害性に優れている
    - 自動スケーリング、自動バックアップ、自動修復などの管理機能が充実

- MySQL
    - 最もポピュラーなオープンソースのリレーショナルデータベース
    - 軽量で使いやすく、Webアプリケーションに適している
    - 様々なプラグインが利用でき拡張性が高い

- PostgreSQL
    - オープンソースのオブジェクトリレーショナルデータベース
    - 高いパフォーマンスと信頼性、豊富な機能を備えている
    - 地理情報システムなどの用途に強みを持つ

- Microsoft SQL Server
    - マイクロソフトによるエンタープライズ向けのリレーショナルデータベース
    - 高いスケーラビリティと可用性を実現している
    - Windowsアプリケーションとの親和性が高い

- Oracle Database
    - オラクル社のエンタープライズ向け高機能データベース
    - 複雑なトランザクション、分析処理に強みを持つ
    - 高い信頼性とセキュリティを実現している

このように用途や要件に応じて異なるデータベースをRDS上で利用できます。
[INFO]	2024-03-14T14:28:44.785Z ★ ★ ★ 処理時間: 24.71 秒 ★ ★ ★
[INFO]	2024-03-14T14:28:44.786Z - バージニア北部リージョン ＃３ --
[INFO]	2024-03-14T14:28:44.786Z mazon RDSで各DBのオンデマンド利用料金をまとめてください
[INFO]	2024-03-14T14:29:01.253Z Amazon RDSで利用できる主なデータベースのオンデマンド料金は以下の通りです。
- Amazon Aurora
  - DBインスタンスクラスによって異なりますが、最小で時間あたり$0.05から
- MySQL
  - db.t2.microの場合、時間あたり$0.017
- MariaDB
  - db.t2.microの場合、時間あたり$0.017  
- PostgreSQL
  - db.t2.microの場合、時間あたり$0.018
- Oracle
  - db.t2.microの場合、時間あたり$0.115
- SQL Server
  - db.t2.micro の場合、時間あたり$0.060

ストレージ料金やI/O利用料金なども別途かかりますが、DBインスタンスの料金は上記の通りです。DBの種類やインスタンスのサイズによって料金が異なるため、利用目的に応じて選択する必要があります。
[INFO]	2024-03-14T14:29:01.253Z ★ ★ ★ 処理時間: 16.47 秒 ★ ★ ★
```
</details>



<details><summary>実行結果ログ　東京 Lambda → 東京 Claude 2.1</summary>

```text 

[INFO]	2024-03-14T14:29:01.253Z - 東京リージョン ＃１ --
[INFO]	2024-03-14T14:29:01.253Z mazon RDSで利用可能なDBを挙げてください
[INFO]	2024-03-14T14:29:12.359Z Amazon RDSで利用できる主なデータベースは以下の通りです。

- MySQL
- PostgreSQL 
- MariaDB
- Oracle
- Microsoft SQL Server
- Aurora

Amazon RDSはこれらのリレーショナルデータベースをマネージドサービスとして提供しています。RDSを利用することで、データベースのセットアップ、オペレーション、スケーリング、バックアップなどの管理作業をAmazonが行ってくれるため、ユーザーはデータベースの運用に集中することができます。

このほかにも、Amazon DynamoDBやAmazon RedshiftなどのNoSQLデータベースやデータウェアハウスなども提供しています。ユースケースに応じてこれらのサービスを柔軟に利用することが可能です。
[INFO]	2024-03-14T14:29:12.359Z 処理時間: ★ ★ ★ 11.11 秒 ★ ★ ★
[INFO]	2024-03-14T14:29:12.359Z - 東京リージョン ＃２ --
[INFO]	2024-03-14T14:29:12.359Z mazon RDSの各DBの特徴を整理してください
[INFO]	2024-03-14T14:29:29.844Z Amazon RDSで提供されている主なデータベースとそれぞれの特徴は以下の通りです。

- Amazon Aurora
    - AWSが独自に開発したMySQLとPostgreSQLの互換データベース
    - パフォーマンスが高く、可用性も高い
    - 自動スケーリングと自動バックアップが特徴

- MySQL
    - 最も一般的なオープンソースのリレーショナルデータベース
    - 軽量で使いやすいことが特徴
    - InnoDBエンジンやメモリエンジンなどのストレージエンジンを選択可

- PostgreSQL
    - オープンソースのオブジェクトリレーショナルデータベース
    - 高い拡張性と信頼性が特徴
    - 地理情報システムなどの用途に強い

- MariaDB
    - MySQLのフォークとして開発されたデータベース
    - MySQLとの互換性が高いのが特徴
    - ストレージエンジンもMySQLと同じく揃っている

- Oracle
    - エンタープライズ向けの高機能なリレーショナルデータベース
    - 複雑なトランザクション処理に強みを持つ
    - 高い信頼性と可用性が特徴

- SQL Server
    - マイクロソフトが開発するエンタープライズ向けデータベース
    - トランザクション処理が高速
    - ビジネスインテリジェンス機能が豊富
[INFO]	2024-03-14T14:29:29.844Z 処理時間: ★ ★ ★ 17.48 秒 ★ ★ ★
[INFO]	2024-03-14T14:29:29.844Z - 東京リージョン ＃３ --
[INFO]	2024-03-14T14:29:29.844Z mazon RDSで各DBのオンデマンド利用料金をまとめてください
[INFO]	2024-03-14T14:29:44.438Z Amazon RDSで利用できる主なデータベースのオンデマンド料金は以下の通りです。

- Amazon Aurora
  - DBインスタンスクラスによって異なりますが、$0.10~$2.00/時間程度
- MySQL
  - db.t2.micro: $0.017/時間
  - db.t2.small: $0.034/時間
  - db.t2.medium: $0.068/時間
  - db.t3.large: $0.136/時間
- MariaDB
  - 料金設定はMySQLと同じ
- PostgreSQL
  - db.t2.micro: $0.017/時間  
  - db.t2.small: $0.034/時間
  - db.t2.medium: $0.068/時間
  - db.t3.large: $0.136/時間  
- Oracle
  - db.t2.small: $0.115/時間
  - db.t3.small: $0.153/時間
  - db.t3.medium: $0.306/時間
- SQL Server
  - db.t2.small: $0.186/時間
  - db.t3.small: $0.248/時間 
  - db.t3.medium: $0.496/時間

このようにDBエンジンやインスタンスクラスによって料金は異なりますが、オンデマンド型なので使用した分のみ課金される柔軟な料金設定となっています。
[INFO]	2024-03-14T14:29:44.438Z 処理時間: ★ ★ ★ 14.59 秒 ★ ★ ★
```
</details>

# まとめ
AWSを利用しているユーザーにとっては、AWSが提供するAIを活用することで、AWS内でシステムアーキテクチャを完全にまとめることが可能となり、応答速度やセキュリティ面でこれは大きなメリットとなります。

今後のさらなるアップデートを楽しみにしてます！