Pull to refresh

Comments 39

«Видеокарты AMD всё ещё ощутимо отстают в производительности от собратьев из Nvidia, однако при этом и стоят дешевле.»

— а можно сравнение с ценами? цена единицы производительности? я не удивлюсь если окажется что более дешевые карты дают куда лучше коэффициент. Занимаясь рендером я не раз видел что цена просчёта ниже на домашних картах нежели на титанах. Всё дело в том что цена видеокарт растет быстрее производительности. Проблема лишь в том если хочешь собрать ферму — там получается что одну и ту же производительности получаешь либо в 1м серверном шкафу либо уже в 8ми на более медленных картах. Но вот для домашних пользователей с одним компьютером и одной картой это может быть актуально — сразу поймешь что потратив дополнительно X денег получишь Y% прибавки скорости

При учёте, насколько сейчас отличаются цены от рекомендованных, скачки и разницу между странами даже СНГ — смысла мало, через месяц это станет неактуально

Можно посчитать и в рекомендованных + 20% налога и в текущих, например.
UFO just landed and posted this here
Зато спешит дропнуть поддержку существующих чипов

«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)
Вот и мне интересно как автор сделал это… Без отката версий на более старую. Просто статья написана позавчера, А поддержка gfx803 (это чип на котором сделана rx580) закончилась на 4й версии ROCm полностью. мне даже танцы с бубном включающие пересобирание из исходников не помогли, в итоге я устал и откатился на ранние версии ROCm. Как так?

Сам процесс установки происходил несколько дней назад. Версию на более старую не откатывал, ставил из репозитория. В понедельник вернусь на работу и посмотрю версии пакетов

хорошо, буду ждать. а то если честно неделю уже на это убил. Кстати откат версии тоже работает нестабильно кэш постоянно переполняется… Вот ошибка которую выдает TF при попытки создать тензор /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

ROCm, насколько я знаю, официально поддерживает RX580 (Polaris). Я как-то пытался запустить на RX5700XT (Navi), где ROCm официально не поддерживается, но, как говорили на гитзхабе, в терории, это возможно. Не осилил.

Давно ждал пока выйдет такая статья! Руки никак не доходили поиграться самому, да и брать AMD не хотелось "просто так".


Да, раз уж затронули эту тему, по-хорошему в будущем в сравнении неплохо бы привести:


  • Хотя бы референcные цены (можно и какую-то цену среднюю с авито) и характеристики карт (и может архитектуру / поколение) на FP32 хотя бы;


  • Пара разных сеток (CNN, RNN, Transformer) и какая-то самописная экзотика;


  • Хотя бы поресерчить поддержку разных модулей и PyTorch;



А то конечно непонятно, что типовые CV сетки чет заведутся, но можно ли реально работать и планировать пока неясно.

Спасибо за комментарий! В будущем попробую провести более подробный анализ. Пока могу сказать, что UNet спокойно работает. С референсными ценами сложно будет, т.к. сейчас они постоянно скачут.

Ну юнет это как обычная сетка, только две штуки
Upsampling слои и transposed conv поддерживаются уже давно везде
Это наверное показатель что поддержка есть хотя бы не только 2D конвов

А меня вот такой вопрос интересует а не дешевле платный гугл колаб за 10$ в месяц?
На самом деле не все так однозначно. Просто добавлю свое мнение на эту тему.

Начнем с того что 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, все остальное это танцы с бубном.
Если где-то ошибся — дайте знать.
Ну я бы не сказал прям большая проблема ML на Apple. На Apple есть свой фреймворк от того же Apple — CoreML. Ну и есть преобразователи весов и моделей из PyTorch и прочего в модели CoreML. Так что на тему ML у любителей продукции Apple — «cвоя атмосфера» =)

А вы пробовали учить модели на CoreML?)

Все равно шляпа получается. CoreML подразумевает, что вы работаете с swift/objective-c окружением, а весь, скажем, популярный и актуальный софт, это в основном python библиотеки. В итоге надо учить swift, xcode и так далее и/или конвертировать модели. А как получить исходную модель tensorflow, если Nvidia Cuda не работает с Mac? В итоге возвращаемся к исходной проблеме — страдаем и тренируем на CPU.

Под питон кстати есть порт coreML. Там я бы сказал проблема в том что Эппл уже подумал за нас на счёт архитектур нейросетей. А так под Свифт есть куча приблуд типа скачивание с шифрование модели :). Я вообще нынче за Гугл колаб с его питоном ;)

Согласен с вашим комментарием. Информацию про устаревание PlaidML добавлю в пост.

ROCm действительно довольно капризен к окружению и требует больше шагов для настройки, чем окружение с CUDA. Однако это может того стоить — вся настройка вкупе с установкой Ubuntu с нуля отняла у меня не больше 3-4 часов.
А что там с DirectML от Майкрософта? Вроде бы же и поддержка AMD есть, и к Тензорфлоу его прикрутили?

Спасибо за наводку! Думаю, эта библиотека тоже заслуживает внимания. Правда, она до сих пор сидит на ветке Tensorflow 1.x

Я где то полгода обучал тензор флоу модели на 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
Поскольку от разработчиков никаких комментариев нет, я не знаю в чем тут дело. Наверное все же какая то особенная конфигурация железа. Не может же это у всех не работать? Простейшие тесты не проходят
issue на самом деле не я создавал — я настолько детально наверное не смог бы это все описать. Я нашел его поиском, когда получил несоответствие обучения и валидации на своей сетке. Но получается, что ошибка воспроизводится у многих, и текущее состояние rocm нерабочее уже 4 месяца.
Кажется, последняя рабочая для нашего чипа версия — 3.5.1. Но и у неё есть свои проблемы:
github.com/RadeonOpenCompute/ROCm/issues/1309
Пишут, что пофиксили в 3.10. Но из-за другой проблемы топикстартер не смог её поставить. Попробую я :)

Сейчас попробую даунгрейнднуться на 3.10, а если не получится то на 3.5.1:
github.com/Grench6/RX580-rocM-tensorflow-ubuntu20.4-guide
Там как то не только и не столько дело в RocM
У меня нормально работал Tensorflow 2.1 (только медленно)
hub.docker.com/r/rocm/tensorflow/tags?page=1&ordering=last_updated&name=2.1
Я правда докеры тестировал, переставлять на железо не пробовал

(Последний который я тестировал был кажется на основе 3.7, сейчас уже 4.0 вышел, но это уже мимо меня прошло)

В любом случае интересно, получится ли у вас запустить tf2.4
В итоге даунгрейднулся сразу на 3.5.1 с tf 2.2. C tf 2.4 ругается на отсутствие libamdhip64.so. Возможно, пофиксить возможно, но дальше копать уже не хочется :)
На tf 2.2 Всё работает без ошибок, протестировал на бенчмарке ResNet и коде из Issue. Вот туториал:
github.com/boriswinner/RX580-rocM-tensorflow-ubuntu20.4-guide

Rx 6800 xt протестируйте. У неё 16 гб памяти, и вообще хотелось бы чтобы эта видеокарта была полезной для чего то кроме игр и что еще хуже, майнинга. Новое поколение которое вышло как тебя ведёт в машинном обучении?

А там есть поддержка ROCm? У предыдущиего поколения нет.

Sign up to leave a comment.

Articles