Tensorflow: Чудеса 3.0?

Созданный на 9 нояб. 2015  ·  101Комментарии  ·  Источник: tensorflow/tensorflow

Планируется ли поддержка вычислительных возможностей Cuda версии 3.0?

Самый полезный комментарий

Что касается сборки для устройства Cuda 3.0, если вы синхронизируете последний код TensorFlow, вы можете сделать следующее. Официальная документация скоро будет обновлена. Но вот как это выглядит:

$ TF_UNOFFICIAL_SETTING=1 ./настроить

... То же, что и официальные настройки выше

ВНИМАНИЕ: вы настраиваете неофициальные параметры в TensorFlow. Потому что некоторые
внешние библиотеки не имеют обратной совместимости, эти настройки в основном
не проверено и не поддерживается.

Укажите список вычислительных возможностей Cuda, разделенных запятыми, которые вы хотите
построить с. Узнать вычислительные возможности вашего устройства можно по адресу:
https://developer.nvidia.com/cuda-gpus.
Обратите внимание, что каждая дополнительная вычислительная мощность значительно увеличивает
время сборки и размер двоичного файла. [По умолчанию: "3.5,5.2"]: 3.0

Настройка Cuda включает
Настройка Cudalib64
Настройка бина Cuda
Настройка Cuda nvvm
Конфигурация завершена

Все 101 Комментарий

Официально поддерживаются вычислительные возможности Cuda 3.5 и 5.2. Вы можете попытаться включить другие вычислительные возможности, изменив скрипт сборки:

https://github.com/tensorflow/tensorflow/blob/master/ Third_Party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc#L236

Спасибо! Попробую и отчитаюсь здесь.

Это пока официально не поддерживается. Но если вы хотите включить Cuda 3.0 локально, вот дополнительные места для изменения:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/gpu/gpu_device.cc#L610
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/gpu/gpu_device.cc#L629
Где меньшее устройство GPU игнорируется.

Официальная поддержка в конечном итоге будет осуществляться в другой форме, где мы гарантируем, что исправление работает во всех различных вычислительных средах.

Я внес изменения в приведенные выше строки и смог скомпилировать и запустить базовый пример на странице «Начало работы»: http://tensorflow.org/get_started/os_setup.md#try_your_first_tensorflow_program — он не жаловался на GPU, но он также не сообщал об использовании графического процессора.

Как я могу помочь с дальнейшими действиями?

infojunkie@, не могли бы вы опубликовать свой шаг и загрузить журнал?

Если бы вы следовали этому примеру:

bazel build -c opt --config=cuda//tensorflow/cc:tutorials_example_trainer
bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

Если вы видите следующую строку, логическое устройство GPU создается:

Создание устройства TensorFlow (/gpu:0) -> (устройство: ..., имя: ..., идентификатор шины pci: ...)

Если вы хотите быть абсолютно уверены, что использовался GPU, установите CUDA_PROFILE=1 и включите профайлер Cuda. Если были сгенерированы журналы профилировщика Cuda, это был верный признак использования графического процессора.

http://docs.nvidia.com/cuda/profiler-users-guide/#command-line-profiler-control

Я получил следующий журнал:

I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:888] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:88] Found device 0 with properties: 
name: GeForce GT 750M
major: 3 minor: 0 memoryClockRate (GHz) 0.967
pciBusID 0000:02:00.0
Total memory: 2.00GiB
Free memory: 896.49MiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:122] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_region_allocator.cc:47] Setting region size to 730324992
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 750M, pci bus id: 0000:02:00.0)
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8

Я предполагаю, что это означает, что графический процессор был найден и использован. Я могу попробовать профилировщик CUDA, если вы считаете его полезным.

Пожалуйста, сделайте этот вопрос приоритетным. Он блокирует использование графического процессора как на OSX, так и на AWS K520, и для многих людей это единственная доступная среда.
Спасибо!

Не самое приятное исправление, но просто закомментируйте проверку версии вычислений cuda в строке _gpu_device.c_ с 610 по 616 , перекомпилируйте, и ускорение графического процессора amazon g2, похоже, работает нормально:

example

Для справки, вот мой очень примитивный патч для работы с Cuda 3.0: https://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e

@infojunkie Я применил ваше исправление, но в результате вычислений я получил много нанов:

$ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu
000006/000003 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000004/000003 lambda = 2.000027 x = [79795.101562 -39896.468750] y = [159592.375000 -79795.101562]
000005/000006 lambda = 2.000054 x = [39896.468750 -19947.152344] y = [79795.101562 -39896.468750]
000001/000007 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000002/000003 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000009/000008 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000004/000004 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000001/000005 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000006/000007 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000003/000006 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]
000006/000006 lambda =     -nan x = [0.000000 0.000000] y = [0.000000 0.000000]

@markusdr , это очень странно. Не могли бы вы опубликовать полностью шаги по созданию двоичного файла?

С каким графическим процессором и ОС вы работаете? Вы используете Cuda 7.0 и Cudnn 6.5 V2?

Просто +1, чтобы исправить эту проблему на AWS как можно скорее. У нас нет других видеокарт для нашего исследования.

Привет, не уверен, что это отдельная проблема, но я пытаюсь построить с помощью графического процессора CUDA 3.0 (Geforce 660 Ti) и получаю много ошибок с --config=cuda. См. прикрепленный файл ниже. Кажется, это не связано с рекомендуемыми изменениями выше. Я заметил, что он пытается скомпилировать временный файл calculate_52.cpp1.ii, версия которого не подходит для моего графического процессора.

У меня убунту 15.10. Я изменил host_config.h в Cuda, чтобы удалить проверку версии в gcc. Я использую Cuda 7.0 и cuDNN 6.5 v2 в соответствии с рекомендациями, хотя у меня также установлены более новые версии.

cuda_build_fail.txt

Да, я использовал Cuda 7.0 и Cudnn 6.5 на экземпляре EC2 g2.2xlarge с этим AIM:
cuda_7 - ами-12fd8178
ubuntu 14.04, gcc 4.8, cuda 7.0, атлас и opencv.
Для сборки я следовал инструкциям на tensorflow.org.

Похоже, мы наблюдаем несовместимость API между Compute Capability v3 и Compute Capability v3.5; опубликуйте исправление патча infojunkie , я наткнулся на эту проблему

I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Создание устройства TensorFlow (/gpu:0) -> (устройство: 0, имя: Quadro K2100M, идентификатор шины pci: 0000:01:00.0)
I tensorflow/core/common_runtime/local_session.cc:45] Потоки параллелизма между локальными сеансами: 8
F tensorflow/stream_executor/cuda/cuda_blas.cc:229] Ошибка проверки: f != nullptr _ не удалось найти cublasCreate_v2 в cuBLAS DSO_; dlerror: bazel-bin/tensorflow/cc/tutorials_example_trainer: неопределенный символ: cublasCreate_v2

Я использую Ubuntu 15.04, gcc 4.9.2, CUDA Toolkit 7.5, cuDNN 6.5;

+1 за наличие поддержки Compute Capability v3

Кублас установлен? а где ссылка на
ls -lah /usr/local/cuda/lib64/libcublas.so ?

@allanzelener , какие у вас версии ОС и GCC? Ваши ошибки, похоже, исходят от несовместимых компиляторов C++.

Рекомендуется использовать Ubuntu 14.04 и GCC 4.8 с TensorFlow.

@vsrikarunyan , как рекомендуется, лучше использовать CUDA Toolkit 7.0. Вы можете установить старый набор инструментов CUDA вместе с новым набором инструментов. Просто укажите TensorFlow «настроить» и, возможно, LD_LIBRARY_PATH на CUDA 7.0 при запуске TensorFlow.

@avostryakov , ранний патч @infojunkie должен работать на AWS.

https://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e

Официальный патч проходит через конвейер. Он предоставит параметр конфигурации, позволяющий выбрать цель вычислений. Но внутри он делает аналогичные изменения. Я попробовал это на AWS g2 и узнал, как только все заработает, после того, как я полностью удалю драйвер NVIDIA и переустановлю последний драйвер графического процессора от NVIDIA.

Еще раз, рекомендуемая настройка на AWS на этом этапе следующая.
Ubuntu 14.04, GCC 4.8, набор инструментов CUDA 7.0 и CUDNN 6.5. Для последних двух можно установить их, не затрагивая существующую установку других версий. Также скоро могут измениться официальные рекомендуемые версии для последних двух.

Я применил тот же патч к экземпляру g2.2xlarge и получил тот же результат, что и @markusdr... кучу нанов.

@ zheng-xq Да, у меня Ubuntu 15.10 и я использовал GCC 5.2.1. Проблема была в компиляторе. Я не мог понять, как изменить компилятор с помощью bazel, но, похоже, сработала простая установка gcc-4.8 и использование альтернативных обновлений для изменения символических ссылок в usr/bin. (Дополнительная информация: http://askubuntu.com/questions/26498/choose-gcc-and-g-version). Спасибо за помощь, я сообщу, если у меня возникнут дальнейшие проблемы.

Я заставил это работать на экземпляре g2.2xlarge, запустил обучающий пример и проверил, что графический процессор был активен с помощью инструмента nvidia-smi, но при запуске mnist convolutional.py ему не хватило памяти. Я подозреваю, что это просто связано с размером партии и тем фактом, что у aws gpu не так много памяти, но я просто хотел выбросить это, чтобы убедиться, что это звучит правильно. Чтобы уточнить, я запустил следующее, и он работал около 15 минут, а затем закончилась память.

python тензорный поток/модели/изображение/mnist/convolutional.py

@nbenhaim , что тебе нужно было сделать, чтобы заставить его работать?

@markusdr , @jbencook , NAN очень беспокоит. Я сам запускал то же самое, и не было никаких проблем.

Если вы используете рекомендуемые настройки программного обеспечения: Ubuntu 14.04, GCC 4.8, Cuda 7.0 и Cudnn 6.5, то мое следующее предположение — это драйвер Cuda. Не могли бы вы удалить и переустановить последнюю версию драйвера Cuda.

Это последовательность, которую я пробовал на AWS, ваш пробег может отличаться:

sudo apt-get remove --purge "nvidia*"
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/352.55/NVIDIA-Linux-x86_64-352.55.run
sudo ./NVIDIA-Linux-x86_64-352.55.run --accept-license --no-x-check --no-recursion

Спасибо за продолжение @zheng-xq - сегодня попробую.

Еще один +1 за поддержку графических процессоров до версии 3.5, поскольку кто-то другой, чей единственный реальный вариант обучения на реальных данных — это экземпляры графического процессора AWS.

Оказывается, даже для локального тестирования графический процессор моего (недавнего, разработчика) ноутбука не поддерживает 3.5 :-(

@anjishnu Я только что выполнил патч @infojunkie https://gist.github.com/infojunkie/cb6d1a4e8bf674c6e38e после чистой установки и сборки, следуя инструкциям.

Несколько комментариев. В AMI, который я использовал, был установлен набор инструментов NVIDIA cuda 6.5, поэтому, когда я перешел по ссылке в руководстве по началу работы с tensorflow, я загрузил файл 7.0 .run для Ubuntu 14.04, обновил драйвер и установил cuda 7.0 в /usr/local/cuda-7.0 без создания символической ссылки на /usr/local/cuda, так как у меня уже была установлена ​​версия 6.5, и я не хотел ее убивать

Затем при сборке я просто указал правильное расположение cuda 7.0. Одна сбивающая с толку вещь заключается в том, что при создании библиотеки python учебник не напоминает вам указать --config=cuda , но вы должны сделать это, если хотите, чтобы библиотека python использовала gpu.

@markusdr , @jbencook , я получил NaN и всевозможные перепутанные значения, когда я первоначально применил патч, но что исправило, так это выполнение «очистки базеля» и перестроение с нуля после внесения предложенных изменений, описанных в @infojunkie. патч. Вы пробовали это?

Интересно... нет, у меня еще не было возможности. Вы пытались запустить CNN из руководства по началу работы?

python tensorflow/models/image/mnist/convolutional.py

Любопытно услышать, правильно ли это сработало.

@jbencook , как я уже упоминал, convolutional.py, кажется, работает правильно, но примерно через 15 минут он падает из-за нехватки памяти, но вывод выглядит правильно, и я использовал инструмент nvidia-smi, чтобы убедиться, что он действительно работает на графическом процессоре, и это является. Я подозреваю, что это из-за размера пакета ... я знаю, что у GPU на ec2 не так много памяти, но я действительно не уверен в этот момент, почему у него закончилась память

В примере с convolutional.py мне тоже не хватило памяти графического процессора на GeForce GTX 780 Ti.

Я смог установить его на AWS после долгих мучений. См. https://gist.github.com/erikbern/78ba519b97b440e10640 — я также построил AMI: ami-cf5028a5 (в регионе Вирджиния)

Он работает на g2.2xlarge и g2.8xlarge и правильно определяет устройства (1 и 4 соответственно). Однако я не вижу никакого ускорения от карт с 4 графическими процессорами на g2.8xlarge. Обе машины обрабатывают около 330 примеров в секунду, выполняя пример CIFAR 10 с несколькими графическими процессорами. Также очень похожая производительность на сверточном примере MNIST. Он также вылетает примерно через 15 минут с сообщением «Недостаточно памяти графического процессора, см. дамп состояния памяти выше», как некоторые другие люди, упомянутые выше.

Я запускал пример CIFAR около часа, и, похоже, пока он работает достаточно хорошо.

Что касается сборки для устройства Cuda 3.0, если вы синхронизируете последний код TensorFlow, вы можете сделать следующее. Официальная документация скоро будет обновлена. Но вот как это выглядит:

$ TF_UNOFFICIAL_SETTING=1 ./настроить

... То же, что и официальные настройки выше

ВНИМАНИЕ: вы настраиваете неофициальные параметры в TensorFlow. Потому что некоторые
внешние библиотеки не имеют обратной совместимости, эти настройки в основном
не проверено и не поддерживается.

Укажите список вычислительных возможностей Cuda, разделенных запятыми, которые вы хотите
построить с. Узнать вычислительные возможности вашего устройства можно по адресу:
https://developer.nvidia.com/cuda-gpus.
Обратите внимание, что каждая дополнительная вычислительная мощность значительно увеличивает
время сборки и размер двоичного файла. [По умолчанию: "3.5,5.2"]: 3.0

Настройка Cuda включает
Настройка Cudalib64
Настройка бина Cuda
Настройка Cuda nvvm
Конфигурация завершена

@nbenhaim @markusdr

Проблема с нехваткой памяти может быть связана с тем, что convolutional.py выполняет оценку всего набора тестовых данных (10000) примеров. Это происходит после завершения обучения, как последний шаг:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/image/mnist/convolutional.py#L266

Можете ли вы попробовать нарезать train_data и test_labels , чтобы сделать их меньше?

Я могу подтвердить, что с помощью сценария установки @erikbern и последней основной ветки TensorFlow cifar10_multi_gpu_train.py работает на графическом процессоре, как и ожидалось:

step 100, loss = 4.49 (330.8 examples/sec; 0.387 sec/batch)

Хотя эта строка теперь ломается из-за изменений кода.

Также, если я возьму 1000 тестовых образцов, пример convolutional.py тоже сработает.

РЕДАКТИРОВАТЬ: пример bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu также работает, не давая мне кучу нан.

Я подтверждаю, что последняя сборка поддерживает указание вычислительных возможностей через
$ TF_UNOFFICIAL_SETTING=1 ./configure
без необходимости патча. Спасибо!

Я думаю, что эту проблему можно закрыть, если кто-то не столкнется с реальной функцией, которая не работает для Cuda < 3.5.

На самом деле, позвольте мне взять это обратно :-) Скрипт ./configure модифицирует исходный код, заменяя соответствующие строки указанными вручную версиями Cuda. Затем git сообщает о незафиксированных изменениях, и становится очень сложно работать с этой кодовой базой без отмены изменений, внесения git pull и повторной настройки, не говоря уже о отправке дополнений.

Лучшим подходом было бы чтение этих настроек версии из файла конфигурации.

Эрик Берн выше, и его AMI работает на cifar для меня - ami-cf5028a5

Получение ~ 320 выборок в секунду по сравнению с моей коробкой Windows i7 на докере, которая получает ~ 105 выборок в секунду для cifar10_train.py

@infojunkie : да, это не идеально, мы с @zheng-xq немного обсуждали это во время обзора!).

Мы попытаемся придумать лучший способ справиться с этим, хотя мы хотели бы сохранить возможность синхронизации устройств во время выполнения с тем, как был построен двоичный файл (следовательно, необходимо редактировать исходный код как для компиляции, так и для время выполнения). В противном случае пользователи получают трудно отлаживаемые ошибки.

Мы продолжим работать над тем, чтобы сделать это проще, но, надеюсь, это позволит вам продвинуться вперед.

@vrv : да, я определенно могу продолжить работу с этими исправлениями. Спасибо за поддержку!

Просто любопытно, поскольку c4.4xlarge с 16 vCpus составляет около 0,88 в час по сравнению с экземпляром GPU, который составляет 0,65 в час, не лучше ли использовать несколько процессоров, чем GPU?

@timshephard Я сомневаюсь в этом, но не стесняйтесь запускать некоторые тесты — вы можете установить мой AMI (ami-cf5028a5) на c4.4xlarge и запустить cifar10_train.py

На самом деле, g2.2xlarge имеет 8 процессоров наряду с графическим процессором. Собираюсь попробовать это.

поддерживается многопоточный процессор, но если вы хотите провести настоящее обучение,
GPU 4 Life, пока не выпустят распределенную реализацию

Чт, 12 ноября 2015 г., 16:53, Эрик Бернхардссон < [email protected]

написал:

@timshephard https://github.com/timshephard Сомневаюсь, но не стесняйтесь
для запуска некоторых тестов — вы можете установить мой AMI (ami-cf5028a5) на
c4.4xlarge и запустите cifar10_train.py.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/tensorflow/tensorflow/issues/25#issuecomment-156274039
.

Я получил только 3-кратное ускорение для графического процессора amazon по сравнению с моим процессором Windows на докере. Хорошо, но это было только одно из моих ядер. Все 4 ядра на моем компьютере с Windows, вероятно, могли бы превзойти графический процессор Amazon.

это интересно, потому что с caffe я не проводил никаких тестов,
но обучение в режиме процессора ужасное, вроде на порядок или больше
разница. Возможно, TF лучше оптимизируется в режиме процессора — не удивлюсь
меня.

В четверг, 12 ноября 2015 г., в 17:01, [email protected]
написал:

Я получал только 3-кратное ускорение для графического процессора amazon по сравнению с моим процессором Windows на
докер. Хорошо, но это было только одно из моих ядер. Все для 4 ядер на моем
Windows Box, вероятно, мог бы превзойти графический процессор Amazon.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/tensorflow/tensorflow/issues/25#issuecomment-156275410
.

Пожалуйста, имейте в виду, что руководство по cifar10 не предназначено для использования в качестве эталона. Он предназначен для демонстрации нескольких различных функций, таких как заставка и сводка. В своем нынешнем виде он будет ограничен процессором, даже с графическим процессором. Для бенчмаркинга нужно быть более осторожным и использовать только основные функции.

Возможно, по какой-то причине графические процессоры Amazon работают медленно https://www.reddit.com/r/MachineLearning/comments/305me5/slow_gpu_performance_on_amazon_g22xlarge/
Интересный отчет: «G2.2xlarge — это GK104 с пониженной тактовой частотой (797 МГц), что делает его 1/4 скорости недавно выпущенного TitanX и в 2,7 раза медленнее, чем GTX 980».

fwiw, получение 2015-11-13 00:38:05.472034: шаг 20, потеря = 4,64 (362,5 примеров/сек; 0,353 сек/пакет)
теперь с 7 процессорами и cifar10_multi_gpu_train.py. Я изменил все ссылки на устройства с GPU на CPU, если это имеет смысл.

хорошо, странно. 13.11.2015 00:43:56.914273: шаг 10, потери = 4,65 (347,4 примера/сек; 0,368 секунды/пакет) и использование 2 процессоров, поэтому здесь явно что-то не так. Должно быть, все еще используется GPU. Интересно, что он обрабатывает немного быстрее, чем версия скрипта с одним GPU.

даже с инструкциями Эрикберна я все еще получаю

AssertionError: Модель расходится с потерей = NaN, когда я пытаюсь использовать cifar_train.py, и это при запуске mnist/convolutional.py

Эпоха 1.63
Потеря мини-пакета: нан, скорость обучения: нан
Ошибка мини-пакета: 90,6%
Ошибка проверки: 90,4%
Эпоха 1.75
Потеря мини-пакета: нано, скорость обучения: 0,000000
Ошибка мини-пакета: 92,2%
Ошибка проверки: 90,4%
Эпоха 1.86
Потеря мини-пакета: нано, скорость обучения: 0,000000

Я получил его для работы на графическом процессоре на AWS, но, как и другие, я получаю невпечатляющую скорость.

Мне удалось запустить пример convolutional.py без нехватки памяти после использования правильного исправления, предложенного @zheng-xq для установки параметра при запуске configure

Сценарий установки, предоставленный @erikbern , больше не работает после фиксации 9c3043ff3bf31a6a81810b4ce9e87ef936f1f529.

Самая последняя фиксация представила эту ошибку, @keveman уже сделал заметку об этой фиксации здесь:
https://github.com/tensorflow/tensorflow/commit/9c3043ff3bf31a6a81810b4ce9e87ef936f1f529#diff -1a60d717df0f558f55ec004e6af5c7deL25

Привет! У меня проблема с компиляцией tensorflow на GTX 670. Запускаю

TF_UNOFFICIAL_SETTING=1 ./configure
bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer

Я получил ошибку:

INFO: Found 1 target...
INFO: From Compiling tensorflow/core/kernels/bias_op_gpu.cu.cc:
tensorflow/core/kernels/bias_op_gpu.cu.cc(40): error: identifier "__ldg" is undefined
          detected during:
            instantiation of "void tensorflow::functor::BiasOpCustomKernel(int, const T *, const T *, int, int, T *) [with T=float]" 
(57): here
            instantiation of "void tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::operator()(const tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::Device &, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::ConstTensor, tensorflow::TTypes<T, 1, Eigen::DenseIndex>::ConstVec, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::Tensor) [with T=float, Dims=2]" 
(69): here

tensorflow/core/kernels/bias_op_gpu.cu.cc(40): error: identifier "__ldg" is undefined
          detected during:
            instantiation of "void tensorflow::functor::BiasOpCustomKernel(int, const T *, const T *, int, int, T *) [with T=double]" 
(57): here
            instantiation of "void tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::operator()(const tensorflow::functor::Bias<tensorflow::GPUDevice, T, Dims>::Device &, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::ConstTensor, tensorflow::TTypes<T, 1, Eigen::DenseIndex>::ConstVec, tensorflow::TTypes<T, Dims, Eigen::DenseIndex>::Tensor) [with T=double, Dims=2]" 
(69): here

2 errors detected in the compilation of "/tmp/tmpxft_000067dd_00000000-7_bias_op_gpu.cu.cpp1.ii".
ERROR: /home/piotr/tensorflow/tensorflow/tensorflow/core/BUILD:248:1: output 'tensorflow/core/_objs/gpu_kernels/tensorflow/core/kernels/bias_op_gpu.cu.o' was not created.
ERROR: /home/piotr/tensorflow/tensorflow/tensorflow/core/BUILD:248:1: not all outputs were created.
Target //tensorflow/cc:tutorials_example_trainer failed to build

Информация о моей карте от NVIDIA, образцы deviceQuery:

Device 0: "GeForce GTX 670"
  CUDA Driver Version / Runtime Version          7.5 / 7.0
  CUDA Capability Major/Minor version number:    3.0
  Total amount of global memory:                 2046 MBytes (2145235968 bytes)
  ( 7) Multiprocessors, (192) CUDA Cores/MP:     1344 CUDA Cores
  GPU Max Clock rate:                            980 MHz (0.98 GHz)
  Memory Clock rate:                             3004 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.0, NumDevs = 1, Device0 = GeForce GTX 670

Любые идеи, почему это не работает?
Спасибо!

я думаю, что примитив __ldg существует только для 3.5+. У нас есть внутреннее исправление для поддержки обоих, которое мы постараемся выпустить в ближайшее время.

Подробнее см. https://github.com/tensorflow/tensorflow/issues/320 .

Спасибо! Добавление исправления из #320 помогло мне, я могу скомпилировать (с большим количеством предупреждений) и выполнить

bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

Когда я запускаю примеры:

tensorflow/models/image/mnist$ python convolutional.py 

Я получаю предупреждение, что:

Ignoring gpu device (device: 0, name: GeForce GTX 670, pci bus id: 0000:01:00.0) with Cuda compute capability 3.0. The minimum required Cuda capability is 3.5.

Как включить GPU в примерах из tensorflow/models/images?

@erikbern
Вы выяснили проблему с несколькими графическими процессорами на Amazon? Я также запускаю экземпляр CIFAR с несколькими графическими процессорами, но не вижу ускорения.

Вот статус использования графического процессора, кажется, что все графические процессоры используются, но они ничего не делают.

+------------------------------------------------- -----+
| NVIDIA-SMI 346.46 Версия драйвера: 346.46 |
|-------------------------------+---------------- -----+----------------------+
| Имя GPU Persistence-M| Bus-Id Disp.A | Летучий некорр. ЕСК |
| Fan Temp Perf Pwr:Usage/Cap | Использование памяти | GPU-Util Compute M. |
|===============================+================= =====+======================|
| 0 СЕТКА K520 Выкл. | 0000:00:03.0 Выкл | Н/Д |
| Н/Д 54C P0 55 Вт / 125 Вт | 3832 МБ / 4095 МБ | 37% По умолчанию |
+----------------------------------------------+---------------- -----+----------------------+
| 1 СЕТКА K520 Выкл. | 0000:00:04.0 Выкл | Н/Д |
| Н/Д 42C P0 42 Вт / 125 Вт | 3796 МБ / 4095 МБ | 0% По умолчанию |
+----------------------------------------------+---------------- -----+----------------------+
| 2 СЕТКА K520 Выкл. | 0000:00:05.0 Выкл | Н/Д |
| Н/Д 46C P0 43 Вт / 125 Вт | 3796 МБ / 4095 МБ | 0% По умолчанию |
+----------------------------------------------+---------------- -----+----------------------+
| 3 СЕТКА K520 Выкл. | 0000:00:06.0 Выкл | Н/Д |
| Н/Д 43C P0 41 Вт / 125 Вт | 3796 МБ / 4095 МБ | 0% По умолчанию |
+----------------------------------------------+---------------- -----+----------------------+

+------------------------------------------------- ----------------------------+
| Процессы: Память графического процессора |
| Тип PID графического процессора Имя процесса Использование |
|================================================ =============================|
| 0 60160 C питон 3819МиБ |
| 1 60160 C Python 3783 МБ |
| 2 60160 C Python 3783 МБ |
| 3 60160 C Python 3783 МБ |
+------------------------------------------------- ----------------------------+

@mhejrati согласно комментарию на https://news.ycombinator.com/item?id=10555692 кажется, что вы не можете сделать это в AWS:

Виртуализация Xen отключает копии P2P, поэтому графические процессоры имеют то, что мы называем «сбоем связи, и некоторые графические процессоры, к которым вы просто не можете подключиться (без прохождения через ЦП)».

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

@erikbern @mhejrati Я не уверен, что конкретное свойство Xen является проблемой. Копии P2P не кажутся необходимыми, поскольку процессор все еще может назначать работу каждому графическому процессору без необходимости взаимодействия графических процессоров друг с другом. Все еще странно, что все графические процессоры экземпляра находятся в этом полузагруженном состоянии, но работа продолжается без ошибок.

Я закрою этот баг. Пожалуйста, откройте новый с более конкретным заголовком, если некоторые проблемы здесь остаются нерешенными.

Означает ли это, что последняя версия tensorflow работает на инстансах Amazon g2 без каких-либо взломов? И значит ли это, что там работает более одного GPU?

Я не уверен, следует ли нам называть TF_UNOFFICIAL_* "не взломом", но да, это _должно_ работать. Если нет, то, скорее всего, это не связано с Cuda 3.0 как таковым, и у нас должна быть более конкретная ошибка.

И возможно ли выполнить код на двух или более графических процессорах на экземпляре Amazon? Например, параллелизм данных для обучения модели, как в примере CIFAR. Несколько ребят буквально на 5 комментариев выше этого комментария написали, что это невозможно.

Я не знаю. Но если это все еще проблема с 0.6.0, это должна быть ошибка, просто более конкретная ошибка, связанная с несколькими графическими процессорами.

Я использую 0.6.0 на Ubuntu, не могу использовать более одного графического процессора. Использование GPU на одном GPU всегда равно 0.

Просто для справки: аренда K40 или K80 на самом деле не является чрезмерно дорогой. У Amazon их нет, но есть несколько вариантов на http://www.nvidia.com/object/gpu-cloud-computing-services.html . (Некоторые всего за 3 доллара в час)

У Theano и Torch нет проблем с вычислениями 3.0. Можем ли мы ожидать, что TensorFlow будет поддерживать вычисления 3.0 в ближайшее время?

Или хотя бы добавить возможность обойти ограничение без перекомпиляции.

@Dringite , вы можете включить Cuda 3.0, используя следующее:

TF_UNOFFICIAL_SETTING=1 ./настроить

Он должен быть функциональным. И если это не так, не стесняйтесь зарегистрировать другую проблему, чтобы отследить ее.

Руководство по установке tensorflow теперь включает исправление для cuda 3.0.

В среду, 10 февраля 2016 г., в 14:37, [email protected] написал:

@Dringite https://github.com/Dringite , вы можете включить Cuda 3.0, используя
последующий:

TF_UNOFFICIAL_SETTING=1 ./настроить

Он должен быть функциональным. И если это не так, не стесняйтесь подать другой
вопрос, чтобы отследить его.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/tensorflow/tensorflow/issues/25#issuecomment-182610763
.

Я думаю, что текущее руководство не работает для графических процессоров - тест возвращает нан, как сообщалось ранее.
В частности, вам все еще нужно сделать это:
TF_UNOFFICIAL_SETTING=1 ./настроить

Я не могу найти руководство по установке, включающее исправление для cuda 3.0, может ли кто-нибудь указать мне? СПАСИБО!

printf "\ny\n7.5\n\n\n\n3.0\n" | ./настроить

7.5 — версия cuda, 3.0 — вычислительная.

По-прежнему нет улучшения производительности для нескольких графических процессоров в Amazon (CUDA = 7,5, cudnn = 4,0, вычисление = 3,0) по сравнению с одним графическим процессором.

кто-нибудь преуспел в вычислительных возможностях Cuda 2.0?

Проверено, что «TF_UNOFFICIAL_SETTING=1 ./configure» работает на MacBook Pro с GeForce GT 750M. Спасибо!

Есть ли ETA для официального исправления? Это действительно больно поддерживать (например, создавать образы с нашим собственным файлом докеров) в производстве.

Мой ноутбук дает мне этот журнал, когда я пытаюсь запустить образец mnist:
«Игнорирование устройства GPU (устройство: 0, имя: GeForce GT 635M, идентификатор шины pci) с вычислительными возможностями Cuda 2.1. Минимальная требуемая возможность Cuda — 3.0».
Значит ли это, что я не могу использовать версию GPU, потому что минимальная версия Cuda для tensorflow — 3.0?
Спасибо

Если вы используете готовые двоичные файлы, да. Если вы строите из исходников, вы можете
построить с поддержкой Cuda 2.1, но я не знаю, действительно ли это работает. Это
вероятно, что эффективным минимумом является cuda 3.0.
В субботу, 10 сентября 2016 г., в 11:51 Моджтаба Табатабаи, уведомления на адрес github.com
написал:

Мой ноутбук дает мне этот журнал, когда я пытаюсь запустить образец mnist:
«Игнорирование устройства GPU (устройство: 0, имя: GeForce GT 635M, идентификатор шины pci) с Cuda
вычислительная мощность 2.1. Минимальная требуемая возможность Cuda — 3.0. "
Значит ли это, что я не могу использовать версию GPU, потому что минимальная версия Cuda
для тензорного потока 3.0?
Спасибо


Вы получаете это, потому что вы изменили состояние открытия/закрытия.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/tensorflow/tensorflow/issues/25#issuecomment-246128896 ,
или заглушить тему
https://github.com/notifications/unsubscribe-auth/AAjO_RvNrRMQEmsueXWoaU5FX4tWHZq3ks5qovwegaJpZM4Ge0kc
.

@smtabatabaie Вы пытались собрать cuDNN из исходного кода, как предложил @martinwicke , у меня точно такие же проблемы, как и у вас, и мне очень поможет, если вы поделитесь своим опытом?

Некоторая помощь, пожалуйста. Я получаю то же сообщение об ошибке «Игнорирование видимого устройства GPU (устройство: 0, имя: GeForce GT 750M, идентификатор шины pci: 0000:01:00.0) с вычислительными возможностями Cuda 3.0. Минимальная требуемая возможность Cuda — 3,5».

Я читал сообщения от других, единственная проблема в том, что это прямая установка Windows, а не на AWS, как я предполагаю у большинства людей здесь. На сайте tensorflow указано, что требуется минимум 3.0, почему я не могу это использовать? и как я могу обойти это?

Предложения о том, как это сделать, пожалуйста.

@gunan @mrry пакеты Windows не созданы с помощью cuda 3.0? Вот почему
они такие маленькие?

@martinwicke Ночные клубы есть, и rc1 тоже должен быть.

ночные да.
rc0 я думаю было 3.5.
Выбрали ли мы изменение с 3.0 на r0.12?

Мы сделали вишневый выбор изменения.
@cydal вы можете использовать ночные сборки здесь:
http://ci.tensorflow.org/view/Nightly/job/nightly-win/14/DEVICE=gpu , OS=windows/artifact/cmake_build/tf_python/dist/tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64. что

Или вы можете дождаться версии 0.12.0rc1, которая должна выйти через несколько дней.

Спасибо, ребята, за быстрый ответ, я не ожидал, по крайней мере, какое-то время. Извините, если это звучит как глупый вопрос, как мне это установить? мне просто установить его? (если да, удалил ли я предыдущую графическую карту tensorflow? Или она делает это автоматически?) Или требуется ее загрузка и установка вручную каким-то образом? считайте меня немного новичком.

Ссылка указывает на «пакет PIP».
Если вы использовали команду pip install , вы сможете использовать ту же команду с флагом --upgrade .
Или вы можете запустить pip uninstall tensorflow , а затем установить пакет, указанный выше.
Как только вы дадите команде pip URL-адрес, он автоматически загрузится и установится.

Это все, что я могу дать, имея ограниченные знания о вашей системе, вашем дистрибутиве Python и т. д.
Попробуйте выполнить поиск в Google для получения более подробной информации о том, как установка пакета pip работает с вашим дистрибутивом Python.

Привет, я просто удалил предыдущий и переустановил, и он работает! Спасибо большое, вы спасли меня от покупки нового ноутбука.

Привет @gunan с последним изменением для совместимости с 3.5, я получаю следующий журнал:

>>>> sess = tf.Session()
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties:
name: Quadro K4100M
major: 3 minor: 0 memoryClockRate (GHz) 0.7055
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.69GiB
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:916] 0:   Y
I c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (d
evice: 0, name: Quadro K4100M, pci bus id: 0000:01:00.0)
E c:\tf_jenkins\home\workspace\nightly-win\device\gpu\os\windows\tensorflow\core
\common_runtime\gpu\gpu_device.cc:586] Could not identify NUMA node of /job:loca
lhost/replica:0/task:0/gpu:0, defaulting to 0.  Your kernel may not have been bu
ilt with NUMA support.

Как я могу обойти это? Предложения о том, как это сделать, приветствуются.

@ kay10 Похоже, это сработало. Это сообщение об ошибке в последней строке безобидно и будет удалено в релизе.

Как я вижу в этой ветке, у всех уровень совместимости 3. Для тех у кого совместимость 2, есть ли решение без компиляции исходников?
Я попробовал ночную сборку, которой поделился @gunan , и получил ошибку:
tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64.whl is not a supported wheel on this platform.
это не колесо Linux, и я понял это немного скоро.

Текущая ситуация на Ubuntu 16.04.
I tensorflow/core/common_runtime/gpu/gpu_device.cc:948] Ignoring visible gpu device (device: 0, name: GeForce GTX 590, pci bus id: 0000:03:00.0) with Cuda compute capability 2.0. The minimum required Cuda capability is 3.0. I tensorflow/core/common_runtime/gpu/gpu_device.cc:948] Ignoring visible gpu device (device: 1, name: GeForce GTX 590, pci bus id: 0000:04:00.0) with Cuda compute capability 2.0. The minimum required Cuda capability is 3.0.

@batuhandayioglugil слишком многие из наших ядер графических процессоров полагаются на функциональность, доступную только в версии 3.0 и выше, поэтому, к сожалению, вам понадобится более новый графический процессор. Вы также можете попробовать один из облачных сервисов.

@vrv я пришел к этому моменту, потратив много времени на эти вопросы и купив новый блок питания, так что это дорого мне обошлось. Чтобы избежать дальнейшей траты времени, я хочу задать вопрос: есть как минимум 15 библиотек глубокого обучения, о которых я слышал. Cuda и cuDNN были необходимы для tensorflow. Является ли эта ситуация (вычислительные возможности) особенной для библиотеки cuda? Могу ли я иметь другие шансы? если нет, то я сдаюсь и продолжаю работать с процессором (простите мою невнимательность)

Я думаю, что это будет больше проблем, чем стоит пытаться заставить вашу карту 2.0 работать - возможно, ваш существующий ЦП может быть таким же быстрым или быстрее, чем ваш конкретный графический процессор, и гораздо меньше проблем для начала работы. Я не знаю, что требуют другие библиотеки, к сожалению.

он уже поддерживает вычисления GPU 3.0?

да.

@martinwicke спасибо за быстрый ответ. мне все еще нужно собрать его из исходного кода или просто установить напрямую? Я на Arch Linux и изо всех сил пытаюсь собрать его из исходного кода, выдавая ошибку с компилятором c.

Я думаю, что это должно работать из двоичного кода.

У меня та же проблема: «Игнорирование устройства gpu (устройство: 0, имя: GeForce GT 635M, идентификатор шины pci) с вычислительными возможностями Cuda 2.1. Минимальная требуемая возможность Cuda — 3.0». . @smtabatabaie @martinwicke @alphajatin. помощь !!!!

Вычислительных мощностей 2.1 недостаточно для запуска TensorFlow. Вам понадобится более новая (или более мощная) видеокарта для запуска TensorFlow на графическом процессоре.

URL-адрес ответа на вопрос недействителен. Можете ли вы обновить его?

Для пакетов nightly pip рекомендуемый способ установки — использовать команду pip install tf-nightly .
ci.tensorflow.org устарел.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги