Amazon SageMaker がトレーニングイメージを実行する方法 - Amazon SageMaker

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

Amazon SageMaker がトレーニングイメージを実行する方法

Docker コンテナを実行可能ファイルとして実行するように設定するには、Dockerfile で ENTRYPOINT 命令を使用します。以下の点に注意してください。

  • モデルトレーニングの場合、Amazon SageMaker はコンテナを次のように実行します。

    docker run image train

    SageMaker はイメージ名の後に train 引数を指定して、コンテナ内のデフォルトの CMD ステートメントを上書きします。train 引数は、Dockerfile の CMD を使用して指定した引数も上書きします。

     

  • Dockerfileで、ENTRYPOINT 命令の exec 形式を使用します。

    ENTRYPOINT ["executable", "param1", "param2", ...]

    例:

    ENTRYPOINT ["python", "k-means-algorithm.py"]

    exec 命令の ENTRYPOINT フォームは、/bin/sh の子としてではなく、直接実行ファイルを開始します。これにより、SageMaker API から SIGTERMSIGKILL などのシグナルを受け取ることができます。以下の点に注意してください。

     

    • -CreateTrainingJobAPI には、特定の時間後にモデルトレーニングを停止するように SageMaker に指示する停止条件があります。

       

    • -StopTrainingJobAPI は、と同等を発行します。docker stopで、指定されたコンテナを適切に停止するには、2 分のタイムアウトコマンドを実行します。

      docker stop -t120

      コマンドは、SIGTERM シグナルを送信することで実行中のコンテナの停止を試みます。2 分間のタイムアウト後、API は SIGKILL を送信しコンテナを強制的に停止します。コンテナが SIGTERM を正常に処理し、その受信時から 120 秒以内に終了する場合、SIGKILL は送信されません。

    注記

    SageMaker がトレーニングを停止した後に中間モデルアーティファクトへのアクセスが必要な場合は、SIGTERM ハンドラにアーティファクトの保存を処理するコードを追加します。

  • モデルのトレーニングに GPU デバイスを使用する予定がある場合は、コンテナが nvidia-docker と互換であることを確認します。コンテナに含める必要があるのは CUDA ツールキットのみです。NVIDIA ドライバーをイメージにバンドルしないでください。nvidia-docker の詳細については、NVIDIA/nvidia-docker を参照してください。

  • tini 引数と train 引数で混乱が生じるため、SageMaker コンテナでは、serve イニシャライザをエントリポイントとして使用することはできません。

  • /opt/ml とすべてのサブディレクトリが SageMaker トレーニングによって予約されています。アルゴリズムの Docker イメージを構築する場合は、アルゴリズムに必要なデータをそれらのイメージの下に配置しないでください。配置すると、データがトレーニング時に表示されなくなる可能性があります。