我正在尝试使用Google Cloud ML Engine调整变分自动编码器的超参数。我使用他们在文档中推荐的结构设置我的包,因此我指定“trainer.task”作为我的主模块名称。下面是我的目录结构的图像。
当我包含以下行时,这适用于我自己的机器:
import sys
sys.path.append("/path/to/project/directory/")
当我使用下面的命令运行时,我收到错误“No module named trainer”。是否需要指定不同的路径或在Google Cloud ML Engine上运行需要做些什么?
gcloud ml-engine jobs submit training $JOB_NAME --package-path $TRAINER_PACKAGE_PATH --module-name $MAIN_TRAINER_MODULE --job-dir $JOB_DIR --region $REGION --config config.yaml
答案 0 :(得分:0)
你有一个setup.py文件吗?如果是这样,您可能会点击此issue
调试:
从作业中获取包的GCS位置
gcloud --project=$PROJECT ml-engine jobs describe $JOB_NAME
这将输出类似
的内容jobId: somejob
state: PREPARING
trainingInput:
jobDir: gs://BUCKET/job
packageUris:
- gs://bucket/job/packages/7d2611c7366f266058da5a9e2c93467426c5fdd018491fa33853516d9db533b1/somepackage-0.0.0.tar.gz
pythonModule: cifar.task
region: us-central1
trainingOutput: {}
将GCS包复制到您的计算机
gsutil cp gs://bucket/job/packages/7d2611c7366f266058da5a9e2c93467426c5fdd018491fa33853516d9db533b1/somepackage-0.0.0.tar.gz /tmp
解压缩.tar.gz并检查它是否有一个带有__init__.py文件和task.py的目录教程。如果没有,那么您可能为命令行指定了不正确的值。
如果你包括实际的命令行(即变量的值)和.tar.gz的内容,我可以提供更好的答案。
答案 1 :(得分:0)
杰里米我有类似的问题。我下载并解压缩了我的文件,但其中没有task.py
。
这些是我使用的cmd行参数:
gcloud ml-engine jobs submit training job11 --package-path=./trainer --module-
name='Keras_On_GoogleCloud.trainer.shallownet_train' --job-dir=gs://zubair-gc-
bucket/jobs/job11 --region='us-central1' --config=trainer/cloudml-gpu.yaml -- -
-job_name='zubair-gc-job11' --dataset='dataset/animals' --model='shallownet_weights1.hdf5'