AIシステムにおけるレート制限とサーキットブレーカー
分散型AIシステムは複雑です。膨大なリクエスト量と重いモデル推論を処理します。GPUクラスター、データベース、サードパーティAPIに依存することになります。一つのコンポーネントの不具合やトラフィックの急増が、システム全体のクラッシュを引き起こす可能性があります。
システムを保護するために、レート制限(Rate Limiting)とサーキットブレーカー(Circuit Breakers)という2つのツールが必要です。
レート制限 (Rate Limiting) レート制限は、単一のユーザーやサービスがリソースを過剰に使用するのを防ぎます。これにより、すべての人に公平なアクセスを保証します。
一般的な手法:
- トークンバケット (Token Bucket): AIに最適です。平均的な流量を一定に保ちつつ、短時間のバースト的なアクティビティを許容します。
- リーキーバケット (Leaky Bucket): リクエストの流量を一定に保ちます。
- 固定ウィンドウ (Fixed Window): シンプルですが、新しいウィンドウの開始時にスパイクが発生する可能性があります。
- スライディングウィンドウ (Sliding Window): 固定ウィンドウよりも正確です。
AI向けのプロのヒント: リクエスト数だけでなく、トークン数で制限しましょう。4,000トークンのプロンプト1つは、10トークンのプロンプトよりも多くのリソースを消費します。
サーキットブレーカー (Circuit Breakers) サーキットブレーカーは、GPUサーバーやベクトルデータベースなどのサービスへの呼び出しを監視します。サービスが何度も失敗すると、ブレーカーが「開(Open)」状態になります。これにより、そのサービスへのすべての呼び出しが即座に停止され、システム全体のクラッシュを防ぎます。
サーキットには3つの状態があります:
- 閉 (Closed): すべてが正常に動作しています。
- 開 (Open): サービスが失敗しています。呼び出しは即座に失敗するか、フォールバックが使用されます。
- 半開 (Half-Open): システムがサービスの復旧を確認するためにテストを行います。
ベストプラクティス:
- 遅い呼び出しを追跡する。LLMの応答に時間がかかりすぎる場合は、失敗として扱います。
- エラーの種類を分ける。400 Bad Requestのようなユーザーエラーでブレーカーを作動させないでください。接続エラーやタイムアウトの場合にのみ作動させます。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi