ММООЗЗГГ.ru

Словарь ИИ

Что такое CUDA

Коротко

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

Инфраструктура · CUDA

Михаил МозгПроверено: 1 минута чтения

Ребенку

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

Простыми словами

Видеокарта умеет делать тысячи вычислений одновременно, но обычная программа об этом не знает. Нужен способ сказать: раздели работу на кусочки и посчитай их параллельно. Такой способ компания NVIDIA выпустила для своих видеокарт. Разработчик пишет функцию на привычном языке вроде C++, а она запускается сразу в тысячах потоков. Поверх этой основы построены готовые библиотеки, и популярные фреймворки для нейросетей пользуются ими незаметно для человека. Поэтому программа для локальной нейросети часто просит видеокарту NVIDIA и драйвер с этой платформой.

Для бизнеса

Эта платформа объясняет, почему видеокарты NVIDIA так распространены в ИИ: под нее написано много библиотек, движков и инструкций. Железо без нее сужает список программ, которые заработают сразу, и добавляет инженерам работу по переносу. Это тоже форма зависимости от поставщика: цены на карты, сроки поставки и ограничения на ввоз влияют на бюджет проекта. Альтернативы есть: ускорители других производителей со своими программными стеками и компьютеры Mac для небольших моделей. Перед закупкой проверьте, поддерживает ли выбранный движок инференса ваше железо и какую версию драйверов он требует. Подбор сервера под конкретные модели входит в карту ИИ-решений.

Для специалиста

NVIDIA представила CUDA в ноябре 2006 года как платформу параллельных вычислений общего назначения и модель программирования для своих GPU. Программист пишет ядра (kernels): функции C++ со спецификатором __global__, которые при вызове выполняются N раз параллельно в N потоках. Потоки собирают в блоки до 1024 штук, блоки в сетку (grid) одного, двух или трех измерений. Блоки обязаны выполняться независимо и в любом порядке, поэтому одна скомпилированная программа масштабируется на любое число мультипроцессоров. Кроме C++, руководство называет Fortran, DirectCompute и OpenACC. Для глубокого обучения важен слой библиотек: Chetlur и соавторы (2014) представили cuDNN, набор оптимизированных примитивов по аналогии с BLAS; его подключение к Caffe ускорило стандартную модель на 36% и сократило расход памяти. Фреймворки обычно опираются на такие библиотеки, а не пишут каждое ядро с нуля.

Пример

Компания покупает сервер для локальной модели и выбирает между двумя ускорителями с одинаковой памятью. Инженер проверяет, что нужный движок инференса официально поддерживает только один из них, и это решает выбор быстрее, чем сравнение цен.

Связанные термины

Вопросы и ответы

Работает ли CUDA на видеокартах AMD?

Нет, это платформа NVIDIA для ее собственных GPU. У других производителей свои программные стеки, и часть популярных движков их поддерживает, но совместимость каждой программы нужно проверять отдельно.

Нужно ли знать CUDA, чтобы запустить нейросеть?

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

Источники

Где это применяют в компании

Не уверены, нужно ли это вашей компании?

Карта ИИ-решений
Написать в Telegram