Почему локальное обучение с Google AI-Platform не работает в виртуальной среде?
Я использую AI-платформу из Google Cloud Platform для обучения классификатора случайного леса с помощью scikit-learn, используя этот шаблон из Google Cloud Platform GitHub.
Я скорректировал код в некоторых местах, чтобы он соответствовал моей проблеме. Код написан на Python 3.5 с использованием PyCharm и на устройстве Ubuntu. Обучение модели в облаке отлично работает с использованием следующей команды терминала (без дополнительных аргументов):
gcloud ai-platform jobs submit training
Но когда я пытаюсь использовать локальные обучающие функции AI-платформы внутри моей виртуальной среды (python 3.5):
gcloud ai-platform local train
(без дополнительных аргументов). Он возвращает следующую ошибку:
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 в моей обычной среде. Это подтверждает мое предположение, что это, вероятно, связано с Google SDK, работающим на python 2.7 в моей обычной среде. Поэтому при запускеgcloud
в моем venv, он, скорее всего, запускает всю мою программу в моей обычной среде вместо моего venv, и пока я не могу заставить ее работать в моем venv. Обратите внимание, что я уже пробовал много разных значений аргументов--job-dir
а также --package-path
.
После нескольких дней поисков в Интернете я все еще не могу найти способ локально тренироваться с платформой AI в виртуальной среде с установленным python 3.5. Надеюсь, ты сможешь мне помочь.
1 ответ
Вы правы. Это связано с тем, что gcloud не может выполнять программы Python3 локально.
Существует очень простой обходной путь - не используйте gcloud ai-platform local train
. Вместо этого просто вызовите интерпретатор python напрямую:
export PYTHONPATH=${PYTHONPATH}:/some/dir/package/path
python3 -m trainer.task --job-dir /tmp ...