我正在使用谷歌云人工智能平台上的 Docker 容器训练一个带有 tensorflow 和对象检测 api 的对象检测模型。训练完成后,成功导出了一个 tflite 图,但问题是完成后作业没有main.py
完成。
为了训练模型和导出,我使用一个main.py
脚本作为入口点:
ENTRYPOINT ["python", "-u", "main.py"]
并且脚本需要一些参数,我使用CMD
Dockerfile 中的关键字传递给它(尽管它们可以使用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
)?还是我应该等待超过五分钟让工作自行完成?