[Python, Машинное обучение, Видеокарты, TensorFlow] Есть ли жизнь без Nvidia? Запускаем TensorFlow на Radeon RX 580
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
ПредысторияНа новом рабочем месте меня посадили за ПК, оборудованный процессором Ryzen 2600 и видеокартой Radeon RX 580. Попробовав обучать нейронные сети на процессоре, я понял, что это не дело: уж слишком медленным был процесс. После недолгих поисков я узнал, что существует как минимум 2 способа запуска современных библиотек машинного обучения на видеокартах Radeon: PlaidML и ROCm. Я попробовал оба и хочу поделиться результатами.PlaidML: кроссплатформенность во главе углаTensorFlow служит бэкэндом для Keras, интерпретируя его синтаксис и преобразуя его в инструкции, которые могут выполняться на процессоре или GPU. К сожалению, он поддерживает только видеокарты с технологией Nvidia CUDA.PlaidML - альтернативный бэкэнд для Keras с поддержкой OpenCL. Его можно использовать для обучения моделей Keras встроенной графике процессора, дискретном или даже внешнем графическом процессоре AMD. Он работает на Windows, Linux и Mac.Установка PlaidML очень проста. Нужно поставить Python-пакет и выбрать устройство в пошаговом конфигураторе:
pip install plaidml-keras && plaidml-setup
В коде нужно прописать использование PlaidML как бэкэнда:
os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"
После этого все вычисления будут выполняться на видеокарте. Запустим бенчмарк:
plaidbench keras mobilenet
Сравним результаты нашего видеоадаптера с некоторыми другими. RX 580 и Ryzen 2600 я тестировал локально, результаты остальных устройств взяты от других пользователей:УстройствоВремя компиляцииВремя исполненияRadeon RX 5806.14s6.51sRadeon Vega Frontier Edition4.56s5.50sGeForce GTX 1080 TI2.52s4.83sIntel HD Graphics 550036.64s755.23sAMD Ryzen 2600 (CPU)5.04s254.70sВидеоадаптеры AMD показывают себя ощутимо медленнее видеокарт Nvidia. Впрочем, разрыв между видеокартами на порядок меньше пропасти между видеокартами и процессорами. Исключением выступает Intel HD Graphics: PlaidML совершенно не оптимизирован для видеокарт Intel и их использование не имеет особого смысла.ROCm: Старший братСо своей платформой Radeon Open Compute Platform (ROCm), AMD обеспечивает интерфейс для выполнения кода на GPU и процессорах. ROCm конкурирует с платформой NVIDIA CUDA. Он работает только на UNIX-системах.На использовании ROCm я в итоге и остановился. По моим ощущениям, он работает в ~2 раза быстрее, чем PlaidML, и позволяет загружать в память более сложные модели, когда PlaidML выбрасывает Out Of Memory.Я установил свежую Ubuntu 20.04 LTS. Для установки и настройки ROCm я предпринял следующие шаги: (они немного отличаются от официальной документации, т.к. она успела несколько устареть)
- Обновил пакеты:
sudo apt update && sudo apt dist-upgrade && sudo apt install libnuma-dev && sudo reboot
- Откатил ядро с версии 5.8 до 5.6. Для этого я зашел на http://kernel.ubuntu.com/~kernel-ppa/mainline/ и скачал файлы:
linux-headers-VERSION-NUMBER_all.deb
linux-headers-VERSION-NUMBER_amd64.deb
linux-image-VERSION-NUMBER_amd64.deb
linux-modules-VERSION-NUMBER_amd64.deb
- Далее скопировал их в отдельную папку, в которой выполнил:
sudo dpkg -i *.deb
- Перезагрузил ПК с ядром 5.6, выбрав его в GRUB. После этого удалил ядро 5.8:
sudo apt-get purge *5.8.0*
- Перезагрузил ПК.
- Добавил репозиторий:
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
- Установил ROCm:
sudo apt update && sudo apt install rocm-dkms && sudo reboot
- Настроил права:
sudo usermod -a -G video $LOGNAME
sudo usermod -a -G render $LOGNAME
- Для проверки успешности установки запустил эти команды. Если установка прошла успешно, обе из них выведут название GPU:
/opt/rocm/bin/rocminfo
/opt/rocm/opencl/bin/clinfo
- Добавил ROCm в PATH:
echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/rocprofiler/bin:/opt/rocm/opencl/bin' | sudo tee -a /etc/profile.d/rocm.sh
- После этого установил пакеты для машинного обучения:
sudo apt install rocm-libs miopen-hip rccl
- Установил Pip и TensorFlow:
sudo apt install python3-pip
pip3 install --user tensorflow-rocm
Готово! После этого TensorFlow автоматически стал использовать мой GPU:
Давайте посмотрим на бенчмарки:
python3 ./tf_cnn_benchmarks.py --num_gpus=1 --batch_size=64 --model=resnet50
RX 580 я тестировал локально, результаты остальных устройств взяты от других пользователей:УстройствоИзображений/сек (ResNet 50)AMD Radeon VII284AMD Radeon RX Vega 56131AMD Radeon RX 58092Nvidia GeForce 2080 Ti293Nvidia GeForce GTX 1070126Nvidia GeForce RTX 3080 10GB396ВыводыВ 2021 году в сфере машинного обучения становится всё менее и менее важно, какая у вас видеокарта. Видеокарты AMD всё ещё ощутимо отстают в производительности от собратьев из Nvidia, однако при этом и стоят дешевле. Тем не менее, поддержка видеокарт Radeon далека от идеальной, и необходимая настройка для них сложнее и дольше. Если у вас уже есть видеокарта от AMD, то возможно для целей разработки вам не понадобится менять её на видеокарту Nvidia. Оптимальным выбором для машинного обучения на видеокартах Radeon я считаю фреймворк ROCm. Он обеспечивает приличную производительность, и позволяет запустить TensorFlow 2.2.0 и Keras.
===========
Источник:
habr.com
===========
Похожие новости:
- [Open source, Машинное обучение, Искусственный интеллект] Авторы проекта GPT-Neo пытаются создать аналог GPT-3 с открытым исходным кодом
- [Python, Машинное обучение, Искусственный интеллект] ML в реальном мире: Складская система распознавания деталей
- [Python, Django] Настройка аутентификации JWT в новом проекте Django
- [Виртуализация, Серверное администрирование, Тестирование игр, Облачные сервисы, Видеокарты] Как я Cyberpunk в облаке запускал: часть 1
- [Программирование, Машинное обучение, История IT] Проекты Центра разработки Intel в России. OpenVINO Toolkit
- [Python, Программирование, Обработка изображений, Управление медиа, Софт] Миллион домашних фотографий: наводим порядок
- [Настройка Linux, Системное администрирование, *nix] Автоматическая очистка корзины Yandex.Disk без участия человека
- [Python, Учебный процесс в IT, Дизайн игр] Стив пишет заклинания на Python. Обучение детей программированию в Minecraft
- [Python, API] Скрапинг Avito без headless-браузера
- [Сетевые технологии, Машинное обучение, Сетевое оборудование] Главные технологии корпоративных ADN-сетей в исполнении Huawei: начало
Теги для поиска: #_python, #_mashinnoe_obuchenie (Машинное обучение), #_videokarty (Видеокарты), #_tensorflow, #_radeon, #_tensorflow, #_rocm, #_plaidml, #_keras, #_amd, #_vega, #_machinelearning, #_linux, #_python, #_mashinnoe_obuchenie (
Машинное обучение
), #_videokarty (
Видеокарты
), #_tensorflow
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 09:18
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
ПредысторияНа новом рабочем месте меня посадили за ПК, оборудованный процессором Ryzen 2600 и видеокартой Radeon RX 580. Попробовав обучать нейронные сети на процессоре, я понял, что это не дело: уж слишком медленным был процесс. После недолгих поисков я узнал, что существует как минимум 2 способа запуска современных библиотек машинного обучения на видеокартах Radeon: PlaidML и ROCm. Я попробовал оба и хочу поделиться результатами.PlaidML: кроссплатформенность во главе углаTensorFlow служит бэкэндом для Keras, интерпретируя его синтаксис и преобразуя его в инструкции, которые могут выполняться на процессоре или GPU. К сожалению, он поддерживает только видеокарты с технологией Nvidia CUDA.PlaidML - альтернативный бэкэнд для Keras с поддержкой OpenCL. Его можно использовать для обучения моделей Keras встроенной графике процессора, дискретном или даже внешнем графическом процессоре AMD. Он работает на Windows, Linux и Mac.Установка PlaidML очень проста. Нужно поставить Python-пакет и выбрать устройство в пошаговом конфигураторе: pip install plaidml-keras && plaidml-setup
os.environ["KERAS_BACKEND"] = "plaidml.keras.backend"
plaidbench keras mobilenet
Давайте посмотрим на бенчмарки: python3 ./tf_cnn_benchmarks.py --num_gpus=1 --batch_size=64 --model=resnet50
=========== Источник: habr.com =========== Похожие новости:
Машинное обучение ), #_videokarty ( Видеокарты ), #_tensorflow |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 09:18
Часовой пояс: UTC + 5