Инструменты25 июля 2026 г., 21:15 МСК🤖 Auto

TileLang: Python-DSL для GPU-ядер, бьющий cuBLAS в точности и гибкости

Новый инструмент TileLang позволяет писать высокопроизводительные GPU-ядра на Python, достигая 90% от скорости cuBLAS при полной кастомизации, включая FlashAttention.

Баннер новости 4387

Суть инновации

TileLang представляет собой высокоуровневый Python-доменно-специфичный язык (DSL), построенный на базе компилятора TVM. Его главная цель — позволить разработчикам AI-инфраструктуры создавать оптимизированные GPU-ядра без написания низкоуровневого CUDA/C++. Инструмент автоматически управляет маппингом потоков, раскладкой памяти, синхронизацией и генерацией инструкций, оставляя разработчику лишь описание логики через абстракции вроде shared-memory tiles и register fragments.

Архитектурные особенности и бенчмарки

В ходе тестирования на GPU с архитектурой SM (например, Ampere/Hopper) был реализован матричный умножение (GEMM) с использованием тензорных ядер. Ключевым достижением стало то, что кастомное ядро, написанное на ~20 строках Python, показало производительность, сопоставимую с оптимизированной библиотекой NVIDIA cuBLAS. При этом TileLang позволяет явно контролировать использование разделяемой памяти (Shared Memory) и конвейеризацию (pipelining).

Сравнение производительности матричного умножения (FP16, 2048x2048x2048) выглядит следующим образом:

Параметр TileLang (Custom Kernel) cuBLAS (Baseline) PyTorch (Native)
Время выполнения ~90-95% от cuBLAS 100% (Референс) Значительно медленнее
Точность (Rel. Error) Pass (< 2e-2) Pass Pass
Гибкость Высокая (авто-тюнинг, кастомные эпсилон) Низкая (закрытая оптимизация) Средняя
Генерация кода Чистый CUDA (mma.sync, wgmma) Закрытый бинарник PyTorch IR

Ключевые возможности

  • Fused Operations: Поддержка слияния операций, таких как GEMM + Softmax, что критично для современных архитектур внимания (Attention).
  • FlashAttention: Реализация алгоритма FlashAttention напрямую через TileLang, что позволяет избежать лишних записей/чтений из глобальной памяти HBM.
  • Autotuning: Встроенный механизм автоподбора параметров (tile size, stages, threads) под конкретную архитектуру GPU. Инструмент перебирает конфигурации, чтобы найти баланс между использованием Shared Memory и вычислительной мощностью.
  • Кэширование: Скомпилированные ядра кэшируются в ~/.tilelang/cache, что делает повторные запуски практически мгновенными.

Почему это важно

До появления таких DSL, создание кастомных ядер для специфичных задач (например, нестандартных функций активации или специфичных паттернов доступа к памяти) требовало глубоких знаний CUDA и сотен строк кода. TileLang демократизирует этот процесс, позволяя исследователям и инженерам быстро прототипировать и внедрять оптимизации, которые ранее были доступны только узкому кругу специалистов по системному программированию. Это ускоряет разработку новых архитектур LLM и снижает порог входа в оптимизацию AI-инфраструктуры.

Источник: MarkTechPost ↗