DeepSeek V3 подробности статьи: Как обойти монополию CUDA!
Две недавно выпущенные модели DeepSeek, DeepSeek-V3 и DeepSeek-R1, достигают производительности, сравнимой с аналогичными моделями от OpenAI, при гораздо меньшей стоимости.
По сообщениям зарубежных СМИ, всего за два месяца они обучили языковую модель MoE с 671 миллиардом параметров на кластере из 2 048 графических процессоров H800, что в 10 раз эффективнее, чем у лучших ИИ.
Этот прорыв был достигнут не с помощью CUDA, а благодаря большому количеству тонких оптимизаций и использованию ассемблерного программирования PTX (parallel thread execution) от NVIDIA.
DeepSeek была вынуждена пойти по пути, отличному от OpenAI и других компаний, которые полагаются на грубую силу вычислений в условиях аппаратных ограничений. Она использовала ряд технологических инноваций, чтобы снизить требования к мощности модели и при этом добиться прироста производительности.
Несколько восторженных комментариев от нетизенов:
"В этом мире есть группы людей, которые могут быть настолько сумасшедшими, чтобы говорить что-то вроде "CUDA слишком медленная!
Гениальные гики настраивают PTX для максимальной производительности GPU
NVIDIA PTX (Parallel Thread Execution) - это архитектура среднего набора инструкций, разработанная специально для GPU, которая находится между высокоуровневыми языками программирования GPU (такими как CUDA C/C++) или другими языковыми фронт-энд-кодами и низкоуровневым машинным кодом (потоковым ассемблером или SASS).
PTX - это низкоуровневая архитектура набора инструкций, которая представляет GPU как устройство для параллельных вычислений данных, позволяя осуществлять тонкие оптимизации, такие как распределение регистров и настройка на уровне потоков/потоковых пучков, которые невозможны в таких языках, как CUDA C/C++.
Когда PTX преобразуется в SASS, он оптимизируется для конкретного поколения графических процессоров NVIDIA.
При обучении модели V3 DeepSeek перенастроил графический процессор NVIDIA H800:
Из 132 ядер потокового процессора 20 были выделены для межсерверной связи, в основном для сжатия и декомпрессии данных, чтобы преодолеть ограничение процессора на количество соединений и повысить скорость обработки транзакций.
Для повышения производительности в DeepSeek также реализованы усовершенствованные алгоритмы конвейеризации с помощью дополнительных тонких настроек уровня связки поток/поток.
Эти оптимизации выходят далеко за пределы уровня обычных разработок CUDA, но их крайне сложно поддерживать. Однако именно такой уровень оптимизации в полной мере демонстрирует выдающиеся технические возможности команды DeepSeek.
В документе V3 специально упоминаются подробности о PTX
Это объясняется тем, что в условиях двойного давления - глобального дефицита GPU и ограничений со стороны США - компаниям, таким как DeepSeek, пришлось искать инновационные решения.
К счастью, в этой области им удалось совершить значительный прорыв.
Один из разработчиков считает, что "низкоуровневое программирование на GPU - это правильное направление. Чем больше оптимизации, тем ниже стоимость, или бюджет производительности, который можно использовать для других достижений без дополнительных затрат".
Этот прорыв оказал значительное влияние на рынок, и некоторые инвесторы считают, что новая модель снизит спрос на высокопроизводительное оборудование, что может повлиять на показатели продаж таких компаний, как NVIDIA.
Однако ветераны отрасли, в том числе бывший генеральный директор Intel Пэт Гелсингер, считают, что приложения ИИ могут в полной мере использовать все доступные вычислительные мощности.
Гелсингер рассматривает этот прорыв DeepSeek как новый способ внедрения возможностей ИИ в недорогие устройства для массового рынка.
PTX и CUDA
Так означает ли появление DeepSeek, что для разработки передовых LLM больше не нужны крупные кластеры GPU?
Не помешают ли огромные инвестиции в вычислительные ресурсы компании Google, OpenAIМета- и xAI в конечном итоге окажутся напрасными? По общему мнению разработчиков ИИ, это не так.
Однако можно с уверенностью сказать, что в области обработки данных и оптимизации алгоритмов еще есть огромный потенциал, и в будущем наверняка появятся более инновационные методы оптимизации.
Поскольку модель V3 DeepSeek находится в открытом доступе, подробности подробно раскрываются в ее техническом отчете.
В отчете описываются глубокие базовые оптимизации, проведенные DeepSeek. Вкратце степень оптимизации можно описать так: "Они перестроили всю систему с нуля".
Как уже упоминалось выше, при обучении V3 с помощью GPU H800 компания DeepSeek настраивала основные вычислительные блоки GPU (потоковые мультипроцессорные ядра, или SMs) для удовлетворения конкретных потребностей.
Из 132 SM они специально выделили 20 для решения задач межсерверного взаимодействия, а не вычислительных задач.
Эта настройка выполняется на уровне PTX (параллельное выполнение потоков), который является низкоуровневым набором инструкций графического процессора NVIDIA.
PTX работает на уровне, близком к языку ассемблера, и позволяет проводить тонкую оптимизацию, такую как распределение регистров и настройка уровня потоков/потоковых пучков. Однако такой тонкий контроль сложен и трудно поддерживается.
Именно поэтому разработчики обычно предпочитают использовать высокоуровневые языки программирования, такие как CUDA, которые обеспечивают достаточную оптимизацию производительности для большинства задач параллельного программирования и устраняют необходимость в низкоуровневых оптимизациях.
Однако, когда необходимо максимально эффективно использовать ресурсы GPU и добиться определенных требований к оптимизации, разработчикам приходится прибегать к помощи PTX.
Однако технические барьеры остаются
В связи с этим интернет-пользователь Ян Катресс заявил: "Использование Deepseek PTX не устраняет технические барьеры CUDA".
CUDA - это язык высокого уровня. Он облегчает разработку библиотек и интерфейсов для графических процессоров NVIDIA и поддерживает быструю итеративную разработку.
CUDA может оптимизировать производительность за счет тонкой настройки базового кода (т.е. PTX), а базовые библиотеки уже готовы. Большинство программного обеспечения производственного уровня в настоящее время построено на CUDA.
PTX больше похож на понятный язык ассемблера для GPU. Он работает на низком уровне и позволяет проводить оптимизацию на микроуровне.
Если вы решили программировать на PTX, это означает, что ни одна из вышеупомянутых встроенных библиотек CUDA не может быть использована. Это очень сложная задача, требующая глубоких знаний в области аппаратного обеспечения и времени выполнения.
Однако если разработчики полностью понимают, что они делают, они действительно могут добиться лучшей производительности и оптимизации во время выполнения.
В настоящее время основным направлением экосистемы NVIDIA по-прежнему является использование CUDA.
Разработчики, которые хотят получить дополнительные 10-20% производительности или энергоэффективности от своей вычислительной нагрузки, например, компании, развертывающие модели в облаке и продающие услуги токенов, действительно оптимизировали свою работу с уровня CUDA до уровня PTX. Они готовы потратить время, потому что в долгосрочной перспективе это того стоит.
Следует отметить, что PTX обычно оптимизирован под конкретную аппаратную модель и его сложно переносить с одного оборудования на другое, если только не написать специальную логику адаптации.
Кроме того, ручная настройка вычислительного ядра требует огромного упорства, смелости и особого умения сохранять спокойствие, поскольку каждые 5 000 циклов в программе может происходить ошибка доступа к памяти.
Конечно, для тех сценариев, где PTX действительно необходим, и для тех разработчиков, которым платят достаточно, чтобы они занимались этими вопросами, мы выражаем полное понимание и уважение.
Всем остальным разработчикам рекомендуется продолжать использовать CUDA или другие продвинутые варианты на базе CUDA (или MLIR).