Discrete weights / Speech / 01

Ternary Whisper

Эксперимент с тернарными весами Whisper и честной проверкой качества распознавания речи.

  • 192 весовые матрицы переведены в {-1, 0, +1}
  • 198 180 864 тернарных весов, 81,98% всех весов
  • CPU runtime занимает около 140 MiB
01 / Задача

Проблема

Большие speech-модели сложно переносить на CPU и edge-среды. Простое сжатие файла недостаточно: нужно сохранить измеримое качество распознавания и построить runtime, который действительно использует дискретное представление.

Контекст и границы

Проект исследует Whisper через тернарные матрицы и сравнивает результат на LibriSpeech и long-form аудио. Все цифры рассматриваются вместе с контрольной fp16-моделью и ограничениями эксперимента.

02 / Вклад

Инженерный вклад

Дискретизация весов, компактный CPU runtime, воспроизводимый evaluation-контур и публичная фиксация как сильных, так и слабых результатов.

Код, формат весов, runtime и методика доступны публично. Результаты относятся только к зафиксированным наборам данных и конфигурации.

03 / Архитектура

Системный контур

  1. 01 Whisper checkpoint
  2. 02 Ternary weight pack
  3. 03 CPU runtime
  4. 04 Audio pipeline
  5. 05 WER evaluation
04 / Решения

Ключевые решения

Измерять модель, а не размер архива

Эксперимент оценивается по WER, long-form поведению и сравнению с fp16-контролем.

Хранить веса в нативной форме

Runtime работает с дискретным представлением, а не распаковывает его обратно в обычные матрицы перед каждым запуском.

Публиковать отрицательный результат

Пунктуация, multilingual-сценарии и отставание от matched fp16 control указаны как ограничения.

Результат

Тернарная модель показала нормализованный WER 2,7145% на test-clean и 7,3817% на test-other в опубликованном контуре.

Ограничение

Matched fp16 control остаётся примерно на 0,37 процентного пункта лучше; пунктуация и мультиязычность в текущем runtime не сохраняются.

Следующий шаг

Проверить более широкий набор языков, вернуть punctuation pipeline и сравнить скорость на нескольких классах CPU.

Открыть исходный код