Bedrockのクオーター制限をチェックする「Amazon Bedrock Service Quotas Checker」を作ったので紹介させてください

Bedrockのクオーター制限についてAWSからブログが公開されています。

「Amazon Bedrock のモデルアクセスの有効化や制限値の引き上げができない時の対応方法」

https://aws.amazon.com/jp/blogs/news/generative-ai-amazon-bedrock-handling-quota-problems/

みんなのヒーローみのるんも対策方法を公開してくれています。

https://qiita.com/minorun365/items/c1706f91ce6490697451


私のAWSアカウントもこの制限に該当しており、上記ブログに従って対応を進めています。


せっかくなので（？）、現在適用されているBedrockのクオーター制限の値を取得するツールを作成しました。

## Amazon Bedrock Service Quotas Checker

https://github.com/moritalous/bedrock-service-quotas-checker

このツールにより、複数のリージョンにまたがって、一括でクオーター制限値を取得することができます。

## Amazon Bedrock Service Quotas Checkerの使い方

AWS CloudShellを使用する想定で作成しました。

まずは、リポジトリをクローンしてください。

```shell
git clone https://github.com/moritalous/bedrock-service-quotas-checker.git
cd bedrock-service-quotas-checker
```

:::note
CloudShellの場合はBoto3が導入済みのため特に追加の作業は必要ありません。
CloudShell以外の環境で実行する際は、`pip install -r requirements.txt`を実行してください。（Boto3を導入するのみです）
:::


### 現在のリージョンの値をチェック

パラメータを何も指定しない場合は、CloudShellを実行しているリージョンのクオーター制限値を出力します。

```shell
python check_quotas.py
```

1分あたりのリクエスト数及びトークン数を出力します。

<details><summary>出力</summary>

（バッチリクオーター制限が「0」になる問題に該当しています😂

```text
Quota type | Quota model | Applied account-level quota value | AWS default quota value | Region | Quota code
requests per minute | AI21 Labs Jurassic-2 Mid | 0.0 | 400.0 | ap-northeast-1 | L-75D9A33A 
requests per minute | AI21 Labs Jurassic-2 Ultra | 0.0 | 100.0 | ap-northeast-1 | L-A48E31B4 
requests per minute | Amazon Titan Image Generator G1 | 0.0 | 60.0 | ap-northeast-1 | L-7DBB06FD 
requests per minute | Amazon Titan Multimodal Embeddings G1 | 0.0 | 2000.0 | ap-northeast-1 | L-DF0E34D4 
requests per minute | Amazon Titan Text Embeddings | 0.0 | 2000.0 | ap-northeast-1 | L-879F6850 
requests per minute | Amazon Titan Text Express | 0.0 | 400.0 | ap-northeast-1 | L-9EAB0D12 
requests per minute | Amazon Titan Text Lite | 0.0 | 800.0 | ap-northeast-1 | L-A70F1DE3 
requests per minute | Anthropic Claude 3 Haiku | 0.0 | 200.0 | ap-northeast-1 | L-2DC80978 
requests per minute | Anthropic Claude 3 Sonnet | 0.0 | 100.0 | ap-northeast-1 | L-F406804E 
requests per minute | Anthropic Claude 3.5 Sonnet | 0.0 | 20.0 | ap-northeast-1 | L-254CACF4 
requests per minute | Anthropic Claude Instant | 0.0 | 400.0 | ap-northeast-1 | L-8CEDED9C 
requests per minute | Anthropic Claude V2 | 0.0 | 100.0 | ap-northeast-1 | L-F3B698BE 
requests per minute | Cohere Command | 0.0 | 400.0 | ap-northeast-1 | L-3B3BFACF 
requests per minute | Cohere Command Light | 0.0 | 800.0 | ap-northeast-1 | L-B802A131 
requests per minute | Cohere Command R | 0.0 | 400.0 | ap-northeast-1 | L-A49CA90F 
requests per minute | Cohere Command R Plus | 0.0 | 400.0 | ap-northeast-1 | L-ADB4B3D7 
requests per minute | Cohere Embed English | 0.0 | 2000.0 | ap-northeast-1 | L-FF8E7864 
requests per minute | Cohere Embed Multilingual | 0.0 | 2000.0 | ap-northeast-1 | L-9E5BD0C6 
requests per minute | Meta Llama 2 13B | 0.0 | 800.0 | ap-northeast-1 | L-0700C8EB 
requests per minute | Meta Llama 2 70B | 0.0 | 400.0 | ap-northeast-1 | L-D5C2E582 
requests per minute | Meta Llama 2 Chat 13B | 0.0 | 800.0 | ap-northeast-1 | L-674F621D 
requests per minute | Meta Llama 2 Chat 70B | 0.0 | 400.0 | ap-northeast-1 | L-D11DCD9B 
requests per minute | Mistral 7B Instruct | 0.0 | 800.0 | ap-northeast-1 | L-D9A35062 
requests per minute | Mistral Mixtral 8x7b Instruct | 0.0 | 400.0 | ap-northeast-1 | L-FD938632 
requests per minute | Stability.ai Stable Diffusion XL 0.8 | 0.0 | 60.0 | ap-northeast-1 | L-3849F0B7 
requests per minute | Stability.ai Stable Diffusion XL 1.0 | 0.0 | 60.0 | ap-northeast-1 | L-CC58F0A8 
tokens per minute | AI21 Labs Jurassic-2 Mid | 0.0 | 300000.0 | ap-northeast-1 | L-ABEE1010 
tokens per minute | AI21 Labs Jurassic-2 Ultra | 0.0 | 300000.0 | ap-northeast-1 | L-A4F5E139 
tokens per minute | Amazon Titan Image Generator G1 | 0.0 | 2000.0 | ap-northeast-1 | L-2B715ABD 
tokens per minute | Amazon Titan Multimodal Embeddings G1 | 0.0 | 300000.0 | ap-northeast-1 | L-ABC24664 
tokens per minute | Amazon Titan Text Embeddings | 0.0 | 300000.0 | ap-northeast-1 | L-74B5B793 
tokens per minute | Amazon Titan Text Express | 0.0 | 300000.0 | ap-northeast-1 | L-44992E63 
tokens per minute | Amazon Titan Text Lite | 0.0 | 300000.0 | ap-northeast-1 | L-70BE83E9 
tokens per minute | Anthropic Claude 3 Haiku | 0.0 | 200000.0 | ap-northeast-1 | L-8CE99163 
tokens per minute | Anthropic Claude 3 Sonnet | 0.0 | 200000.0 | ap-northeast-1 | L-4C35BB2A 
tokens per minute | Anthropic Claude 3.5 Sonnet | 0.0 | 200000.0 | ap-northeast-1 | L-A50569E5 
tokens per minute | Anthropic Claude Instant | 0.0 | 300000.0 | ap-northeast-1 | L-F7007F39 
tokens per minute | Anthropic Claude V2 | 0.0 | 200000.0 | ap-northeast-1 | L-B0D9183E 
tokens per minute | Cohere Command | 0.0 | 300000.0 | ap-northeast-1 | L-4E833B8F 
tokens per minute | Cohere Command Light | 0.0 | 300000.0 | ap-northeast-1 | L-B63536E3 
tokens per minute | Cohere Command R | 0.0 | 300000.0 | ap-northeast-1 | L-17F95AA4 
tokens per minute | Cohere Command R Plus | 0.0 | 300000.0 | ap-northeast-1 | L-FEE1DCB6 
tokens per minute | Cohere Embed English | 0.0 | 300000.0 | ap-northeast-1 | L-A2BE277A 
tokens per minute | Cohere Embed Multilingual | 0.0 | 300000.0 | ap-northeast-1 | L-C2F86908 
tokens per minute | Meta Llama 2 13B | 0.0 | 300000.0 | ap-northeast-1 | L-D9F0CC0D 
tokens per minute | Meta Llama 2 70B | 0.0 | 300000.0 | ap-northeast-1 | L-247B684D 
tokens per minute | Meta Llama 2 Chat 13B | 0.0 | 300000.0 | ap-northeast-1 | L-6DB35E51 
tokens per minute | Meta Llama 2 Chat 70B | 0.0 | 300000.0 | ap-northeast-1 | L-B05C5C8E 
tokens per minute | Mistral AI Mistral 7B Instruct | 0.0 | 300000.0 | ap-northeast-1 | L-02D831F1 
tokens per minute | Mistral AI Mixtral 8X7BB Instruct | 0.0 | 300000.0 | ap-northeast-1 | L-490F4D1F 
```

</details>


標準出力に出力しているだけですので、特定のモデルの情報に絞りたい場合はgrepしてください。

```shell
python check_quotas.py | grep Sonnet
```


### 複数のリージョンの値をチェック

`--regions`オプションを使用すると、複数のリージョンを対象として出力します。

```shell
python check_quotas.py --regions us-east-1,us-west-2,ap-northeast-1
```

:::note
存在しないリージョン名やBedrockが提供されていないリージョン名を指定されている場合、エラー出力はせずにそのリージョンはスキップします。
:::

### Bedrockが提供されている全リージョンの値をチェック

Bedrockが提供されている全リージョンを対象とする場合は、`--all-region`オプションを指定します。

```shell
python check_quotas.py --all-region
```

:::note
欧州 (チューリッヒ)（eu-central-2）など、Bedrockは提供されているが、オプトアプトされているリージョンがある場合、エラー出力はせずそのリージョンはスキップします。
:::

---

是非お使いいただき、フィードバックがあればPull Requestをいただければと思います。

---

ちなみに余談ですが、以下の作業はCluade.aiに助けてもらいました（というか、ほぼ丸投げ）

* ソースへのコメント付与
* docstringの生成
* README.mdやソースコード以外の一式