В индустрии машинного обучения происходит небывалый беспрецедентный бум, и главный двигатель этого праздника технологий, генерирующего сверхприбыли для больших компаний, — графические процессоры (GPU). В битве за долю рынка ИИ-ускорителей можно выделить двух титанов индустрии GPU — NVIDIA и AMD. Несмотря на то, что во всех остальных сферах, кроме ИИ, AMD периодически подаёт надежду на превосходство над NVIDIA, во всём, что касается машинного обучения, NVIDIA обладает почти что абсолютной властью над рынком. Эта компания, благодаря своей дальновидной стратегии, сумела не только завоевать доверие разработчиков, но и фактически создать экосистему, ставшую стандартом де-факто в области глубокого обучения. AMD же, несмотря на свой богатый опыт в производстве высокопроизводительных процессоров, оказалась на периферии этого стремительно растущего рынка. 

NVIDIA против AMD. История противостояния

Фундаментом доминирования NVIDIA можно считать ставку на развитие экосистемы технологии CUDA, начавшееся в 2006 году. CUDA за счёт своей простоты и подробной документации быстро стала золотым стандартом в индустрии когда дело касалось аппаратного ускорения на видеокартах, а NVIDIA методично выстраивала партнёрские отношения с ключевыми разработчиками фреймворков для глубокого обучения. Либо, как в случае с PyTorch и TensorFlow, сами разработчики проектов выстраивали свои проекты вокруг поддержки вычислений на CUDA-ядрах. 

В это же время AMD сосредоточила усилия на игровом и потребительском сегментах, упустив критически важный момент для вхождения на рынок ИИ-ускорителей. Попытка наверстать упущенное с помощью платформы ROCm (Radeon Open Compute) оказалась запоздалой и недостаточно эффективной. Не говоря о том, что и аппаратная поддержка аналогов тензорных и RT-ядер появилась в архитектуре видеокарт AMD тоже со значительной задержкой. В результате продукты компании до сих пор существенно уступают по популярности в серверном сегменте, и, что важнее, отстают по производительности от аналогов NVIDIA в задачах обучения и запуска нейросетей. Большинство ведущих ИИ-фреймворков, которые мы рассмотрим далее, по-прежнему оптимизированы в первую очередь под CUDA, часто не имея нормальной поддержки видеокарт AMD, и тем более API Vulkan, позволяющего видеокартам раскрываться на полную.

Топ ИИ-фреймворков и их поддержка GPU

1. PyTorch

Детище Facebook AI Research, PyTorch стал одним из столпов современного глубокого обучения благодаря своей непревзойдённой гибкости и интуитивно понятному интерфейсу. С момента своего появления фреймворк был глубоко интегрирован с CUDA, что позволило NVIDIA получить существенное преимущество в этой экосистеме.

PyTorch известен своей поддержкой динамических вычислительных графов, что делает его особенно привлекательным для исследователей и разработчиков, работающих над сложными моделями. Этот фреймворк позволяет проводить эксперименты в режиме реального времени, что существенно ускоряет процесс итеративной разработки и оптимизации моделей. В академической среде PyTorch стал де-факто стандартом для многих исследовательских проектов, и также находит широкое применение в промышленных системах. Однако в этой сфере он всё ещё уступает TensorFlow, особенно когда речь идёт о крупномасштабном развёртывании моделей в производственной среде.

Поддержка GPU от AMD через ROCm формально существует, однако её производительность и стабильность значительно уступают решениям на базе CUDA. Это создает замкнутый круг: разработчики предпочитают NVIDIA из-за лучшей поддержки, а это, в свою очередь, снижает стимулы для оптимизации под AMD.

2. TensorFlow

Разработанный в Google, TensorFlow представляет собой универсальный инструментарий для машинного обучения, широко применяемый как в академических кругах, так и в индустрии. Подобно PyTorch, TensorFlow имеет глубокую интеграцию с CUDA, что обеспечивает исключительную производительность на картах NVIDIA. Этот фреймворк поддерживает широкий спектр задач машинного обучения, от классификации изображений до обработки естественного языка. Одно из ключевых преимуществ TensorFlow — его способность масштабироваться от мобильных устройств до крупных серверных кластеров, что делает его универсальным инструментом для разработчиков, работающих над различными типами проектов.

TensorFlow часто выбирают для промышленных приложений благодаря его зрелой экосистеме и развитым возможностям развёртывания моделей в эксплуатации. Инструменты, такие как TensorFlow Serving, существенно упрощают интеграцию моделей в существующие производственные системы.

AMD пыталась поддерживать TensorFlow через ROCm и DirectML, но результаты остаются неудовлетворительными. Производительность на GPU AMD значительно ниже, что делает экосистему NVIDIA предпочтительным выбором для большинства проектов в области глубокого обучения.

3. Keras

Изначально созданный как высокоуровневый API для TensorFlow, Keras унаследовал его тесную связь с CUDA. Этот фреймворк славится своей простотой использования и интуитивно понятным интерфейсом, что делает его идеальным выбором для быстрого прототипирования и экспериментов с различными архитектурами нейронных сетей.

Основное преимущество Keras — это возможность быстро создавать и тестировать модели, что особенно ценно на начальных этапах разработки проекта или при проведении исследований. Его высокоуровневый API позволяет разработчикам абстрагироваться от низкоуровневых подробностей и сосредоточиться на архитектуре модели и логике её работы.

Однако для более сложных задач и тонкой настройки процесса обучения возможности Keras могут оказаться недостаточными. В таких случаях разработчики часто переходят на использование базового TensorFlow или PyTorch для получения более гибкого контроля над процессом.

Несмотря на наличие базовой поддержки GPU от AMD через ROCm, её реализация остаётся недостаточно зрелой. Разработчики, использующие Keras, как правило, выбирают карты NVIDIA для достижения лучшей производительности и стабильности в своих проектах.

4. Apache MXNet

Масштабируемый фреймворк для глубокого обучения, также был оптимизирован под CUDA с самых ранних версий. Этот фреймворк известен своей эффективностью и возможностью масштабирования на несколько GPU и распределенные вычислительные среды.

MXNet поддерживает множество языков программирования, включая Python, R, Scala и C++, что делает его универсальным инструментом для разработчиков с различным опытом. Эта мультиязычная поддержка особенно ценна в корпоративной среде, где часто требуется интеграция с существующими системами на различных языках программирования.

Фреймворк часто используют в проектах, требующих обработки больших объёмов данных и работы со сложными моделями, такими как задачи компьютерного зрения и обработки естественного языка. MXNet также известен своей эффективностью при работе с рекуррентными нейронными сетями, что делает его популярным выбором для задач, связанных с анализом последовательностей и временных рядов.

Поддержка видеокарт AMD в теории существует, но на практике её производительность значительно уступает таковой для NVIDIA.

5. Caffe

Фреймворк, завоевавший особую популярность в области компьютерного зрения, с самого начала разрабатывался с учётом оптимизации под CUDA. Это сделало его естественным выбором для пользователей NVIDIA.

Благодаря простоте и высокой производительности Caffe стал идеальным инструментом для быстрого прототипирования и разработки моделей, особенно в задачах, связанных с обработкой изображений и мультимедиа. Caffe часто используют в промышленности для распознавания объектов, сегментации изображений и распознавания лиц.

Хотя развитие фреймворка в последние годы замедлилось, он по-прежнему остаётся популярным выбором для определённых приложений, особенно там, где требуется высокая производительность при работе с изображениями.

Базовая поддержка AMD существует, но не может конкурировать по производительности и стабильности с картами NVIDIA. Это ограничивает использование Caffe на платформах AMD, особенно в высоконагруженных промышленных системах.

6. Theano

Один из пионеров среди фреймворков для глубокого обучения, Theano также был оптимизирован для работы с CUDA на ранних этапах своего развития. Разработанный Монреальским университетом, фреймворк известен своей способностью эффективно оптимизировать вычисления и использовать ресурсы GPU.

Хотя активное развитие Theano прекратилось, его влияние на развитие глубокого обучения трудно переоценить. Многие современные фреймворки, включая Keras, изначально были сделаны на основе Theano. Его подход к символическим вычислениям и автоматическому дифференцированию стал основой для многих последующих разработок. Theano всё ещё используют в некоторых исследовательских проектах, особенно там, где требуется тонкий контроль над процессом вычислений и оптимизации.

Несмотря на наличие поддержки AMD через ROCm, её стабильность и производительность оставляют желать лучшего. Большинство пользователей Theano продолжают отдавать предпочтение оборудованию NVIDIA для своих проектов, что ещё больше укрепляет позиции NVIDIA в академической среде.

7. Microsoft Cognitive Toolkit (CNTK)

CNTK, также известный как Microsoft Cognitive Toolkit, — это мощный фреймворк для глубокого обучения. Он поддерживает масштабирование на множество GPU и серверов, что делает его отличным выбором для задач, требующих большой вычислительной мощности. CNTK отличается высокой производительностью и эффективностью, особенно при работе с рекуррентными и свёрточными нейронными сетями. Это популярный инструмент для задач обработки естественного языка, распознавания речи и компьютерного зрения.

Фреймворк поддерживает как статические, так и динамические вычислительные графы, что обеспечивает гибкость при разработке и оптимизации моделей. CNTK также предоставляет удобные средства для распределённого обучения, что особенно ценно при работе с большими наборами данных и сложными моделями.

Хотя CNTK имеет некоторую поддержку GPU от AMD, его оптимизация для CUDA реализована значительно лучше. 

8. Torch

Научно-вычислительный фреймворк, основанный на языке программирования Lua. Он был разработан для сложных вычислений и является мощным инструментом как для исследований, так и для промышленного применения. Torch известен своей модульной архитектурой и высокой производительностью, особенно в задачах компьютерного зрения, обработки естественного языка и распознавания речи. Его гибкость позволяет исследователям легко экспериментировать с новыми архитектурами нейронных сетей и алгоритмами оптимизации.

Несмотря на то, что активное развитие оригинального Torch замедлилось после появления PyTorch (который можно считать его преемником), многие концепции и идеи Torch продолжают влиять на развитие современных фреймворков глубокого обучения.

Как и многие другие фреймворки, Torch был оптимизирован для работы с CUDA, что сделало его более привлекательным для пользователей NVIDIA. Поддержка GPU AMD в Torch ограничена.

9. Deeplearning4j (DL4J)

Это фреймворк для глубокого обучения, разработанный специально для Java Virtual Machine (JVM). Он поддерживает множество языков программирования, включая Java, Scala и Clojure. Очень удобно для разработчиков, работающих в экосистеме JVM.

DL4J известен своей высокой производительностью при работе с большими объёмами данных и способностью эффективно использовать распределённые вычислительные системы. Это делает его популярным выбором для предприятий, которые значительно вложились в инфраструктуру на основе JVM.

Фреймворк поддерживает широкий спектр архитектур нейронных сетей, включая свёрточные и рекуррентные сети, а также предоставляет инструменты для предобработки данных и визуализации результатов. DL4J также интегрируется с Apache Spark.

Хотя DL4J поддерживает GPU-ускорение через CUDA, его поддержка AMD ограничена. Это еще раз демонстрирует, как доминирование NVIDIA в сфере ИИ-ускорителей влияет на развитие инструментов машинного обучения даже в нишевых экосистемах.

10. XGBoost

Библиотека, которая изначально была разработана с акцентом на высокопроизводительный градиентный бустинг с использованием центральных процессоров, особенно многоядерных, таких как Intel. В начале её пути основное внимание уделялось именно CPU, и поддержка GPU не была приоритетной. Однако в последующие годы разработчики добавили поддержку видеокарт, чтобы воспользоваться преимуществами параллельных вычислений.

GPU-поддержка в XGBoost была оптимизирована в основном под архитектуру CUDA от NVIDIA, что значительно повысило производительность при использовании оборудования этой компании. Это сделало XGBoost одним из эффективных инструментов для задач машинного обучения на GPU, особенно на видеокартах NVIDIA. Поддержка GPU от AMD существует, но она значительно менее развита и популярна, что снова подчеркивает доминирование NVIDIA в сфере ускорения ИИ.

Заключение

Текущее положение NVIDIA на рынке ИИ — редкий пример максимально прозрачного и закономерного исхода событий. В то время как Intel и AMD распыляли свои ресурсы, NVIDIA под руководством Дженсона Хуанга методично сосредоточилась на развитии своей экосистемы. Невероятно, но факт: компьютерное железо существует для софта, а не софт для железа. И без нормальной поддержки и документации для API среди наиболее популярных библиотек и фреймворков, сколько бы терафлопсов и красивых чисел в бенчмарках не было у вашего устройства, — толку от этого для потребителя будет 0.

В итоге мы все можем наблюдать сложившуюся на текущий момент картину: технологическое преимущество NVIDIA, подкреплённое обширной экосистемой инструментов, что создаёт значительный барьер для конкурентов.

Комментарии (15)


  1. journeym
    02.09.2024 13:05

    Ждем порваных амдшников в комментах


  1. unreal_undead2
    02.09.2024 13:05
    +3

    Превосходство NVIDIA не оспариваю, но всё таки хотелось бы больше конкретики - что именно и насколько не так в поддержке AMD. А то непонятно, скажем, зачем люди пытаются на LUMI заниматься тренингом, если там нормальных фреймворков нет.


    1. saege5b
      02.09.2024 13:05
      +4

      История началась сильно раньше.

      Когда видеокарты от просто вывода картинки, начали "умнеть", Нвидиа и АТИ увлечённо клепали железо.

      Потом случился очередной кризис. АТИ ушло под АМД, а в Нвидиа поняли что чистое железо без софта - ничто.

      Поэтому в Нвидиа начали плотно общаться со свободными программистами. Конференции, опросы. Консультации игроделов. Обучайки. Библиотеки и кухни.

      В АТИ/АМД смеялись над "распылением ресурсов".

      А через несколько лет оказалось, что игра написанная под Нвидию, с использованием библиотек Нвидии, на оборудовании Нвидии даёт больше, чем та же игра на библиотеках Нвидии и железе АТИ/АМД... и где-то сверху сидел "царь горы" - Интел.

      И АМД бросилась догонять... Проблемой стало, что в АМД так и нет программистов, есть железнячники и есть продажники. Поэтому все библиотеки и кухни выпекались кривыми и сырыми, с кучей ошибок, без обучаек, без обратной связи.

      Но эффект ожидался "вот прям щас". А когда эффект не наступал, всё бросалось и начинало готовиться что-то новое.

      И так по кругу.

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

      Правда и у зелёных косяков навалом. И странных решений хватает.

      Но, к нынешнему моменту, получилось так, что именно Нвидиа мешала коктейль библиотек. А остальным или использовать адаптеры, или готовить всё с нуля.


    1. Dynasaur
      02.09.2024 13:05

      Люди и на кофеварке Дум запускают, это в людях неистребимо. Но генеральную линию задают люди со стратегическим видением и ресурсами, а не лудоманы. АМД стратегически просчиталась в этой области.


      1. unreal_undead2
        02.09.2024 13:05

        Одно дело фанаты, другое - многомиллионный проект, одобренный кучей технических людей и бюрократов.


  1. Dynasaur
    02.09.2024 13:05
    +1

    Похоже, назревает необходимость в некоем промежуточном слое/драйвере, который все обращения с CUDA будет транслировать в аналогичные обращения к ROCm и потенциальным будущим аналогам. И даже, вроде бы, очевидно, кто должен проспонсировать появление такого драйвера.


    1. SnakeSolid
      02.09.2024 13:05
      +1

      На сколько я знаю энтузиасты пытаются делать CUDA-подобные интерфейсы к другим картам (например ZLUDA). Где-то даже был проект по трансляции вызовов CUDA в OpenCL для старых карт. У AMD есть HIP, который позволяет компилировать CUDA под их карты. Но NVidia активно сопротивляется мимикрии под их API, чтобы сохранить рынок.


      1. Dynasaur
        02.09.2024 13:05

        нда, проект на 10 участников. Причём на первой странице информация о каком-то наезде со стороны AMD. Это явно не то, что может подточить глобальную монополию НВидии :-)


        1. rPman
          02.09.2024 13:05

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

          Ну а любых потенциальных конкурентов купит и выбросит какая-нибудь дарпа в младенчестве (Epiphany от Adapteva в 2013 году ее чипы на flops на ват были лучшими).


          1. Dynasaur
            02.09.2024 13:05

            Не совсем так. Когда-то IBM была глобальной монополией. Где она теперь? Она даже жива, но кто о ней вспоминает сейчас? Когда-то Intel и windows были глобальными монополиями. Они и сейчас сильны, но теперь есть AMD и Linux, так что глобальные монополии можно двигать.


            1. rPman
              02.09.2024 13:05

              amd создан и подкармливается исключительно из-за антимонопольщиков (пока они есть, intel формально не трогают), правда сейчас появился arm (и возможно он поменяет рынок, и да, эту платформу могут пилить разные компании) но тут другая проблема, компании-производители держат эту платформу в оковах, и пока этот так, такого же распространения как PC оно не получит (я знаю про то что количественно, за счет мобильного рынка и рынка чего то типа роутеры, arm на высоте уже давно, но мы же про десктопы и сервера говорим)


  1. akakoychenko
    02.09.2024 13:05
    +1

    Так а в чем принципиальная проблема для AMD сделать полностью совместимый с написанным под CUDA кодом, API? Чтобы вот, точно и гарантированно, берёшь код под CUDA, меняешь 10 строчек, и все работает повторяемо? Настолько юристы хорошо поработали, что это невозможно? Инженерная проблема, что CUDAшные команды будут неэффективно и во много тактов выполняться?


    1. Dynasaur
      02.09.2024 13:05
      +1

      например, CUDA-драйвер спрашивает железку - ты Nvidia? Если амдишная железка ответит "Йа, йа, натюрлих!" - это будет поводом засудить АМД - их железка не имеет права так отвечать. Так что тут надо работать тоньше и больше - как минимум свой драйвер. И некий уровень абстракции между МО-фреймворком и драйвером


  1. anonymous
    02.09.2024 13:05

    НЛО прилетело и опубликовало эту надпись здесь


    1. Dynasaur
      02.09.2024 13:05

      Заявленная производительность в террафлопсах не стоит ничего, если её нельзя реализовать. Если все фреймворки заточены на работу с CUDA и не поддерживают ROCm, что что толку с номинальных террафлопсов?