Я пытаюсь запустить свою модель на облачном ml-движке Google с помощью:
gcloud ml-engine jobs submit training $NAME --module-name train.task_w2v \
--package-path train --runtime-version 1.8 --python-version 3.5 \
--scale-tier BASIC --staging-bucket $BUCKET --region $REGION
А это мой setup.py:
from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = ['numpy', 'tensorflow', 'pandas', 'matplotlib',
'opencv-python', 'PyYAML', 'coloredlogs', 'scikit-learn', 'scipy', 'matplotlib']
setup(
name='ConvMultiAttention',
version='0.9',
author='name',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
include_package_data=True,
)
Модель работает нормально локально и успешно собирается:
I master-replica-0 Successfully installed model-0.9 coloredlogs-10.0 cycler-0.10.0 humanfriendly-4.15.1 kiwisolver-1.0.1 matplotlib-2.2.2 opencv-python-3.4.1.15 pyparsing-2.2.0 master-replica-0
I master-replica-0 Running command: python3 -m train.task_w2v master-replica-0
Но затем возникает это исключение:
master-replica-0 Traceback (most recent call last): File "/usr/lib/python3.5/tkinter/__init__.py", line 36, in import _tkinter ImportError: No module named '_tkinter'
master-replica-0 Command '['python3', '-m', 'train.task_w2v']' returned non-zero exit status 1
Поскольку я понимаю, что tkinter является частью python3.5, я действительно не знаю, что здесь не так и что делать. Я попытался запустить его без matplotlib и с более низкой версией tf, но проблемы были.
Также я получаю эти предупреждения:
google-cloud-spanner 0.29.0 has requirement requests<3.0dev,>=2.18.4, but you'll have requests 2.13.0 which is incompatible.
The script humanfriendly is installed in '/root/.local/bin' which is not on PATH.
С чем я действительно не знаю, как справиться, и если мне вообще нужно.





Использование ТЗ при обучении без головы не принесет большой пользы. Как отметил user2368505 в комментариях, следует избегать использования TK:
import matplotlib
matplotlib.use("agg")
В случае, если это будет полезно для потомков, я обнаружил, что на моей локальной виртуальной машине Ubuntu tkinter не был установлен. При желании в ваш `setup.py 'можно добавить следующее:
import subprocess
subprocess.check_call(['apt-get', '-y', 'install', 'python3-tk'])
Опять же, напрямую не полезно, но служит для демонстрации того, как можно произвольно устанавливать зависимости через setup.py.
Я считаю, что команда apt-get будет работать (т.е. у вас должно быть разрешение). Есть шанс, что вам сначала понадобится sudo. Кроме того, я обновил свой ответ с помощью бэкэнда agg.
У меня нет разрешения делать это в gcloud ml-engine. Я обошел это, используя: "import matplotlib matplotlib.use (" agg ") import matplotlib.pyplot as plt", поскольку я не использую tkinter. Если есть способ сделать вызов подпроцесса apt-get на ml-движке, не могли бы вы добавить его к своему ответу, чтобы я мог принять его для других людей?