

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

# Amazon SageMaker Processing が独自の処理コンテナイメージを実行する方法
<a name="byoc-run-image"></a>

Amazon SageMaker Processing は、次のコマンドと同様の方法で処理コンテナイメージを実行します。ここでは `AppSpecification.ImageUri` は `CreateProcessingJob` オペレーションで指定した Amazon ECR イメージの URI です。

```
docker run [AppSpecification.ImageUri]
```

このコマンドは、Docker イメージで設定された `ENTRYPOINT` コマンドを実行します。

また、イメージ内の entrypoint コマンドを上書きしたり、`CreateProcessingJob` リクエストの `AppSpecification.ContainerEntrypoint` および `AppSpecification.ContainerArgument` パラメータを使用して entrypoint コマンドにコマンドライン引数を指定することもできます。これらのパラメータを指定すると、次のコマンドと同様の方法でコンテナを実行するよう Amazon SageMaker Processing が設定されます。

```
 docker run --entry-point [AppSpecification.ContainerEntrypoint] [AppSpecification.ImageUri] [AppSpecification.ContainerArguments]
```

例えば、`CreateProcessingJob ` リクエストで、`ContainerEntrypoint` を `[python3, -v, /processing_script.py]` に、`ContainerArguments` を `[data-format, csv]` に指定すると、Amazon SageMaker Processing は次のコマンドを使ってコンテナを実行します。

```
 python3 -v /processing_script.py data-format csv 
```

 処理コンテナを構築するときは、次の詳細に注意してください。
+ Amazon SageMaker Processing は、コマンド実行の終了コードに応じて、ジョブが完了しているか失敗しているかを判断できます。処理ジョブは、すべての処理コンテナが終了コード 0 で正常に終了すると完了し、いずれかのコンテナが 0 以外の終了コードで終了すると失敗します。
+  Amazon SageMaker Processing では、Docker API の場合と同じように、処理コンテナのエントリポイントを上書きし、コマンドライン引数を設定できます。Docker イメージは、`ENTRYPOINT` および CMD 命令を使用して、エントリポイントおよびコマンドライン引数を設定できます。`CreateProcessingJob` の `ContainerEntrypoint` および `ContainerArgument` パラメータが Docker イメージのエントリポイントと引数を設定する方法は、Docker が Docker API を介してエントリポイントと引数を上書きする方法を反映しています
  + `ContainerEntrypoint` も `ContainerArguments` も指定されていない場合、Processing はイメージ内のデフォルトの `ENTRYPOINT` または CMD を使います。
  + `ContainerEntrypoint` が指定され、`ContainerArguments` が指定されていない場合、Processing は指定されたエントリポイントを使ってイメージを実行し、イメージ内の `ENTRYPOINT` および CMD は無視されます。
  + `ContainerArguments` が指定され、`ContainerEntrypoint` が指定されていない場合、Processing はイメージ内のデフォルトの `ENTRYPOINT` と指定された引数を使ってイメージを実行します。
  + `ContainerEntrypoint` と `ContainerArguments` の両方が指定されている場合、Processing は指定されたエントリポイントと引数を使ってイメージを実行し、イメージ内の `ENTRYPOINT` および CMD は無視されます。
+ Dockerfile の `ENTRYPOINT` 命令の exec 形式 (shell 形式 (`ENTRYPOINT` ` command param1 param2`) ではなく `ENTRYPOINT` `["executable", "param1", "param2"])`) を使用する必要があります。これにより、処理コンテナは `SIGINT` 信号および `SIGKILL` 信号を受信できます。これらの信号は、Processing が `StopProcessingJob` API を使ってジョブの処理を停止するために使います。
+ `/opt/ml` およびそのすべてのサブディレクトリは SageMaker AI によって予約されています。Processing の Docker イメージを構築する際は、処理コンテナが必要とするデータをこれらのディレクトリに配置しないでください。
+ GPU デバイスを使用する場合は、コンテナが nvidia-docker と互換性があることを確認してください。CUDA ツールキットのみをコンテナに含めます。NVIDIA ドライバーをイメージにバンドルしないでください。nvidia-docker の詳細については、[NVIDIA/nvidia-docker](https://github.com/NVIDIA/nvidia-docker) を参照してください。