📚
ECSでGPUを利用するときはNVIDIA_VISIBLE_DEVICESを指定できない
環境変数 NVIDIA_VISIBLE_DEVICES
nvidia-container-runtimeにおいて、利用するGPUを指定するために環境変数 NVIDIA_VISIBLE_DEVICES
を指定する必要がある。
ECSにおけるGPU指定
ECSでは、NVIDIA_VISIBLE_DEVICES
の設定は自動で行われる。これ以外の環境変数のみ自分で設定する必要がある。
Amazon ECS は、NVIDIA_VISIBLE_DEVICES環境変数の値を Amazon ECS がコンテナに割り当てる GPU デバイス ID のリストに設定します。Amazon ECS は、これら以外の必須環境変数の設定は行いません。
自分で NVIDIA_VISIBLE_DEVICES を指定する
タスク定義の登録において、resourceRequirementsにてGPUを要求している場合は NVIDIA_VISIBLE_DEVICES
を指定するとクライアントエラーになる。
$ cat taskdef.json
{
"family": "sample-ecs",
"containerDefinitions": [
{
"name": "sample-ecs",
"image": "nvidia/cuda:11.0.3-base",
"essential": true,
"resourceRequirements": [
{
"type": "GPU",
"value": "1"
}
],
"cpu": 100,
"memory": 80,
"environment": [
{
"name": "NVIDIA_VISIBLE_DEVICES",
"value": "all"
}
]
}
]
}
$ aws ecs register-task-definition --cli-input-json file://taskdef.json
An error occurred (ClientException) when calling the RegisterTaskDefinition operation: A container with GPU resource requirements cannot specify 'NVIDIA_VISIBLE_DEVICES' as an environment variable since this environment variable is reserved to be used in GPU workflow.
なので、自分で NVIDIA_VISIBLE_DEVICES
を指定することはできない。
Discussion