Комментарии 39
— а можно сравнение с ценами? цена единицы производительности? я не удивлюсь если окажется что более дешевые карты дают куда лучше коэффициент. Занимаясь рендером я не раз видел что цена просчёта ниже на домашних картах нежели на титанах. Всё дело в том что цена видеокарт растет быстрее производительности. Проблема лишь в том если хочешь собрать ферму — там получается что одну и ту же производительности получаешь либо в 1м серверном шкафу либо уже в 8ми на более медленных картах. Но вот для домашних пользователей с одним компьютером и одной картой это может быть актуально — сразу поймешь что потратив дополнительно X денег получишь Y% прибавки скорости
«gfx8 support is officially dropped from now.»
github.com/RadeonOpenCompute/ROCm/issues/1353#issuecomment-753772733
«R9 390X is no more officially ROCm supported device.»
github.com/RadeonOpenCompute/ROCm/issues/484#issuecomment-755272927
www.x.org/wiki/RadeonFeature
GCN2/GFX7 BONAIRE, KABINI, MULLINS, KAVERI, HAWAII
GCN3,4/GFX8 TONGA, ICELAND/TOPAZ, CARRIZO, FIJI, STONEY, POLARIS10, POLARIS11, POLARIS12, VEGAM
Т.е. включает и упомянутую тут RX580 (POLARIS)
Сам процесс установки происходил несколько дней назад. Версию на более старую не откатывал, ставил из репозитория. В понедельник вернусь на работу и посмотрю версии пакетов
/src/external/hip-on-vdi/rocclr/hip_code_object.cpp:120: guarantee(false && "hipErrorNoBinaryForGpu: Coudn't find binary for current devices!")
Aborted (core dumped)
. И у меня еще вопрос про версию ядра линукса. Чтобы установить ROCm-dkms нужно ядро 5.4 по крайней мере так написано в всё там же. github.com/RadeonOpenCompute/ROCm/
как вы его установили на 5.6? Вы не подумайте что я придираюсь, просто практически все шаги которые вы описали у меня не сработали, и поверьте я пробовал их в разных вариациях за эту неделю… и это большая боль для меня…
5.6.0-050600-generic
Вывод rocminfo:
pastebin.com/XMPF72cM
~$ dkms status
amdgpu, 4.0-23, 5.6.0-050600-generic, x86_64: installed
~$ apt show rocm-libs -a
Package: rocm-libs
Version: 4.0.0.40000-23
~$ pip3 show tensorflow-rocm
Name: tensorflow-rocm
Version: 2.4.0
Видеокарта:
Radeon RX 580 Series (POLARIS10, DRM 3.40.0)
Также запустил примитивную сетку для распознавания MNIST отсюда: github.com/keras-team/keras-io/blob/master/examples/vision/mnist_convnet.py
Вот лог обучения: pastebin.com/GRQ5dRwZ
Есть проблемы с поведением predict
ROCm, насколько я знаю, официально поддерживает RX580 (Polaris). Я как-то пытался запустить на RX5700XT (Navi), где ROCm официально не поддерживается, но, как говорили на гитзхабе, в терории, это возможно. Не осилил.
Давно ждал пока выйдет такая статья! Руки никак не доходили поиграться самому, да и брать AMD не хотелось "просто так".
Да, раз уж затронули эту тему, по-хорошему в будущем в сравнении неплохо бы привести:
Хотя бы референcные цены (можно и какую-то цену среднюю с авито) и характеристики карт (и может архитектуру / поколение) на FP32 хотя бы;
Пара разных сеток (CNN, RNN, Transformer) и какая-то самописная экзотика;
Хотя бы поресерчить поддержку разных модулей и PyTorch;
А то конечно непонятно, что типовые CV сетки чет заведутся, но можно ли реально работать и планировать пока неясно.
Начнем с того что RX580 это даже близко не аналог 1080. Думаю на сегодняшний день топовые модели AMD и NVDIA приблизительно равны по производительности. Вопрос на самом деле в другом. А толку даже от самых мощных видеокарт, если серьезные вычисления и большие датасеты доступны только гигантским и богатым корпорациям. Все остальное лишь «игрушки», либо только для исследований.
А теперь про сам десктопный ML.
Если у вас видеокарта NVDIA — вы автоматом не сможете работать на экосистеме Apple из-за конфликта Apple и Nvidia. Самые популярные фреймворки Tensorflow и PyTorch работают (с ускорением) только c Nvidia CUDA.
Далее Keras. Keras задумывался как высокоуровневый интерфейс. Соответственно остальные бекенды, как PlaidML могли обеспечить работу с другими видео ускорителями без закрытой технологии CUDA. И так было до тех пор, пока авторы не заявили, что Keras будет развиваться только в рамках Tensorflow. Все — «накрылась медным тазом ваша качалка». И получается что PlaidML может работать только с Keras, a не с tf.Keras — API разбежалось. Cоответственно смысл юзать PlaidML, когда он не совместим с последней версией Keras API в Tensorflow. Пацаны из PlaidML (они часть Intel) были вынуждены поменять roadmap и идти в другом направлении.
Как писал автор — есть и другой путь. Это использовать rocm или «cuda для нищих». Дело в том, что весь ML, по сути, это работа грубо говоря с массивчиками, а именно с матрицами и тензорами (векторами чисел). Оказалось, что видеокарты работают с ними очень быстро уже давно (спасибо видеоиграм). Но есть вопрос — а как программисту сообщить видеокарте, что вот эта структура в его любимом языке программирования это тензор или матрица, чтобы она посчитала нам наши замечательные веса в модельке? Оказалось что у каждого производителя видео чипов есть для этого свой формат/язык. Соответсвенно (очень грубо говоря) rocm это попытка транслировать код написанный для CUDA в код, который понимает AMD видеочипы. Но c ROCm не все так просто — он работает только для некоторых линукс ядер и редакций ОС (Ubuntu, Fedora, CentOS).
Вывод — ML на десктоп это боль. По сути доступен только Linux и Nvidia, все остальное это танцы с бубном.
Если где-то ошибся — дайте знать.
А вы пробовали учить модели на CoreML?)
ROCm действительно довольно капризен к окружению и требует больше шагов для настройки, чем окружение с CUDA. Однако это может того стоить — вся настройка вкупе с установкой Ubuntu с нуля отняла у меня не больше 3-4 часов.
Я где то полгода обучал тензор флоу модели на Radeon VII. И был в общем-то доволен, карта с большим количеством памяти стоила сильно дешевле чем аналог от Nvidia. Но все для меня сломалась после выхода tensorflow 2.0. Я долго на него не переходил, но в какой то момент все же пришлось, по моему это уже 2.2 было. В общем оказалось что в 2.2 для rocm какой-то баг, обучение идёт нормально, а валидация глючит, тренировать модели практически невозможно. Это наверное где то в сентябре было. Но при этом 2.2 на VII работает раза в два быстрее чем на 1080, которая тоже была в наличии. Откат на 2.1 проблему решал, но скорость падала чуть ли не на порядок, смысла в такой тренировке не было. По состоянию на декабрь, баг так и не был поправлен, при этом выходили очередные версии rocm и под них портировались очередные версии tensorflow, но они все так же не работали. В общем с одной стороны карта просто зверь за свои деньги, с другой стороны как с этим работать я не понимаю. Я правда впервые с убунтой столкнулся, может быть кто-то прошаренный и нашел бы выход из положения. Но мне непонятно как может столько времени висеть баг, который убивает всю полезность рокм. Зачем что то писать дальше, если текущее не работает?
А в интернете есть какая-то информация насчет этого бага, может быть, issue на github?
github.com/ROCmSoftwarePlatform/tensorflow-upstream/issues/1105
Поскольку от разработчиков никаких комментариев нет, я не знаю в чем тут дело. Наверное все же какая то особенная конфигурация железа. Не может же это у всех не работать? Простейшие тесты не проходят
github.com/RadeonOpenCompute/ROCm/issues/1309
Пишут, что пофиксили в 3.10. Но из-за другой проблемы топикстартер не смог её поставить. Попробую я :)
Сейчас попробую даунгрейнднуться на 3.10, а если не получится то на 3.5.1:
github.com/Grench6/RX580-rocM-tensorflow-ubuntu20.4-guide
У меня нормально работал Tensorflow 2.1 (только медленно)
hub.docker.com/r/rocm/tensorflow/tags?page=1&ordering=last_updated&name=2.1
Я правда докеры тестировал, переставлять на железо не пробовал
(Последний который я тестировал был кажется на основе 3.7, сейчас уже 4.0 вышел, но это уже мимо меня прошло)
В любом случае интересно, получится ли у вас запустить tf2.4
На tf 2.2 Всё работает без ошибок, протестировал на бенчмарке ResNet и коде из Issue. Вот туториал:
github.com/boriswinner/RX580-rocM-tensorflow-ubuntu20.4-guide
Rx 6800 xt протестируйте. У неё 16 гб памяти, и вообще хотелось бы чтобы эта видеокарта была полезной для чего то кроме игр и что еще хуже, майнинга. Новое поколение которое вышло как тебя ведёт в машинном обучении?
А там есть поддержка ROCm? У предыдущиего поколения нет.
Radeon RX 6800 Series Has Excellent ROCm-Based OpenCL Performance On Linux
Но при этом на картинке не Rocm a PlaidML
sep5.readthedocs.io/en/latest/Installation_Guide/Installation-Guide.html#using-debian-based-rocm-with-upstream-kernel-drivers
Есть ли жизнь без Nvidia? Запускаем TensorFlow на Radeon RX 580