Использование Keras & Tensorflow с AMD GPU

Я начинаю изучать Keras, которому я верю, слой сверху Tensorflow и Theano. Однако у меня только есть доступ к AMD GPU, такие как AMD R9 280X.

Как я могу установить свою среду Python, таким образом, что я могу использовать свои GPU AMD через поддержку Keras/Tensorflow OpenCL?

Я работаю на OSX.

62
задан 18 June 2016 в 07:09

7 ответов

Я пишу бэкенд OpenCL 1.2 для Tensorflow в https://github.com/hughperkins/tensorflow-cl

, Это ветвление tensorflow для OpenCL имеет следующие характеристики:

  • это предназначается для любых/всех устройств OpenCL 1.2. Этому не нужен OpenCL 2.0, не нуждается в SPIR-V или SPIR. Doesnt нужна Общая Виртуальная память. И так далее...
  • это основано на базовой библиотеке, названной 'cuda на статье', https://, github.com/hughperkins/cuda-on-cl
    • cuda-on-cl предназначается мочь взять любой NVIDIAВ® CUDAв „ў код Соре и скомпилировать его для устройств OpenCL 1.2. Это - очень общая цель и очень общий компилятор
  • на данный момент, следующие технические возможности реализованы:
  • , это разрабатывается на Ubuntu 16.04 (использующий Intel HD5500 и NVIDIA GPU) и Горная цепь Mac (использующий Intel HD 530 и Radeon Pro 450)

, Это не единственное ветвление OpenCL доступного Tensorflow. Существует также ветвление, разрабатываемое Codeplay https://www.codeplay.com, с помощью Computecpp, https://www.codeplay.com/products/computesuite/computecpp Их ветвление имеет более сильные требования, чем мое собственное, насколько я знаю, с точки зрения которых определенных устройств GPU это продолжает работать. Необходимо было бы проверить Примечания Поддержки платформ (у основания hte computecpp страница), чтобы определить, поддерживается ли устройство. codeplay ветвление является на самом деле официальным ветвлением Google, которое является здесь: https://github.com/benoitsteiner/tensorflow-opencl

66
ответ дан 31 October 2019 в 13:52

Исходный вопрос на этом сообщении был: Как заставить Keras и Tensorflow работать с GPU AMD.

ответ на этот вопрос как сопровождается:

1.) Keras будет работать, если можно заставить Tensorflow работать правильно (дополнительно в virtual/conda среде).

2.), Чтобы заставить Tensorflow работать над GPU AMD, как другие заявили, один способ, которым это могло работать, должен скомпилировать Tensorflow для использования OpenCl. Сделать так чтение ссылка ниже. Но для краткости я буду суммировать необходимые шаги здесь:

  • Вам будет нужен AMDS собственные драйверы. Они в настоящее время только доступны на Ubuntu 14.04 (версия, прежде чем Ubuntu решила изменить способ, которым UI представляется). Поддержка Ubuntu 16.04 при записи этого сообщения, ограниченного несколькими GPU через AMDProDrivers. Читатели, которые хотят сделать глубокое обучение на AMD GPU, должны знать об этом!

  • Компиляция Tensorflow с поддержкой OpenCl также требует, чтобы Вы получили и установили следующие предпосылки: заголовки OpenCl, ComputeCpp.

  • После того, как предпосылки выполняются, настраивают Вашу сборку. Обратите внимание, что существует 3 опции для компиляции Tensorflow: (стабильный) Tensorflow Станд., Tensorflow-opencl Benoits Steiner Tensorflow-opencl, и Luke Iwanski (развития) (очень экспериментальный), который можно вытянуть от GitHub. Также обратите внимание, что, если Вы решаете создать из какой-либо из opencl версий, вопрос использовать opencl будет отсутствовать, потому что предполагается, что Вы используете его. С другой стороны это означает, что, если Вы настраиваете из стандарта tensorflow, необходимо будет выбрать "Да", когда настраивать сценарий попросит, чтобы Вы использовали opencl и "НЕТ" для CUDA.

  • Затем запущенные тесты как так:

    тест внешней панели $ - config=sycl-k - test_timeout 1600-//tensorflow/...-//tensorflow/contrib/...-//tensorflow/java/...-//tensorflow/compiler/...

Обновление: Выполнение этого на моей установке берет чрезвычайно долго на моей установке. Часть, которая занимает много времени, является всем тестовым выполнением. Я не уверен, что это означает, но много моих тестов является timeing в 1 600 секунд. Продолжительность может, вероятно, быть сокращена за счет большего, проверяет timeing. С другой стороны, можно просто создать поток тензора без тестов. Во время этой записи запущение тестов уже заняло 2 дня.

Или просто создают пакет зернышка как так:

bazel build --local_resources 2048,.5,1.0 -c opt --config=sycl //tensorflow/tools/pip_package:build_pip_package

на самом деле перечитывает сообщение в блоге в Codeplay: Lukas Iwansky отправил всестороннее учебное сообщение о том, как заставить Tensorflow работать с OpenCl только 30-го марта 2017. Таким образом, это - очень недавнее сообщение. Существуют также некоторые детали, о которых я не записал здесь.

, Как обозначено во многих сообщениях выше, небольшие биты информации распространены всюду по межсетям. То, что сообщение Lukas добавляет с точки зрения значения, - то, что вся информация была соединена в одно место, которое должно установить настройку Tensforflow и немного менее пугающий OpenCl. Я только предоставлю ссылку здесь:

https://www.codeplay.com/portal/03-30-17-setting-up-tensorflow-with-opencl-using-sycl

А немного больше полной пошаговой демонстрации было отправлено здесь:

http://deep-beta.co.uk/setting-up-tensorflow-with-opencl-using-sycl/

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

  • создают символьные ссылки на подпапку
  • и затем на самом деле устанавливают tensorflow с помощью "Python setup.py, разрабатывают" команду.

Примечание альтернативный подход был упомянут выше использования tensorflow-статьи:

https://github.com/hughperkins/tensorflow-cl

я не могу различить, какой подход лучше в это время, хотя кажется, что этот подход менее активен. Отправляется меньше проблем, и происходит меньше переговоров для решения тех вопросов. В прошлом году было основное нажатие. Дополнительные нажатия ослабели прочь с ноября 2016, хотя Hugh, кажется, продвинул некоторые обновления несколько дней назад с записи этого сообщения. (Обновление: при чтении части документации readme эта версия tensorflowo теперь только полагается на общественную поддержку, поскольку основной разработчик занят жизнью.)

ОБНОВЛЕНИЕ (2017-04-25): у Меня есть некоторые примечания на основе тестирования tensorflow-opencl ниже.

  • будущий пользователь этого пакета должен отметить, что использование opencl означает, что весь тяжелый подъем с точки зрения вычислений смещается к GPU. Я упоминаю это, потому что я лично думал, что вычислить рабочая нагрузка будет совместно использована моим ЦП и iGPU. Это означает, что питание Вашего GPU очень важно (а именно, пропускная способность и доступный VRAM).

следующее некоторые числа для вычисления 1 эпохи с помощью набора данных CIFAR10 для МОЕЙ УСТАНОВКИ (A10-7850 с iGPU). Ваш пробег будет почти наверняка варьироваться!

  • Tensorflow (через установку зернышка): ~ 1 700 с/эпох
  • Tensorflow (w/SSE + AVX): ~ 1 100 с/эпох
  • Tensorflow (w/opencl & iGPU): ~ 5 800 с/эпох

Вы видите, что в данном случае производительность хуже. Я приписываю это следующим факторам:

  • iGPU только имеет 1 ГБ. Это приводит к большому копированию назад и вперед между ЦП и GPU. (Opencl 1.2 еще не имеет способности к передаче данных через указатели; вместо этого данные должны быть скопированы назад и вперед.)
  • iGPU только имеет 512 потоковых процессоров (и пропускная способность памяти на 32 Гбит/с), который в этом случае медленнее, чем 4 центральных процессора с помощью SSE4 + системы команд AVX.
  • разработка tensorflow-opencl находится в, он - начальные стадии, и большая оптимизация в SYCL и т.д. еще не была сделана.

при использовании GPU AMD с большим количеством VRAM и большим количеством потоковых процессоров Вы несомненно получите намного лучшие показатели производительности. Мне было бы интересно читать то, чего люди чисел достигают для знания то, что возможно.

я продолжу поддерживать этот ответ, если/когда обновления будут продвинуты.

3.) На альтернативный путь в настоящее время намекают, который использует инициативу RocM AMD и miOpen (cuDNN эквивалентный) библиотека. Они / быть библиотеками с открытым исходным кодом, которые включают глубокое обучение. Протест состоит в том, что RocM поддерживают, в настоящее время только существует для Linux, и что miOpen еще не был выпущен к дикой местности, но Раджа (AMD голова GPU) сказал в AMA, что с помощью вышеупомянутого, должно быть возможно сделать глубокое обучение на AMD GPU. На самом деле поддержка планируется не только Tensorflow, но также и Cafe2, Кафе, Torch7 и MxNet.

34
ответ дан 31 October 2019 в 13:52

Можно использовать AMD GPU через бэкенд PlaidML Keras.

Самый Быстрый : PlaidML часто 10x быстрее (или больше), чем популярные платформы (как TensorFlow ЦП), потому что он поддерживает все GPU, независимый от делают и модель. PlaidML ускоряет глубокое обучение на AMD, Intel, NVIDIA, ARM, и встроил GPU.

Самый Легкий : PlaidML прост установить и поддерживает несколько frontends (Keras и ONNX в настоящее время)

Свободный : PlaidML является абсолютно открытым исходным кодом и не полагается ни на какие библиотеки поставщика с собственными и строгими лицензиями.

Для большинства платформ, начинающих с ускоренным глубоким обучением, так же легко как выполняющий несколько команд (предполагающий, что у Вас есть Python (v2 или v3) установленный):

virtualenv plaidml
source plaidml/bin/activate
pip install plaidml-keras plaidbench

Выбирают, какой акселератор требуется использовать (много компьютеров, особенно ноутбуков, имейте несколько):

plaidml-setup

Затем, сравнительное тестирование попытки MobileNet заключают производительность:

plaidbench keras mobilenet

Или, попробуйте учебный MobileNet:

plaidbench --batch-size 16 keras --train mobilenet

Для использования его с крисом устанавливает

os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"

Для получения дополнительной информации

https://github.com/plaidml/plaidml

https://github.com/rstudio/keras/issues/205#issuecomment-348336284

11
ответ дан 31 October 2019 в 13:52

Это - старый вопрос, но так как я провел последние несколько недель, пытаясь понять это самостоятельно:

  1. поддержка OpenCL Theano бессистемна. Они добавили libgpuarray бэкенд, который, кажется, все еще багги (т.е. процесс работает на GPU, но ответ является неправильным - как 8%-я точность на MNIST для модели DL, которая добирается ~95 + точность % на ЦП или Nvidia CUDA). Также, потому что ~50-80% повышения производительности на стопке Nvidia прибывают из библиотек CUDNN теперь, OpenCL просто покинут в пыли. (СМ. НИЖЕ!) :)
  2. ROCM, кажется, очень прохладен, но документация (и даже ясное объявление того, какой ROCM/каков, он делает), твердо понять. Они прилагают все усилия, но им 4 года + годы позади. Это НЕ НЕ не работает над RX550 (с этой записи). Не тратьте впустую свое время (это - то, куда 1 из недель прошла :)). Сначала, кажется, что ROCM является новым дополнением к набору драйверов (заменяющий AMDGPU-Pro или увеличивающий его), но это - на самом деле модуль ядра и набор библиотек, которые это по существу заменяет AMDGPU-Pro. (Думайте об этом как об эквиваленте драйвера Nvidia-381 + CUDA некоторые библиотеки отчасти). https://rocm.github.io/dl.html (Честно я все еще не проверил производительность или попытался заставить ее работать с более свежими Меза-драйверами все же. Я сделаю это когда-то.
  3. Добавляют MiOpen к ROCM, и это - по существу CUDNN. у Них также есть некоторые довольно четкие руководства для миграции. Но еще лучше.
  4. Они создали "HIP", который является автоволшебным переводчиком от CUDA/CUDNN до MiOpen. Это, кажется, работает вполне прилично, так как они выстроили в линию API непосредственно, чтобы быть переводимыми. Существуют понятия, которые не являются идеальными картами, но в целом это выглядит хорошим.

Теперь, наконец, после 3-4 недель попытки выяснить OpenCL, и т.д., я нашел, что это учебное руководство помогло Вам начать быстро. Это - пошаговое для подъема hipCaffe и выполнения. В отличие от Nvidia, хотя, удостоверьтесь, чтобы у Вас было поддерживаемое оборудование!!!! https://rocm.github.io/hardware.html . Думайте, что можно получить его работающий без их поддерживаемого оборудования?Удачи. Вас предупредили. После того как у Вас есть ROCM и работающий (И ВЫПОЛНИТЕ ВЕРИФИКАЦИИ), вот hipCaffe учебное руководство - при подъеме ROCM, Вы будете делать валидацию MNIST в течение 10 минут - сладкий! https://rocm.github.io/ROCmHipCaffeQuickstart.html

5
ответ дан 31 October 2019 в 13:52

Theano действительно имеет поддержка OpenCL, но это находится все еще на его ранних стадиях. Сам Theano не интересуется OpenCL и полагается общественная поддержка .

Большинство из операций уже реализовано, и это - главным образом вопрос настройки и оптимизации данных операций.

Для использования бэкенда OpenCL Вы имеете к сборка libgpuarray сами.

От личного опыта я могу сказать Вам, что Вы получите производительность ЦП, если Вы будете удачливы. Выделение памяти, кажется, очень наивно реализовано (поэтому, вычисление будет медленным), и откажет, когда оно исчерпывает память. Но я поощряю Вас пытаться, возможно, даже оптимизировать код или ошибки сообщающего справки.

4
ответ дан 31 October 2019 в 13:52

Если у Вас есть доступ к другому gpu's AMD, посмотрите здесь: https://github.com/ROCmSoftwarePlatform/hiptensorflow/tree/hip/rocm_docs

Это должно получить Вас идущий в правильном направлении для tensorflow на платформе ROCm, но сообщение Selly приблизительно https://rocm.github.io/hardware.html является соглашением с этим маршрутом. Та страница не является исчерпывающим списком, я узнал самостоятельно, что Xeon E5 v2 Ivy Bridge хорошо работает с ROCm даже при том, что они перечисляют v3, или более новые, видеокарты однако немного более придирчивы. gfx8 или более новый за несколькими маленькими исключениями, Polaris и возможно другими со временем.

ОБНОВЛЕНИЕ - похоже, что hiptensorflow имеет опцию для поддержки opencl во время, настраивают. Я сказал бы, исследуют ссылку, даже если у Вас нет gfx8 + или Polaris gpu, если opencl реализация работает. Это - долгий обветренный процесс, но час или три (в зависимости от аппаратных средств) следование правильно написанным инструкциям не слишком много для потери для обнаружения.

3
ответ дан 31 October 2019 в 13:52

Tensorflow 1.3 поддерживался на стеке AMD ROCm:

предварительно созданное изображение докера А было также отправлено публично:

2
ответ дан 31 October 2019 в 13:52

Другие вопросы по тегам:

Похожие вопросы: