Создайте простую встроенную DSL для AI с ThunderKittens

Источник

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

ThunderKittens выбрали не случайно — название должно быть милым и привлекательным, противопоставляясь многим серьезным названиям в этой области. Основная идея заключается в том, что необходимо поддерживать занятыми тензорные ядра, так как они составляют 94% вычислительных мощностей на H100. В ThunderKittens основным объектом является матрица, размер которой соответствует размеру тензорного ядра.

API ThunderKittens напоминает PyTorch, что делает его более доступным для специалистов в области ИИ. Разработчики стремятся использовать все возможности хоста (CUDA или HIP), не скрывая, как работают ускорители. Это важно, поскольку процессоры ИИ постоянно меняются, и для их оптимального использования необходимо выходить за рамки программных абстракций.

ThunderKittens представляет собой встроенную DSL, находящуюся между простотой встроенного CUDA и фокусом Triton на ядрах ИИ. Если вы знакомы с CUDA, вы сможете легко «скомпилировать» ThunderKittens в своем сознании. Разработчики уже использовали ThunderKittens в своих предыдущих работах и решили поделиться им с общественностью.

На графических процессорах 4090 и A100 производительность ThunderKittens сопоставима с FA2, при этом для достижения результатов требуется всего несколько строк кода. На H100 ThunderKittens работает быстрее, чем FA2, что показывает, что чистота кода не противоречит скорости. Команда разработала множество других ядер с использованием ThunderKittens, и некоторые из них показали результаты, которые не удалось достичь в Triton.

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

Для большей наглядности был опубликован интегрированный вариант с проектом NanoGPT, который также используется в обучении. Это сотрудничество с одним из лучших коммуникаторов в области ИИ, и разработчики рады расширить возможности проекта.

Похожие статьи