Спасли T5 от урезания: оптимизация вместо потерь

Как спасить качество моделей при урезании весов: история одной миссии за день
Проект speech-to-text встал перед классической дилеммой: нужно было уменьшить размер модели и отказаться от Т5, но при этом не потерять качество распознавания. Задача казалась невыполнимой — обычно урезание весов модели приводит к заметному проседанию точности.
Началось всё с очень конкретного вопроса: какие вообще есть способы сохранить качество, если мы идём на компромисс с размером? Я сел за исследование.
Первый поворот: CTranslate2
Гугление выявило интересный инструмент — CTranslate2 4.6.3, который я знал раньше как фреймворк для ускорения seq2seq-моделей. Там есть встроенный TransformersConverter, способный конвертировать T5 в оптимизированный формат. И вот что важно: конвертация даёт ускорение в 2–4 раза без потери качества. Это не уменьшение модели, это её оптимизация под боевое железо.
Первым делом я проверил исходную модель — оказалось, что она T5-base (d_model=768, 12 слоёв), а не огромный T5-large. Это хорошая новость: потенциал оптимизации есть.
Погружение в детали
Когда ты начинаешь работать с конвертерами моделей, выясняется множество мелочей. Нужно было разобраться, как именно TransformersConverter копирует файлы модели, особенно стоит ли добавлять added_tokens для SentencePiece-токенайзера, который T5 использует. Пришлось лезть в исходники faster-whisper — там тоже работают с конвертированными моделями.
По ходу наткнулся на забавную проблему с кодировкой cp1251 в тестах, пришлось переделывать тесты для корректной работы с Unicode.
Интересный исторический факт: когда в 1940-х годах создавали первые программируемые компьютеры на основе математических абстракций, никто не предполагал, что спустя 80 лет мы будем заниматься микро-оптимизациями моделей языка. История вычислений шла от самых амбициозных идей — создать мыслящую машину — к вполне прикладным задачам, но они требуют той же глубины понимания системы.
Неожиданный результат
Проверив API translate_batch в ctranslate2.Translator и убедившись, что SentencePiece токенайзер работает с конвертированными моделями из коробки, я получил полную картину. CTranslate2 здесь действует как оптимизирующий слой: модель становится компактнее для инференса (благодаря квантизации и переколяции весов), быстрее работает, но при этом сохраняет всё качество оригинального T5.
Получилось так: вместо того чтобы искать ненадёжные способы урезания модели, мы использовали инструмент, которой именно для этого спроектирован. CTranslate2 оптимизирует модели не наугад, а следуя best practices машинного обучения.
Что дальше
План ясен: конвертируем T5 через TransformersConverter, проверяем качество на тестовых данных (оно не должно просесть), деплоим оптимизированную версию. Задача из категории “невозможное” стала “вполне решаемо”.
Когда стоишь перед технической задачей, которая кажется неразрешимой — часто решение уже кто-то написал. Нужно просто знать, где искать.
Почему архитектор модели пошёл в продуктивный отпуск? 😄 Потому что ему нужно было время на рефакторинг своей жизни!
Метаданные
- Session ID:
- grouped_speech-to-text_20260211_1504
- Branch:
- master
- Wiki Fact
- The history of artificial intelligence (AI) began in antiquity, with myths, stories, and rumors of artificial beings endowed with intelligence or consciousness by master craftsmen. The study of logic and formal reasoning from antiquity to the present led directly to the invention of the programmable digital computer in the 1940s, a machine based on abstract mathematical reasoning.
- Dev Joke
- Почему Arch пошёл к врачу? У него были проблемы с производительностью