本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SageMaker 如何运行您的训练映像
要配置 Docker 容器以作为可执行文件运行,请使用 Dockerfile 中的 ENTRYPOINT
指令。请注意以下几点:
-
对于模型训练,Amazon SageMaker 会按如下方式运行容器:
docker run
image
trainSageMaker 会覆盖任何默认
CMD
通过指定train
映像名称后的参数。train
参数也覆盖您使用 Dockerfile 中的CMD
提供的参数。 -
在你的 Dockerfile 中,使用
exec
的形式ENTRYPOINT
说明:ENTRYPOINT ["executable", "param1", "param2", ...]
例如:
ENTRYPOINT ["python", "k-means-algorithm.py"]
exec
形式的ENTRYPOINT
指令直接启动可执行文件,而不是/bin/sh
的子级。这使其能够接收如下信号SIGTERM
和SIGKILL
来自 SageMaker API。请注意以下几点:-
这些区域有:
CreateTrainingJob
API 有一个停止条件,它指示 SageMaker 在特定的时间后停止模型训练。 -
这些区域有:
StopTrainingJob
API 发出等效于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
将初始化程序作为 SageMaker 容器中的入口点,因为它会被train
和serve
参数。 -
/opt/ml
并且 SageMaker 训练会保留和所有子目录。构建算法的 Docker 镜像时,请确保不要将算法所需的任何数据放置在其下面,因为数据在训练期间可能不再可见。