Я начинаю изучать Keras, которому я верю, слой сверху Tensorflow и Theano. Однако у меня только есть доступ к AMD GPU, такие как AMD R9 280X.
Как я могу установить свою среду Python, таким образом, что я могу использовать свои GPU AMD через поддержку Keras/Tensorflow OpenCL?
Я работаю на OSX.
Я пишу бэкенд OpenCL 1.2 для Tensorflow в https://github.com/hughperkins/tensorflow-cl
, Это ветвление tensorflow для OpenCL имеет следующие характеристики:
, Это не единственное ветвление 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
Исходный вопрос на этом сообщении был: Как заставить 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-статьи:
https://github.com/hughperkins/tensorflow-cl
я не могу различить, какой подход лучше в это время, хотя кажется, что этот подход менее активен. Отправляется меньше проблем, и происходит меньше переговоров для решения тех вопросов. В прошлом году было основное нажатие. Дополнительные нажатия ослабели прочь с ноября 2016, хотя Hugh, кажется, продвинул некоторые обновления несколько дней назад с записи этого сообщения. (Обновление: при чтении части документации readme эта версия tensorflowo теперь только полагается на общественную поддержку, поскольку основной разработчик занят жизнью.)
ОБНОВЛЕНИЕ (2017-04-25): у Меня есть некоторые примечания на основе тестирования tensorflow-opencl ниже.
следующее некоторые числа для вычисления 1 эпохи с помощью набора данных CIFAR10 для МОЕЙ УСТАНОВКИ (A10-7850 с iGPU). Ваш пробег будет почти наверняка варьироваться!
Вы видите, что в данном случае производительность хуже. Я приписываю это следующим факторам:
при использовании GPU AMD с большим количеством VRAM и большим количеством потоковых процессоров Вы несомненно получите намного лучшие показатели производительности. Мне было бы интересно читать то, чего люди чисел достигают для знания то, что возможно.
я продолжу поддерживать этот ответ, если/когда обновления будут продвинуты.
3.) На альтернативный путь в настоящее время намекают, который использует инициативу RocM AMD и miOpen (cuDNN эквивалентный) библиотека. Они / быть библиотеками с открытым исходным кодом, которые включают глубокое обучение. Протест состоит в том, что RocM поддерживают, в настоящее время только существует для Linux, и что miOpen еще не был выпущен к дикой местности, но Раджа (AMD голова GPU) сказал в AMA, что с помощью вышеупомянутого, должно быть возможно сделать глубокое обучение на AMD GPU. На самом деле поддержка планируется не только Tensorflow, но также и Cafe2, Кафе, Torch7 и MxNet.
Можно использовать 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
Это - старый вопрос, но так как я провел последние несколько недель, пытаясь понять это самостоятельно:
Теперь, наконец, после 3-4 недель попытки выяснить OpenCL, и т.д., я нашел, что это учебное руководство помогло Вам начать быстро. Это - пошаговое для подъема hipCaffe и выполнения. В отличие от Nvidia, хотя, удостоверьтесь, чтобы у Вас было поддерживаемое оборудование!!!! https://rocm.github.io/hardware.html . Думайте, что можно получить его работающий без их поддерживаемого оборудования?Удачи. Вас предупредили. После того как у Вас есть ROCM и работающий (И ВЫПОЛНИТЕ ВЕРИФИКАЦИИ), вот hipCaffe учебное руководство - при подъеме ROCM, Вы будете делать валидацию MNIST в течение 10 минут - сладкий! https://rocm.github.io/ROCmHipCaffeQuickstart.html
Theano действительно имеет поддержка OpenCL, но это находится все еще на его ранних стадиях. Сам Theano не интересуется OpenCL и полагается общественная поддержка .
Большинство из операций уже реализовано, и это - главным образом вопрос настройки и оптимизации данных операций.
Для использования бэкенда OpenCL Вы имеете к сборка libgpuarray
сами.
От личного опыта я могу сказать Вам, что Вы получите производительность ЦП, если Вы будете удачливы. Выделение памяти, кажется, очень наивно реализовано (поэтому, вычисление будет медленным), и откажет, когда оно исчерпывает память. Но я поощряю Вас пытаться, возможно, даже оптимизировать код или ошибки сообщающего справки.
Если у Вас есть доступ к другому 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 реализация работает. Это - долгий обветренный процесс, но час или три (в зависимости от аппаратных средств) следование правильно написанным инструкциям не слишком много для потери для обнаружения.
Tensorflow 1.3 поддерживался на стеке AMD ROCm:
предварительно созданное изображение докера А было также отправлено публично: