本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SageMaker 如何运行您的训练映像
要配置 Docker 容器以作为可执行文件运行,请使用 Dockerfile 中的 ENTRYPOINT 指令。请注意以下几点:
-
对于模型训练,Amazon SageMaker 会按如下方式运行容器:
docker runimagetrainSageMaker 会覆盖任何默认
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。请注意以下几点:-
这些区域有:
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将初始化程序作为 SageMaker 容器中的入口点,因为它会被train和serve参数。 -
/opt/ml并且 SageMaker 训练会保留和所有子目录。构建算法的 Docker 镜像时,请确保不要将算法所需的任何数据放置在其下面,因为数据在训练期间可能不再可见。