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

问题描述

我已经使用培训应用程序构建了一个自定义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的命令。