Новый подход к упаковке тернарных весов

Тернарные языковые модели хранят каждый вес как один из трёх символов: −1, 0 или +1. Традиционно для описания требуемого объёма памяти используется информационно-теоретический предел log₂ 3 ≈ 1.585 бита на вес. На практике пять тернарных весов упаковываются в один байт (five-trit packing), что при использовании групп размером степень двойки округляется до 1.625 бита на вес. Этот подход трактует все три символа как равновероятные.

Исследователи из Intel (Евангелос Георганас, Александр Хайнеке и Прадип Дубей) проанализировали распределение символов в 29 тернарных LLM-моделях. Полученные данные показали, что нули составляют до 51.5% всех весов — это существенно отличается от предположения о равномерном распределении.

BITCOS: адаптивный формат хранения

Вдохновлённые этим открытием, исследователи предложили BITCOS — простой формат, чувствительный к реальному распределению символов. Алгоритм объединяет плотную битовую карту присутствия нулей и компактный вектор знаков, требуя всего 2 − z бита на элемент веса, где z — плотность нулей в модели.

BITCOS демонстрирует преимущество перед five-trit packing в 26 из 29 протестированных моделей. На самых разреженных моделях формат достигает 1.485 бита на вес — это примерно на 6% ниже информационно-теоретического предела.

Оптимизированная распаковка на современном оборудовании

Формат разработан для эффективной распаковки на современных процессорах и GPU. Исследователи реализовали оптимизированные последовательности распаковки для AVX-512, AVX2 и Intel Xe2 GPU.

При сравнении с передовыми production ternary matrix-vector multiplication ядрами прирост производительности составляет до 1.28× на реальных плотностях нулей в тернарных моделях.

Результаты end-to-end инференса

Комплексные тесты инференса языковой модели проведены на пяти различных платформах: клиентских и серверных CPU, интегрированных и дискретных Xe2 GPU.

На процессорах пропускная способность decode улучшилась на 1.18×, на GPU — на 1.27×. Такие показатели позволяют значительно снизить требования к памяти и энергопотреблению при развёртывании тернарных моделей в production среде.