Как использовать virtualenv для установки пакетов, но по-прежнему использовать системную установку tenorflow - PullRequest
0 голосов
/ 01 сентября 2018

На моем локальном компьютере он настроен так, что я устанавливаю эти зависимости в виртуальной среде во время тестирования ML

tensorflow
keras
h5py
requests
pillow
tensorflow-hub

У меня есть сценарии, которые пройдут, сделают venv, установят требования и проведут обучение. Было бы хорошо, если бы я мог использовать эти сценарии где угодно, в том числе на виртуальных машинах Google Deep Learning Platform, но когда я пытаюсь установить тензор потока в venv, он больше не использует графический процессор, поэтому я предполагаю, что он больше не использует установку системы тензор потока.

Я также попробовал флаг --system-site-packages, и это сказало, что тензор потока уже установлен, но затем он прекратил использовать графический процессор.

Допустим, я делаю следующее

$ virtualenv --sysem-site-packages venv/
$ source venv/bin/activate
$ pip install -r requirements.txt
Collecting tensorflow (from -r requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/1a/c4/8cb95df0bf06089014259b25997c3921a87aa08e2cd981417d91ca92f7e9/tensorflow-1.10.1-cp27-cp27mu-manylinux1_x86_64.whl
Requirement already satisfied: keras in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 2)) (2.2.2)
Requirement already satisfied: h5py in /usr/lib/python2.7/dist-packages (from -r requirements.txt (line 3)) (2.7.0)
Requirement already satisfied: requests in /usr/lib/python2.7/dist-packages (from -r requirements.txt (line 4)) (2.12.4)
Requirement already satisfied: pillow in /usr/lib/python2.7/dist-packages (from -r requirements.txt (line 5)) (4.0.0)
Requirement already satisfied: tensorflow-hub in /home/john/.local/lib/python2.7/site-packages (from -r requirements.txt (line 6)) (0.1.1)
Collecting numpy<=1.14.5,>=1.13.3 (from tensorflow->-r requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/6a/a9/c01a2d5f7b045f508c8cefef3b079fe8c413d05498ca0ae877cffa230564/numpy-1.14.5-cp27-cp27mu-manylinux1_x86_64.whl
Requirement already satisfied: grpcio>=1.8.6 in /usr/local/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (1.14.1)
Requirement already satisfied: protobuf>=3.6.0 in /home/john/.local/lib/python2.7/site-packages (from tensorflow->-r requirements.txt (line 1)) (3.6.1)
Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (1.1.0)
Requirement already satisfied: backports.weakref>=1.0rc1 in /usr/local/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (1.0.post1)
Requirement already satisfied: absl-py>=0.1.6 in /usr/local/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (0.3.0)
Requirement already satisfied: wheel in ./venv/lib/python2.7/site-packages (from tensorflow->-r requirements.txt (line 1)) (0.31.1)
Requirement already satisfied: tensorboard<1.11.0,>=1.10.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (1.10.0)
Requirement already satisfied: six>=1.10.0 in /home/john/.local/lib/python2.7/site-packages (from tensorflow->-r requirements.txt (line 1)) (1.11.0)
Requirement already satisfied: gast>=0.2.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (0.2.0)
Requirement already satisfied: mock>=2.0.0 in /usr/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (2.0.0)
Requirement already satisfied: enum34>=1.1.6 in /usr/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (1.1.6)
Requirement already satisfied: astor>=0.6.0 in /usr/local/lib/python2.7/dist-packages (from tensorflow->-r requirements.txt (line 1)) (0.7.1)
Collecting setuptools<=39.1.0 (from tensorflow->-r requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/8c/10/79282747f9169f21c053c562a0baa21815a8c7879be97abd930dbcf862e8/setuptools-39.1.0-py2.py3-none-any.whl
Requirement already satisfied: pyyaml in /usr/lib/python2.7/dist-packages (from keras->-r requirements.txt (line 2)) (3.12)
Requirement already satisfied: scipy>=0.14 in /usr/lib/python2.7/dist-packages (from keras->-r requirements.txt (line 2)) (0.18.1)
Requirement already satisfied: keras-applications==1.0.4 in /usr/local/lib/python2.7/dist-packages (from keras->-r requirements.txt (line 2)) (1.0.4)
Requirement already satisfied: keras-preprocessing==1.0.2 in /usr/local/lib/python2.7/dist-packages (from keras->-r requirements.txt (line 2)) (1.0.2)
Requirement already satisfied: futures>=2.2.0 in /usr/local/lib/python2.7/dist-packages (from grpcio>=1.8.6->tensorflow->-r requirements.txt (line 1)) (3.2.0)
Requirement already satisfied: markdown>=2.6.8 in /usr/lib/python2.7/dist-packages (from tensorboard<1.11.0,>=1.10.0->tensorflow->-r requirements.txt (line 1)) (2.6.8)
Requirement already satisfied: werkzeug>=0.11.10 in /usr/lib/python2.7/dist-packages (from tensorboard<1.11.0,>=1.10.0->tensorflow->-r requirements.txt (line 1)) (0.11.15)
tensorflow-serving-api 1.10.0 has requirement protobuf==3.6.0, but you'll have protobuf 3.6.1 which is incompatible.
Installing collected packages: numpy, setuptools, tensorflow
  Found existing installation: numpy 1.15.1
    Not uninstalling numpy at /home/john/.local/lib/python2.7/site-packages, outside environment /home/john/retrain/venv
    Can't uninstall 'numpy'. No files were found to uninstall.
  Found existing installation: setuptools 40.2.0
    Uninstalling setuptools-40.2.0:
      Successfully uninstalled setuptools-40.2.0
Successfully installed numpy-1.14.5 setuptools-39.1.0 tensorflow-1.10.1

Для всех тензорных потоков зависимостей он показывает, что он существует в системе, поэтому не устанавливает их, но затем все равно запускает и устанавливает тензор потока. Почему это?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

К сожалению, не существует "толстого" двоичного файла с тензорным потоком, который был бы оптимизирован как для CPU, так и для GPU. Однако в обоих случаях можно использовать tenorflow-gpu.

Установка tenorflow-gpu на экземпляре только для процессора

Фактически возможно использовать двоичные файлы tenoflow-gpu в экземпляре без графического процессора. Чтобы использовать его, необходимо установить CUDA и CuDNN на экземпляр (даже если экземпляр не имеет графического процессора Nvidia). CUDA, внутри имеет драйвер Nvidia, который позволяет CUDA и CuDNN работать поверх CPU, чтобы использовать его в linux, вам нужно выполнить следующие команды:

sudo ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/libcuda.so.1
sudo ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/libcuda.so

при условии, что /usr/local/cuda - это путь, где установлена ​​CUDA (может отличаться на разных платформах). Как только это будет сделано, на самом деле можно установить и использовать тензор потока-gpu на экземпляре только для процессора.

Я знаю, что это похоже на взлом и может даже не работать на некоторых платформах, но, по крайней мере, каким-то образом позволяет использовать тот же файл requirenemts.txt и даже один и тот же двоичный файл на экземплярах с графическим и не графическим процессором.

0 голосов
/ 01 сентября 2018

в вашем файле требований, у вас есть пакет tensorflow, который предназначен только для процессора. Для поддержки GPU установите tensorflow-gpu.

...