На новом рабочем месте меня посадили за ПК, оборудованный процессором Ryzen 2600 и видеокартой Radeon RX 580. Попробовав обучать нейронные сети на процессоре, я понял, что это не дело: уж слишком медленным был процесс. После недолгих поисков я узнал, что существует как минимум 2 способа запуска современных библиотек машинного обучения на видеокартах Radeon: PlaidML и ROCm. Я попробовал оба и хочу поделиться результатами. TensorFlow служит бэкэндом для Keras, интерпретируя его синтаксис и преобразуя его в инструкции, которые могут выполняться на процессоре или GPU. К сожалению, он поддерживает только видеокарты с технологией Nvidia CUDA. PlaidML - альтернативный бэкэнд для Keras с поддержкой OpenCL. Его можно использовать для обучения моделей Keras на встроенной графике процессора, дискретном или даже внешнем графическом процессоре AMD. Он работает на Windows, Linux и Mac. UPD: В своём комментарии пользователь MikeLP указал, что: Keras задумывался как высокоуровневый интерфейс. Соответственно  остальные бекенды, как PlaidML могли обеспечить работу с другими видеоускорителями без закрытой технологии CUDA. И так было до тех пор, пока  авторы не заявили,  что Keras будет развиваться только в рамках Tensorflow. Все —  «накрылась медным тазом ваша качалка». И получается что PlaidML может  работать только с Keras, a не с tf.Keras — API разбежалось.  Cоответственно смысл юзать PlaidML, когда он не совместим с последней  версией Keras API в Tensorflow. Пацаны из PlaidML (они часть Intel) были  вынуждены поменять roadmap и идти в другом направлении. По моему мнению, PlaidML ещё актуален, т.к. включение Keras в Tensorflow произошло недавно и API не успел существено поменяться. Однако дальшейшие перспективы Keras+PlaidML выглядят туманно. Установка PlaidML очень проста. Нужно поставить Python-пакет и выбрать устройство в пошаговом конфигураторе: В коде нужно прописать использование PlaidML как бэкэнда: После этого все вычисления будут выполняться на видеокарте. Запустим бенчмарк: Сравним результаты нашего видеоадаптера с некоторыми другими. RX 580 и Ryzen 2600 я тестировал локально, результаты остальных устройств взяты от других пользователей: Устройство Время компиляции Время исполнения Radeon RX 580 6.14s 6.51s Radeon Vega Frontier Edition 4.56s 5.50s GeForce GTX 1080 TI 2.52s 4.83s Intel HD Graphics 5500 36.64s 755.23s AMD Ryzen 2600 (CPU) 5.04s 254.70s Видеоадаптеры AMD показывают себя ощутимо медленнее видеокарт Nvidia. Впрочем, разрыв между видеокартами на порядок меньше пропасти между видеокартами и процессорами. Исключением выступает Intel HD Graphics: PlaidML совершенно не оптимизирован для видеокарт Intel и их использование не имеет особого смысла. Со своей платформой Radeon Open Compute Platform (ROCm), AMD  обеспечивает интерфейс для выполнения кода на GPU и процессорах. ROCm конкурирует с платформой NVIDIA CUDA. Он работает только на UNIX-системах. На использовании ROCm я в итоге и остановился. По моим ощущениям, он работает в ~2 раза быстрее, чем PlaidML, и позволяет загружать в память более сложные модели, когда PlaidML выбрасывает Out Of Memory. Я установил свежую Ubuntu 20.04 LTS. Для установки и настройки ROCm я предпринял следующие шаги: (они немного отличаются от официальной документации, т.к. она успела несколько устареть) Обновил пакеты: Откатил ядро с версии 5.8 до 5.6. Для этого я зашел на http://kernel.ubuntu.com/~kernel-ppa/mainline/ и скачал файлы:   Далее скопировал их в отдельную папку, в которой выполнил: Перезагрузил ПК с ядром 5.6, выбрав его в GRUB. После этого удалил ядро 5.8: Перезагрузил ПК. Добавил репозиторий: Установил ROCm: Настроил права: Для проверки успешности установки запустил эти команды. Если установка прошла успешно, обе из них выведут название GPU: Добавил ROCm в PATH: После этого установил пакеты для машинного обучения: Установил Pip и TensorFlow: Готово! После этого TensorFlow автоматически стал использовать мой GPU: Давайте посмотрим на бенчмарки: RX 580 я тестировал локально, результаты остальных устройств взяты от других пользователей: Устройство Изображений/сек (ResNet 50) AMD Radeon VII 284 AMD Radeon RX Vega 56 131 AMD Radeon RX 580 92 Nvidia GeForce 2080 Ti 293 Nvidia GeForce GTX 1070 126 Nvidia GeForce RTX 3080 10GB 396 В 2021 году в сфере машинного обучения становится всё менее и менее важно, какая у вас видеокарта. Видеокарты AMD всё ещё ощутимо отстают в производительности от собратьев из Nvidia, однако при этом и стоят дешевле. Тем не менее, поддержка видеокарт Radeon далека от идеальной, и необходимая настройка для них сложнее и дольше.  Если у вас уже есть видеокарта от AMD, то возможно для целей разработки вам не понадобится менять её на видеокарту Nvidia. Оптимальным выбором для машинного обучения на видеокартах Radeon я считаю фреймворк ROCm. Он обеспечивает приличную производительность, и позволяет запустить TensorFlow 2.2.0 и Keras.  UPD: В комментариях выяснили, что последняя версия связки ROCm+TensorFlow не всегда корректно работает на чипе Polaris 10 (Radeon RX 580). Написал туториал, как поставить ROCm 3.5.1 + TF 2.2: https://github.com/boriswinner/RX580-rocM-tensorflow-ubuntu20.4-guide ML Engineer Student