Amazon SageMaker モデルデプロイのトラブルシューティング - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SageMaker モデルデプロイのトラブルシューティング

Amazon に機械学習モデルをデプロイするときに問題が発生した場合は SageMaker、次のガイダンスを参照してください。

アクティブCPUカウントの検出エラー

Linux Java 仮想マシン (JVM) を使用して SageMaker モデルをデプロイすると、使用可能なCPUリソースの使用を妨げる検出エラーが発生する可能性があります。この問題JVMsは、Java 8 と Java 9 をサポートする一部の と、Java 10 と Java 11 をサポートするほとんどの に影響します。これらは、Docker コンテナで、より一般的には Linux taskset コマンドまたはコントロールグループ (cgroup) 内でモデルを実行するときに使用できるCPUカウントと最大メモリを検出して処理するメカニズムJVMsを実装します。 SageMakerデプロイでは、 がこれらのリソースの管理JVMに使用する設定の一部を利用します。現在、これによりコンテナは使用可能な の数を誤って検出しますCPUs。

SageMaker は、インスタンスCPUs上の へのアクセスを制限しません。ただし、 は、コンテナでさらに多くの CPUsが利用可能1になったときに、 としてCPUカウントを検出するJVM場合があります。その結果、 は、すべての内部設定を、1CPUコアのみが利用可能であるかのように実行するようにJVM調整します。これらの設定は、コンテナの同時実行性、スループット、レイテンシーに悪影響を及ぼすガベージコレクション、ロック、コンパイラスレッド、その他のJVM内部に影響します。

誤検出の例については、Java8_191 JVMに基づいて SageMaker おり、インスタンスで 4 つの使用可能な でデプロイされている 用に設定されたコンテナCPUsで、次のコマンドを実行して を開始しますJVM。

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version

これにより、次の出力が生成されます。

active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: determined by OSContainer: 1 openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

この問題のJVMs影響を受ける の多くは、この動作を無効にし、インスタンスCPUs上のすべての へのフルアクセスを再確立するオプションがあります。不要な動作を無効にし、Java アプリケーションを起動するときに -XX:-UseContainerSupportパラメータを含めるCPUsことで、すべてのインスタンスへのフルアクセスを確立します。例えば、 java コマンドを実行してJVM、次のように を起動します。

java -XX:-UseContainerSupport -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version

これにより、次の出力が生成されます。

active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 active_processor_count: sched_getaffinity processor count: 4 openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

コンテナでJVM使用されている が -XX:-UseContainerSupportパラメータをサポートしているかどうかを確認します。その場合は、 を起動するときに常に パラメータを渡しますJVM。これにより、CPUsインスタンス内のすべての にアクセスできます。

また、 SageMaker コンテナJVMで を間接的に使用すると、この問題が発生する可能性があります。例えば、 JVM を使用して SparkML Scala をサポートする場合です。-XX:-UseContainerSupport パラメータは、Java によって返される出力にも影響しますRuntime.getRuntime().availableProcessors()API

model.tar.gz ファイルのデプロイに関する問題

model.tar.gz ファイルを使用してモデルをデプロイする場合、モデルの tarball にはシンボリックリンクが含まれないようにしてください。シンボリックリンクが含まれていると、モデルの作成が失敗します。また、tarball に不要なファイルを含めないことをお勧めします。

プライマリコンテナが ping ヘルスチェックに合格しない

プライマリコンテナの ping ヘルスチェックが失敗し、次のエラーメッセージが表示される場合は、コンテナまたはスクリプトに問題があることを示しています。

The primary container for production variant beta did not pass the ping health check. Please check CloudWatch Logs logs for this endpoint.

この問題のトラブルシューティングを行うには、問題のエンドポイントの CloudWatch Logs ログをチェックして、コンテナが /ping または に応答できないエラーや問題がないかどうかを確認します/invocations。ログには、問題を示すエラーメッセージが記録されている場合があります。エラーと失敗の理由を特定したら、エラーを解決する必要があります。

また、エンドポイントを作成する前に、モデルのデプロイをローカルでテストすることもお勧めします。

  • の SageMaker SDKローカルモードを使用して、モデルをローカルエンドポイントにデプロイしてホスト環境を模倣します。詳細については、「ローカルゾーン」を参照してください。

  • vanilla docker コマンドを使用して、コンテナが /ping と /invocations に応答することをテストします。詳細については、「local_test」を参照してください。