CloudML

时间:2017-03-08 09:17:04

标签: python tensorflow google-cloud-ml

我的Python项目结构如下:

  • 项目/包含:
  • setup.py;项目/ 内部项目/文件夹包含 init .py空文件,包含子模块的文件夹,仅包含.yaml文件的conf /文件夹(例如foo.yaml)和s_main.py脚本(我的主要入口点) )

这是我的setup.py文件:

from setuptools import setup, find_packages

NAME = 'project'

package_data = {'':['conf/*.yaml','*.yaml'],'project':['conf/*.yaml']}

if __name__ == '__main__':

setup(
  name=NAME,
  version=1.0,
  description='Foo',
  author='someone',
  author_email='a@b.com',
  packages=find_packages(),
  include_package_data=True,
  package_data=package_data,
  zip_safe=False)

当我尝试'pip install project /'时,它在我的电脑上工作正常,我在[...] / python2.7 / site-packages / project / conf中看到包含所有* .yaml文件的conf /文件夹/ 当我在本地运行cloudML时,它也可以运行。我使用以下命令:

gcloud ml-engine local train \
  --package-path=path_to_project_module \
  --module-name=project.s_main \
  --distributed \
  -- \
  conf/myConf.yaml \
  conf/myParams.yaml

但是当我在cloudML上运行它时,它不起作用。我运行以下命令:

gcloud ml-engine jobs submit training JOB_100 \
  --package-path=path_to_project_module \
  --module-name=project.s_main \
  --staging-bucket=myBucket \
  --region=europe-west1 \
  --config=mlConfig_file \
  -- \
  conf/myConf.yaml \
  conf/myParams.yaml

日志清楚地显示conf /文件夹从未包含在构建的包中,并且我的运行失败,因为找不到预期的* .yaml文件。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下方式手动打包:

python setup.py sdist

然后将生成的.tar.gz暂存到云存储桶中。

一旦你这样做,你应该能够使用gcloud命令上的--package-uris标志来引用你的预备包(当向服务提交作业时)。

看看是否有助于解锁你。

答案 1 :(得分:0)

要尝试的另一件事是不使用package_datainclude_package_data,而是使用data_files ...至少这是我在我需要的场景中使用的在源代码发布中包含其他数据文件。

类似的东西:

data_files=[('.', 'conf/*.yaml','*.yaml']),
            ('project':['conf/*.yaml'])
           ]

也许这会奏效吗?