Интервью: от CUDA к программированию на основе тайлов: Стивен Джонс из NVIDIA о создании будущего искусственного интеллекта

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

Джонс, чей опыт охватывает механику жидкостей и аэрокосмическую инженерию, поделился глубокими идеями о последних программных инновациях NVIDIA, включая переход к программированию на основе тайлов, введение «зелёных контекстов» и то, как искусственный интеллект переписывает правила разработки кода.

Основные выводы из нашего разговора

Переход к абстракции на основе тайлов

В течение многих лет программирование на CUDA вращалось вокруг иерархии сеток, блоков и потоков. С последними обновлениями NVIDIA представляет более высокий уровень абстракции: CUDA Tile.

По словам Джонса, этот новый подход позволяет разработчикам программировать непосредственно на массивы и тензоры, а не управлять отдельными потоками. «Он расширяет существующую CUDA, — объяснил Джонс. — Мы добавили способ работы с массивами, тензорами, векторами данных… позволяя языку и компилятору видеть, какие высокоуровневые данные вы используете, открылись новые возможности для оптимизации».

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

Будущее программирования: стабильность и оптимизация

Джонс отметил, что, выражая программы в виде векторных операций (например, Тензор A умножить на Тензор B), компилятор берёт на себя сложную работу по сопоставлению данных с конкретным поколением оборудования.

Это обеспечивает стабильность структуры программы даже при изменении базовой архитектуры GPU с Ampere на Hopper и Blackwell.

Python в первую очередь, но не только Python

Признавая, что Python стал лингва франка искусственного интеллекта, NVIDIA запустила поддержку CUDA Tile с Python в первую очередь. «Python — это язык искусственного интеллекта», — заявил Джонс, добавив, что представление на основе массивов «гораздо более естественно для программистов на Python», которые привыкли к NumPy.

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

«Зелёные контексты» и снижение задержки

Для инженеров, развёртывающих большие языковые модели (LLM) в производстве, задержка и джиттер являются критическими проблемами. Джонс выделил новую функцию под названием «зелёные контексты», которая позволяет точно разделять GPU.

«Зелёные контексты позволяют вам разделить GPU… на разные секции», — сказал Джонс. Это позволяет разработчикам выделять определённые части GPU для разных задач, например, для одновременного выполнения операций предварительного заполнения и декодирования без конкуренции за ресурсы.

Такая микроуровневая специализация внутри одного GPU отражает disaggregation, наблюдаемую в масштабах центров обработки данных.

Важность инструментов

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

«Я действительно считаю, что самая важная часть CUDA — это инструменты разработчика», — подтвердил Джонс. Он заверил разработчиков, что даже при использовании абстракций на основе тайлов такие инструменты, как Nsight Compute, позволят проводить инспекцию вплоть до отдельных инструкций машинного языка и регистров. «Вы должны иметь возможность настраивать, отлаживать и оптимизировать… это не может быть чёрным ящиком», — добавил он.

Ускорение достижения результата

В конечном счёте цель этих обновлений — повышение производительности. Джонс описал цель как «сдвиг влево» кривой производительности, позволяющий разработчикам достичь 80% потенциальной производительности за короткое время.

«Если вы сможете выйти на рынок с 80% производительности за неделю вместо месяца… то вы потратите оставшееся время только на оптимизацию», — пояснил Джонс. Важно, что эта простота использования не идёт в ущерб мощности; новая модель по-прежнему обеспечивает путь к 100% пиковой производительности, которую может предложить кремний.

Заключение

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

С поддержкой, охватывающей Ampere и предстоящие архитектуры Blackwell и Rubin, эти обновления обещают упростить разработку во всей экосистеме GPU.

Для получения полной технической информации о CUDA Tile и «зелёных контекстах» посетите портал разработчиков NVIDIA.

1. Какие новые возможности для оптимизации предоставляет подход CUDA Tile?

Ответ: CUDA Tile позволяет разработчикам программировать непосредственно на массивы и тензоры, а не управлять отдельными потоками. Это обеспечивает более высокий уровень абстракции и открывает новые возможности для оптимизации кода.

2. Почему поддержка Python была выделена как приоритетная при запуске CUDA Tile?

Ответ: Python стал лингва франка искусственного интеллекта, и NVIDIA запустила поддержку CUDA Tile с Python в первую очередь, потому что представление на основе массивов «гораздо более естественно для программистов на Python», которые привыкли к NumPy.

3. Какие проблемы решают «зелёные контексты» при развёртывании больших языковых моделей (LLM) в производстве?

Ответ: «Зелёные контексты» позволяют точно разделять GPU на разные секции, что позволяет разработчикам выделять определённые части GPU для разных задач. Это снижает задержку и джиттер, которые являются критическими проблемами при развёртывании LLM в производстве.

4. Как NVIDIA обеспечивает сохранение контроля разработчиками при использовании высокоуровневых абстракций?

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

5. Какова цель обновлений CUDA с точки зрения производительности?

Ответ: Цель обновлений CUDA — повышение производительности. Джонс описал цель как «сдвиг влево» кривой производительности, позволяющий разработчикам достичь 80% потенциальной производительности за короткое время, чтобы затем сосредоточиться на оптимизации.

Источник