В индустрии машинного обучения происходит небывалый беспрецедентный бум, и главный двигатель этого праздника технологий, генерирующего сверхприбыли для больших компаний, — графические процессоры (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, подкреплённое обширной экосистемой инструментов, что создаёт значительный барьер для конкурентов.
Автор: Sber