Почему локальное обучение с 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 ...
Другие вопросы по тегам