Google Cloud Machine Learning Engine 找不到本地执行的训练器模块

Google Cloud Machine Learning Engine cannot find trainer module for local execution

我试图通过尝试 运行 当地培训师来接触 Google Cloud Machine Learning (ML) Engine。我已遵循 Google 的设置说明并发出此命令:

gcloud ml-engine local train \
  --module-name trainer \
  --package-path $(pwd) \
  --job-dir $JOB_DIR

我的训练器存在于文件 $(pwd)/trainer.py 中,但我收到此错误消息:

~/cmle-quickstart/bin/python: No module named trainer

我做错了什么?

代码必须在有效的 Python package 中,这将要求您有一个 __init__.py,可以为空。

首先,创建 __init__.py。来自与上面相同的目录 运行:

touch __init__.py

对于 运行 本地训练,您需要通过其完全限定名称引用模块,该名称现在包括模块的父目录。因此,如果您的目录结构如下所示:

- my_model
  - __init__.py
  - trainer.py

那么包名是my_model,模块名当然是trainer。因此,要 运行 训练,您将使用以下命令:

gcloud ml-engine local train \
  --module-name my_model.trainer \
  --package-path $(pwd) \
  --job-dir $JOB_DIR

在这里,你告诉 gcloud:我在 $(pwd) 有一个有效的 Python 包裹。我要你 运行 的包中的完全限定模块名称是 my_model.trainer

请注意,这等同于以下命令:

(cd $PACKAGE_PATH/.. && python -m my_model.trainer)

其中 PACKAGE_PATH 指向 my_model 目录。

另请参阅 recommended project structure 上的文档。