Skip to content

Repository files navigation

Учебный проект, посвященный сжатию текста при помощи авторегрессионной модели

Описание работы

Данный проект реализует сжатие текста с использованием LSTM модели и адаптивного арифметического кодирования (ААК). В папке ./data/ находится текстовый файл enwik5 для сжатия, являющийся первыми 10^5 байтами enwiki-20060303-pages-articles.xml.

Kодировщик использует LSTM для вычисления вектора вероятностей следующего символа на основе предыдущих. Фактическое значение символа далее кодируется с помощью ААК. Затем веса модели обновляются. Это повторяется для всех символов файла.

Во время декодирования происходит симметричный процесс, декодирование с помощью ААК, предсказание символа при помощи LSTM, обновление модели и т.д. Декодер работает симметрично, поэтому нет необходимости передавать параметры модели.

В качестве ААК используется реализация из https://github.com/nayuki/Reference-arithmetic-coding

Параметры бейзлайна:

Версия Исходный размер, байты Размер после сжатия, байты Коэффициент сжатия Затраченное время, с
Baseline 100000 38283 2.63 296
My Baseline 100000 38429 2.60 431.5
Torch 100000 35356 2.82 103.3
GPU 100000 35386 2.82 11.09
Transformer 100000 47139 2.12 5.69
GPU WO Deterministic 100000 35386 2.82 7.65
Mixed Precision 100000 35366 2.82 8.56
Hyperparams (Max Quality) 100000 33296 3.00 10.98
Hyperparams (Max Speed) 100000 36974 2.70 3.504

Описание задания к лабораторной работе

Улучшить код так, чтобы он:

  • либо на том же сжатии показывал уменьшение времени кодирования и декодирования в 3 раза;
  • либо обеспечивал улучшение коэффициента сжатия на 30% при тех же временных затратах.

Можно улучшать следующие модули:

  • Предобработка: замена слова из предварительно созданного словаря уникальным кодом, использование идеи из Byte-Pair Encoding токенизации и т.д.;
  • Нейронная сеть: использование другой архитектуры (GRU, Transformer и др.), другой функции активации, изменениями связей между слоями и т.д.;
  • Арифметический кодер: можно учесть возможную память источника, использовать другую оценку вероятностей и т.д.

Требования к реализации:

  • Результаты должны быть продемонстрированы на enwik5 из папки ./data/;
  • Восстановленый после сжатия файл должен полностью совпадать с оригинальным;
  • В результатах приложить таблицу выше, обновив значения базового решения для вашего устройства и добавив строчку с улучшенным решением.
  • Измерения времени кодирования и декодирования базовой и предложенной версии должны быть выполнены на одном и том же устройстве.

На почту eabelyaev@itmo.ru прислать отчёт в виде презентации в pdf формате, который включает в себя:

  • ФИО студента, номер группы.
  • Описание предложенной модификации и результаты.
  • Отчёт должен содержать объяснение за счёт чего получилось улучшить базовую архитектуру.
  • Ссылку на репозиторий с исходным кодом проекта и инструкцию по запуску.

Литература

Подробнее про принцип работы можно прочитать в https://bellard.org/nncp/nncp.pdf или https://arxiv.org/pdf/2407.07723 (здесь тот же принцип, но в качестве модели используется LLM и кроме текста сжимают другие типы данных)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages