По мере усложнения моделей искусственного интеллекта и развития аппаратного обеспечения, программный уровень, связывающий их, также должен адаптироваться. Недавно мы поговорили со Стивеном Джонсом, выдающимся инженером в 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% потенциальной производительности за короткое время, чтобы затем сосредоточиться на оптимизации.