我创建了一个新的 Tensorflow 操作,我已经在本地编译和测试它并且它可以工作。
我现在想将它与 Google Cloud ML 引擎一起使用,这需要在云中的每台机器上编译操作。
我已经成功地使用 setup.py
将 C++ 文件和编译器脚本包含在分发中:
from setuptools import setup, find_package
setup(
name='trainer',
version='0.1',
packages=find_packages(),
package_data={'CPP': ['*.cc', '*.h', 'compile.sh']},
description = 'Package discription'
)
现在我必须运行 compile.sh
,其中包含:
TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')
g++ -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=0 -shared target.cc dependency_1.cc -o taget.so -fPIC -I$TF_INC -I$TF_INC/external/nsync/public -O2
脚本可以使用 subprocess.Popen()
从 python 代码运行,所以这不是问题。
问题是我不知道目录树在谷歌云中的结构,所以我不知道在哪里运行这个脚本,或者以后如何访问它的输出以使用新的操作。
最佳答案
最简单的方法是在本地构建 op,上传到您的 GCS 存储桶,将其复制到 VM(容器),然后通过 tf.load_op_library 使用它。 您可以使用预装的 gsutil cli 或 GCS python 客户端来执行复制。
回到最初的问题: 当我们启动用户作业时,我们首先以 root 身份安装用户代码包,因此对于 python 2.7,它位于 /root/.local/lib/python2.7/site-packages/YOUR_PACKAGE_NAME
关于python - 谷歌云 ML 引擎中的 Tensorflow 新操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47885698/