使用自定义容器训练时调用不同的入口点/模块

问题描述

我已经使用培训应用程序构建了一个自定义Docker容器。目前,Dockerfile类似于

FROM python:slim
COPY ./src /pipelines/component/src
RUN pip3 install -U ...
...
ENTRYPOINT ["python3","/pipelines/component/src/training.py"]

所以当我跑步

gcloud ai-platform jobs submit training JOB_NAME \
--region=$REGION \
--master-image-uri=$IMAGE_URI

它按预期进行。

我想做的是添加另一个模块,例如/pipelines/component/src/tuning.py;从Dockerfile中删除默认的ENTRYPOINT;确定从gcloud命令中调用哪个模块。所以我尝试了

gcloud ai-platform jobs submit training JOB_NAME \
--region=$REGION \
--master-image-uri=$IMAGE_URI \
--module-name=src.tuning \
--package-path=/pipelines/component/src

它返回Source directory [/pipelines/component] is not a valid directory.,因为它在本地计算机而不是容器上搜索软件包路径。我该如何解决这个问题?

解决方法

您可以使用TrainingInput.ReplicaConfig.ContainerCommand字段覆盖Docker映像的入口点。这是一个示例命令:

gcloud ai-platform jobs submit training JOB_NAME \
--region=$REGION
--master-image-uri=$IMAGE_URI
--config=config.yaml

config.yaml内容将如下所示:

trainingInput:
  scaleTier: BASIC
  masterConfig:
    containerCommand: ["python3","/pipelines/component/src/tuning.py"]

link具有有关配置标志的更多上下文。

类似地,您可以使用 containerArgs 字段覆盖docker image的命令。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...