StreamTensor: потоковая компиляция LLM из PyTorch в FPGA-архитектуры

Что делает StreamTensor

StreamTensor — это компилятор, который переводит графы LLM из PyTorch (GPT-2, Llama, Qwen, Gemma) в потоковые dataflow-ускорители для FPGA AMD Alveo U55C. Вместо того чтобы выполнять промежуточные тензоры как пакетные ядра с частыми обращениями к DRAM, StreamTensor прокачивает тайлы через on-chip FIFO и конвертеры, снижая количество обращений к внешней памяти и экономя время и энергию.

Ключевые идеи и поток данных

Модели проходят через Torch-MLIR, понижаются до MLIR Linalg и затем переводятся в dataflow IR. Узлы этого IR становятся аппаратными ядрами с явными stream-интерфейсами и хостовым/рантайм-обвязкой. Процесс автоматизирует генерацию ядер, вставку DMA и сопряжение рантайма без ручного написания RTL.

Важная абстракция компилятора — итеративный тензор (itensor), который кодирует порядок итераций, разбиение на тайлы и расположение данных. Явное представление порядка стрима позволяет безопасно объединять ядра и синтезировать минимальные буферы и конвертеры форматов только там, где это действительно нужно.

Иерархический поиск конфигураций

StreamTensor исследует три взаимосвязанных пространства проектирования:

Иерархический DSE направлен на оптимизацию устойчивой пропускной способности при ограничениях по пропускной способности и on-chip памяти.

Размеры FIFO и предотвращение взаимоблокировок

Вместо эвристик StreamTensor формулирует задачу размера FIFO как задачу линейного программирования. LP вычисляет размеры буферов, которые предотвращают простои и дедлоки при минимальном использовании BRAM/URAM. Формальный подход обеспечивает корректность потоковой передачи между ядрами.

Результаты

Для задач декодинга LLM команда приводит сокращение средней латентности до 0.64× по сравнению с базовой GPU-конфигурацией на GPT-2 и до 0.76× по сравнению с предыдущими FPGA-ускорителями LLM. Энергоэффективность достигает до 1.99× по сравнению с A100 на отдельных моделях. Результаты зависят от модели и настроек и относятся к задачам декодинга.

Платформа и ограничения

Работа нацелена на платформа Alveo U55C (16 GB HBM2, 460 GB/s, PCIe Gen3×16 или dual Gen4×8, 2×QSFP28). Дизайн ориентирован на использование пропускной способности HBM и on-chip памяти, чтобы удерживать промежуточные тайлы в потоке и минимизировать DMA в DRAM.

Значение работы

StreamTensor показывает, что компиляторно управляемый потоковый подход способен заменить многие обращения к DRAM при декодинге LLM, снижая задержки и повышая энергоэффективность на специализированном FPGA-оборудовании. Ключевые элементы — itensor, автоматическая синтез конвертеров, иерархический DSE и LP-базированное определение размеров FIFO — делают межъядерные стримы безопасными и эффективными.

Где читать дальше

Авторы публикуют подробную статью и выкладывают репозиторий на GitHub с туториалами, кодом и ноутбуками. Результаты ограничены задачами декодинга и конкретной аппаратной платформой, но идеи itensor и формального определения размеров FIFO применимы шире.