我想使用此命令在本地训练我的模型:
gcloud ml-engine local train
--module-name cloud_runner
--job-dir ./tmp/output
问题在于它抱怨--job-dir: Must be of form gs://bucket/object
。
这是一个本地火车,所以我想知道为什么它希望输出是gs
存储桶而不是本地目录。
答案 0 :(得分:3)
正如其他gcloud所解释的那样--job-dir希望该位置在GCS中。要绕过它,您可以将其作为文件夹直接传递给您的模块。
gcloud ml-engine local train \
--package-path trainer \
--module-name trainer.task \
-- \
--train-files $TRAIN_FILE \
--eval-files $EVAL_FILE \
--job-dir $JOB_DIR \
--train-steps $TRAIN_STEPS
答案 1 :(得分:1)
gcloud命令的--package-path参数应指向一个有效Python包的目录,即包含 init .py文件的目录(通常是空文件) 。请注意,它应该是本地目录,而不是GCS上的目录。
--module参数将是该包中有效Python模块的完全限定名称。您可以根据需要组织目录,但为了保持一致性,样本都有一个名为trainer的Python包,其中运行的模块名为task.py。
- Source
因此您需要使用有效路径更改此块:
gcloud ml-engine local train
--module-name cloud_runner
--job-dir ./tmp/output
具体来说,您的错误是--job-dir ./tmp/output
造成的,因为它期待gcloud
上的路径
答案 2 :(得分:1)
本地培训试图模拟您使用云运行时发生的情况,因为本地培训的目的是在将作业提交给服务之前检测问题。
使用CMLE服务时使用本地job-dir是一个错误,因为在作业完成后输出不会保留。
因此,使用gcloud进行本地培训也需要将job-dir作为GCS位置。
如果你想在本地运行而不使用GCS,你可以直接运行你的TensorFlow程序而不是使用gcloud。