Helion: A high-level DSL for performant and portable ML kernels
Helion — это высокоуровневый язык для создания производительных и переносимых ML-ядер, разработанный командой PyTorch в Meta. Он разрешает конфликт между производительностью и удобством, компилируя Python-встроенный DSL в автоматически настраиваемый код Triton. Helion создает новый уровень абстракции, сочетающий простоту PyTorch с производительностью низкоуровневых языков, автоматизируя рутинные задачи вроде индексации тензоров и управления памятью. Это позволяет разработчикам сосредоточиться на алгоритмической логике, а не на аппаратно-специфичных деталях.
Текущие языки вынуждают выбирать между контролем и производительностью: CUDA дает максимум контроля, но требует значительных усилий; Triton — шаг вперед, но все еще требует ручной настройки; PyTorch прост, но ограничен в детальном контроле. Программная модель Helion, описываемая как "PyTorch с тайлами", минимизирует шаблонный код и использует знания разработчиков в PyTorch. Типичное ядро Helion состоит из двух взаимодополняющих частей, что упрощает создание правильных и эффективных ядер.
Комментарии (47)
- Helion позиционируется как более высокоуровневая альтернатива Triton, упрощая написание кода за счет автоматического автотюнинга, в отличие от других DSL (Gluon, CuTe), которые предлагают больше контроля на низком уровне.
- Основные проблемы включают длительный автотюнинг (до 10+ минут), отсутствие полноценной поддержки Python-отладки (автодополнение, точки останова) и сложность выбора между множеством технологий (Triton, Gluon, JAX Pallas и др.).
- Несмотря на рост высокоуровневых фреймворков, низкоуровневые оптимизации остаются критичными для новых архитектур моделей (например, FlashAttention, MXFP4) и аппаратных платформ (NVIDIA, AMD).
- Споры о релевантности CUDA: мнения расходятся от его "устаревания" до сохранения доминирующей роли в экосистеме на годы вперед из-за зрелости инструментов и сообщества.
- Пользователи отмечают, что Helion может расширить круг разработчиков, способных писать эффективные ядра, но сомневаются в его преимуществах перед Triton/Gluon без явного выигрыша в производительности или простоте.
Fp8 runs ~100 tflops faster when the kernel name has "cutlass" in it 🔥 Горячее
В пул-реквесте к Triton представлена реализация механизма persistent attention для ускорения работы с большими контекстами в трансформерах. Вместо пересчета ключей и значений для каждого токена механизм сохраняет их в глобальной памяти, что значительно снижает вычислительную нагрузку при обработке длинных последовательностей.
Автор демонстрирует, как это позволяет эффективно работать с контекстами до 128K токенов, избегая квадратичной сложности традиционного внимания. Практический вывод: такой подход открывает путь к более масштабным моделям без пропорционального роста затрат на вычисления.
Комментарии (141)
- NVIDIA использует хардкод для оптимизации кода, содержащего "cutlass" в названии, что может быть нестабильным и приводить к скрытым багам.
- Подобные практики (оптимизации по именам функций или приложений) исторически распространены среди производителей железа и софта (ATI/AMD, Intel, Microsoft) для улучшения бенчмарков, иногда в ущерб качеству.
- Мотивация таких оптимизаций часто не злонамеренна, а связана с снижением рисков и фокусом на стабильности собственных библиотек, но создаёт новые барьеры.
- В индустрии существуют разногласия по поводу этичности таких практик, но для графических драйверов тюнинг под конкретные игры стал нормой.
- Обсуждаются проблемы проприетарного кода (драйверы, прошивки) и затраты общества на обратную разработку вместо сотрудничества.
The G in GPU is for Graphics damnit
Автор делится опытом оптимизации модели Physarum polycephalum (слизевика) на GPU с использованием Triton. Модель имитирует поведение агентов, оставляющих феромонные следы и реагирующих на их концентрацию. Изначальная реализация на PyTorch страдала от накладных расходов на инициализацию и низкой утилизации GPU из-за мелких операций.
Профилирование выявило, что основные узкие места — этапы сенсоров, движения и диффузии. Автор переписал ключевые части на Triton, объединив сенсорный и двигательный этапы в один ядро и используя атомарные операции для депозиции феромонов. Это позволило добиться 10-кратного ускорения и полной загрузки GPU, подтвердив, что Triton эффективен для задач с мелкозернистым параллелизмом.
Комментарии (75)
- Обсуждается переименование GPU в MPU (Matrix Processing Units) из-за их доминирующего использования в AI, а не графике.
- Поднимается вопрос о том, имеют ли современные AI-ускорители (например, NVIDIA H100) графические выходы и функциональность, поскольку она им не нужна.
- Утверждается, что специализированные GPU для игр теряют актуальность из-за роста мощности интегрированных графических решений (APU) от многих вендоров.
- Обсуждается, что название (GPU) не ограничивает функциональность инструмента, который эволюционирует и находит новое применение (майнинг, AI).
- Высказывается мнение, что CPUs могут обеспечивать лучшее качество рендеринга изображений (прецизионность), хотя и значительно медленнее, чем GPU.
Gluon: a GPU programming language based on the same compiler stack as Triton
Навигационное меню GitHub с разделами:
- Платформа: Copilot, Spark, Models, Advanced Security, Actions, Codespaces, Issues, Code Review, Discussions, Code Search
- Решения: для предприятий, малых команд, стартапов, некоммерческих организаций
- Ресурсы: статьи по AI, DevOps, безопасности, разработке ПО
- Open Source: спонсоры, проекты, репозитории
- Enterprise: платформа, дополнения
- Цены
Поиск кода, репозиториев, пользователей, issues и pull requests. Возможность сохранения поисковых запросов.
Комментарии (21)
- NVIDIA Tilus представляет собой низкоуровневый инструмент для контроля над регистрами, возможно, как ответ на Triton, который поддерживает AMD и другие ускорители, угрожая экосистеме CUDA.
- Название Gluon уже используется несколькими проектами, включая язык для ML от Amazon/Microsoft, UI-тулкит для Java и встраиваемый язык для Rust, что создает путаницу.
- Gluon от NVIDIA рассматривается как сходный с их же CUTE DSL, что указывает на convergence к оптимальному дизайну Python-based DSL для программирования ядер.
- Мнения разделились: одних смущает, что «язык» остается кодом на Python, требующим трассировки, другие считают такой подход на основе AST-walker эффективным.
- Появление Gluon связано со сложностями Triton в достижении высокой эффективности на новых архитектурах NVIDIA, таких как Blackwell.
- NVIDIA разрабатывает множество DSL, что свидетельствует о их беспокойстве из-за открытых и портируемых альтернатив CUDA.
- На экосистему CUDA оказывают давление крупные компании, разрабатывающие собственные чипы для AI, чтобы избежать зависимости от NVIDIA.