normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

Azure OpenAI でトークン制限に引っかかった時に発生する例外

ご存じの通り、Azure OpenAI は非常に需要が高いサービスですが、その要求にこたえる必要もあり、一分辺りに利用できるトークン数が決まっています。以下のサイトにはそちらの詳細が記載されています。
learn.microsoft.com

Azure OpenAI の Tokens per Minute Rate Limit は以下の様に、特定のデプロイメントに対しての割り当てが可能であり、モデル&リージョン&サブスクリプション単位で上限が割り振られます。

上記の様に各デプロイメントに対して上限割り振りが可能ですが、以下のような状況になります。

  • 例:Japan East に gpt-35-turbo モデルの MRL を deployment-01 に 120k 割り振った場合
    • UK South 等の他のリージョンは deployment-01 の影響を受けず、gpt-35-turbo モデルの新規デプロイメントに MRL を割り当て可
    • Japan East に gpt-35-turbo モデルを使った新規デプロイメントdeployment-02 を作成する場合、MRL は何も割り当てられない

つまり Azure OpenAI の Tokens per Minute Rate Limit 上限を回避するには「①リージョンを分ける」か「②サブスクリプションを分ける」かのどちらか(または両方)を行う必要があるというのが現状です。その場合、「プログラム側にどのようなエラーメッセージが返ってくるのか?」が振り分け時のキモになると考えています。以前に作成した Java では以下の様なエラーが返ってきました。

        at xyz.normalian.example.ChatCompletionApplication.main(ChatCompletionApplication.java:100)
Exception in thread "main" org.springframework.web.client.HttpClientErrorException$TooManyRequests: 429 Too Many Requests: "{"error":{"code":"429","message": "Requests to the Creates a completion for the chat message Operation under Azure OpenAI API version 2023-03-15-preview have exceeded call rate limit of your current OpenAI S0 pricing tier. Please retry after 8 seconds. Please go here: https://aka.ms/oai/quotaincrease if you would like to further increase the default rate limit."}}"

エラーメッセージには Token 上限に引っかかった旨、何秒後にリトライしたら良いかが記載されているのが分かると思います。また、以下のサイトでの Quota を増やす申請も可能です。
https://aka.ms/oai/quotaincrease

こちらが参考になれば幸いです。