Почему локальное обучение с Google AI-Platform не работает в виртуальной среде?

Я использую платформу AI из облачной платформы Google для обучения классификатора случайного леса с помощью scikit-learn, используя этот шаблон из GitHub Google Cloud Platform.

Я скорректировал код в некоторых местах, чтобы он соответствовал моей проблеме. Код написан на 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. Надеюсь, ты сможешь мне помочь.


person merijn    schedule 24.09.2019    source источник


Ответы (1)


Ты прав. Это связано с тем, что gcloud не может выполнять программы Python3 локально.

Существует очень простой обходной путь - не используйте gcloud ai-platform local train. Вместо этого просто вызовите интерпретатор python напрямую:

export PYTHONPATH=${PYTHONPATH}:/some/dir/package/path
python3 -m trainer.task --job-dir /tmp ...
person Lak    schedule 25.09.2019