インポートしたモデルを Amazon Bedrock で使用したいのですが、ModelNotReadyException エラーが発生します。
簡単な説明
Amazon Bedrock は、リソースを効率的に管理するために内部のエビクションポリシーを使用します。このポリシーでは、Amazon Bedrock が一定期間 (通常は 1 時間) 使用していないモデルを削除します。アクティブではなかったモデルの使用を試みた場合、ModelNotReadyException エラーが発生する場合があります。
Amazon Bedrock でインポートされたモデルの使用を試みた際、そのモデルはハードウェア最適化のためにポリシーにより削除されたものである場合は、次の例に類似した ModelNotReadyException エラーメッセージが表示されます。
"errorMessage": 「Model is not ready for inference.Wait and try your request again. (モデルでは推論の準備ができていません。待機してからリクエストを再試行してください)」
注: インポートされたモデルには、プロビジョンドスループットと同等の機能はありません。
タスクをスケジュールし、モデルへの負荷を一定に保つことをおすすめします。なお、同様のリクエストをバッチ処理すると、モデル呼び出し間のアイドル時間を最小化できます。
解決策
モデルが正しくインポートされたことを確認する
Amazon Bedrock コンソールまたは AWS API を使用して、モデルがインポートされたことを確認します。
Amazon Bedrock コンソールを使用する
次の手順を実行します。
- Amazon Bedrock コンソールを開きます。
- ナビゲーションペインで [基盤モデル] を展開し、[インポートされたモデル] を選択します。
- [ジョブ] タブを選択します。
- [ジョブ名] を選択し、[ステータス] が Complete になっているかどうか確認します。
AWS API を使用する
モデルがインポートされたことを確認するには、GetModelImportJob API を呼び出します。モデルのインポートとデプロイが正常に完了したことを確認するには、出力の [ステータス] フィールドに Complete が表示されているかどうか確認します。
再試行を構成する
復元プロセスは、エビクション後の初回モデル呼び出し時に開始されます。復元にかかる時間は、オンデマンドフリートの可用性とモデルのサイズによって異なります。モデルの復元時に InvokeModel または InvokeModelWithResponseStream API リクエストが ModelNotReadyException を返した場合、デフォルトでは、リクエストはエクスポネンシャルバックオフで自動的に再試行されます。
再試行の最大回数を設定する方法については、「ModelNotReadyException に対処する」を参照してください。
ハートビート戦略を実装する
ハートビート戦略を実装すると、定期的にモデルに ping リクエストが送信されます。ping リクエストは、モデルがまだ使用中であることが Amazon Bedrock に通知します。Amazon Bedrock がモデルをエビクトした後のコールドスタートを防ぐために、重要な操作の前にはウォームアップリクエストを実行することをおすすめします。
ハートビート戦略を実装するには、次の手順を実行します。
- インポートされたモデルで InvokeModel API を呼び出す AWS Lambda 関数を作成します。
- Amazon EventBridge でルールのスケジュールを作成し、最後のモデル呼び出しから 30 分~ 50 分後に有効化させます。
- Lambda 関数をデプロイし、テストします。
- Lambda 関数のログを Amazon CloudWatch Logs に送信します。
- Amazon CloudWatch でモデルの使用状況メトリクスを分析し、最適なハートビート頻度を判断してください。
サポートに問い合わせる
それでも問題が解決しない場合は、AWS マネジメントコンソールのサポートセンターでサポートチケットを作成してください。
関連情報
カスタムモデルの実行コストを計算する