为什么使用 Google AI-Platform 进行的本地训练在虚拟环境中不起作用?
Why does local training with Google AI-Platform not work in a virtual environment?
我正在使用来自 Google 云平台的 AI 平台,使用来自 Google 云平台 GitHub 的 this template 和 scikit-learn 训练随机森林分类器.
我已经调整了一些地方的代码以适应我自己的问题。代码是在 Python 3.5 中使用 PyCharm 并在 Ubuntu 设备上编写的。使用以下终端command(不包括附加参数)在云中训练模型非常好:
gcloud ai-platform jobs submit training
但是当我尝试在我的虚拟环境中使用 ai-platform local training functionality 时 (python 3.5):
gcloud ai-platform local train
(不包括附加参数)。它 returns 出现以下错误:
Traceback (most recent call last):
File "/snap/google-cloud-sdk/99/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/snap/google-cloud-sdk/99/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/merijn/PycharmProjects/user-matching/trainer/task.py", line 28, in <module>
from trainer import model
File "trainer/model.py", line 28, in <module>
from trainer import utils
File "trainer/utils.py", line 23, in <module>
from tensorflow import gfile
ImportError: No module named tensorflow
所有依赖项都已正确安装在我的虚拟环境中,包括 TensorFlow。 TensorFlow导入报错之前是sklearn导入报错,我在正常环境下安装sklearn模块解决了。这支持了我的猜测,它可能与我正常环境中 python 2.7 上的 Google SDK 运行ning 有关。因此,当 运行 在我的 venv 中使用 gcloud
命令时,它很可能 运行 在我的正常环境中而不是我的 venv 中运行我的整个程序,到目前为止我无法强制它 运行 在我的 venv 中。请注意,我已经为参数 --job-dir
和 --package-path
.
尝试了许多不同的值
在互联网上搜索了几天后,我仍然找不到在安装了 python 3.5 的虚拟环境中使用 AI 平台进行本地训练的方法。希望你能帮助我。
你是对的。这与 gcloud 无法在本地执行 Python3 程序有关。
存在一个非常简单的解决方法——不要使用 gcloud ai-platform local train
。
相反,直接调用 python 解释器:
export PYTHONPATH=${PYTHONPATH}:/some/dir/package/path
python3 -m trainer.task --job-dir /tmp ...
我正在使用来自 Google 云平台的 AI 平台,使用来自 Google 云平台 GitHub 的 this template 和 scikit-learn 训练随机森林分类器.
我已经调整了一些地方的代码以适应我自己的问题。代码是在 Python 3.5 中使用 PyCharm 并在 Ubuntu 设备上编写的。使用以下终端command(不包括附加参数)在云中训练模型非常好:
gcloud ai-platform jobs submit training
但是当我尝试在我的虚拟环境中使用 ai-platform local training functionality 时 (python 3.5):
gcloud ai-platform local train
(不包括附加参数)。它 returns 出现以下错误:
Traceback (most recent call last):
File "/snap/google-cloud-sdk/99/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/snap/google-cloud-sdk/99/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/merijn/PycharmProjects/user-matching/trainer/task.py", line 28, in <module>
from trainer import model
File "trainer/model.py", line 28, in <module>
from trainer import utils
File "trainer/utils.py", line 23, in <module>
from tensorflow import gfile
ImportError: No module named tensorflow
所有依赖项都已正确安装在我的虚拟环境中,包括 TensorFlow。 TensorFlow导入报错之前是sklearn导入报错,我在正常环境下安装sklearn模块解决了。这支持了我的猜测,它可能与我正常环境中 python 2.7 上的 Google SDK 运行ning 有关。因此,当 运行 在我的 venv 中使用 gcloud
命令时,它很可能 运行 在我的正常环境中而不是我的 venv 中运行我的整个程序,到目前为止我无法强制它 运行 在我的 venv 中。请注意,我已经为参数 --job-dir
和 --package-path
.
在互联网上搜索了几天后,我仍然找不到在安装了 python 3.5 的虚拟环境中使用 AI 平台进行本地训练的方法。希望你能帮助我。
你是对的。这与 gcloud 无法在本地执行 Python3 程序有关。
存在一个非常简单的解决方法——不要使用 gcloud ai-platform local train
。
相反,直接调用 python 解释器:
export PYTHONPATH=${PYTHONPATH}:/some/dir/package/path
python3 -m trainer.task --job-dir /tmp ...