0

我正在使用谷歌云人工智能平台上的 Docker 容器训练一个带有 tensorflow 和对象检测 api 的对象检测模型。训练完成后,成功导出了一个 tflite 图,但问题是完成后作业没有main.py完成。

为了训练模型和导出,我使用一个main.py脚本作为入口点:

ENTRYPOINT ["python", "-u", "main.py"]

并且脚本需要一些参数,我使用CMDDockerfile 中的关键字传递给它(尽管它们可以使用gcloud ai-platform jobs submit training命令被覆盖):

CMD ["--network_type", "mobilenet_v2_ssd", \
     "--train_whole_model", "True", \
     "--job-dir", "gs://job-dir", \
     "--dataset-dir", "gs://dataset"]

的内容main.py基本上是这样的:

# import stuff

# define argparse stuff

def main(args):
    # Train Model
    # Export Graph
    print("Training finished")


if __name__ == "__main__":
    # get args
    main(args)

要开始工作,我执行以下操作:

gcloud ai-platform jobs submit training $JOB_NAME \
    --region $REGION \
    --config config.yaml \
    --job-dir "gs://job-dir" \
    --master-image-uri $IMAGE_URI \
    -- \
    --network_type "mobilenet_v2_ssd" \
    --train_whole_model "True" \
    --dataset-dir "gs://dataset" \

当我Training finished在 Google Cloud Log Viewer 中看到容器运行至少五分钟而没有完成时,如果我不手动取消作业,我不知道它是否会停止。

我是否必须在结束时指示 AI Platform 完成工作main.py?也许返回一个状态码(例如return 0)?还是我应该等待超过五分钟让工作自行完成?

4

0 回答 0