Знаменитый программист Фабрис Беллар представил свою новую разработку: программа для сжатия без потерь англоязычных сообщений по языковой модели GPT-2.
Например, сообщение
сжимается всего в 10 символов:
Средний уровень компрессии составляет 15 %.
Сжатие осуществляется с учётом вероятности появления следующего слова по языковой модели нейросети GPT-2, которую разработала компания OpenAI (на Хабре был обзор GPT-2 и новость про генератор текста). Это нейросеть с 345 млн параметров на архитектуре Transformer (Фабрис Беллар отмечает, что самая большая модель GPT-2 с 1,5 млрд параметров даёт весьма условное улучшение сжатия). Далее арифметический кодер генерирует битовый поток. В этой демонстрации каждый сжатый символ содержит 15 бит данных и для примера представлен в юникодовских диапазонах двух наборов символов: CJK (китайский-японский-корейский) и хангыль.
Демо реализовано с помощью библиотеки LibNC (ещё один проект Беллара) и работает на стандартном ПК. Можно скачать утилиту командной строки gpt2tc под Linux.
Уровни сжатия для некоторых известных бенчмарков архивирования текста указаны в документации.
Фабрис Беллар также отмечает, что ту же языковую модель можно использовать для автозавершения текстовых сообщений (демо).
Например, фразу:
за несколько минут нейросеть дополняет в следующий текст (хотя скорее уместно сказать «сочиняет», а не «дополняет»):
![](https://habrastorage.org/r/w1560/webt/jv/pb/fg/jvpbfgvuw6wtn_gkk3p_snuqvvq.png)
На каждом запуске нейросеть выдаёт совершенно разные варианты.
![](https://habrastorage.org/r/w780q1/webt/2q/2j/jp/2q2jjptyc62pyjv7ng2szboawtw.jpeg)
Фабрис Беллар известен как автор ряда серьёзных проектов, среди которых FFmpeg, QEMU, загрузчик TinyCC и другие.
Список проектов Фабриса Беллара (здесь перечислена только малая часть):
1989: LZEXE
1996: Harissa
1997: Публикация формулы Беллара для вычисления разрядов числа Пи
1999: Linmodem
2000: Вычисление самого большого известного простого числа (исходный код всего 438 байт)
2000: FFmpeg
2001: Компилятор TCC (Tiny C Compiler или TinyCC)
2002: TinyGL
2002: QEmacs
2003: QEMU
2004: Загрузчик TinyCC
2005: Передатчик сигнала в формате DVB-T с компьютера на телевизор
2009: Мировой рекорд по вычислению числа Пи
2011: Эмулятор компьютера с Linux на JavaScript
2014: формат сжатия изображений Better Portable Graphics (BPG), основанный на подмножестве алгоритмов из видеокодека HEVC
2020: сжатие без потерь англоязычных сообщений с помощью GPT-2
Каждый из этих проектов мог бы стать венцом карьеры для любого разработчика, но Фабрис Беллар продолжает работать. Каждые несколько лет он осваивает новые области: сжатие данных, численные методы, обработка сигналов, медиаформаты, сейчас вот увлёкся нейросетями. Но при этом сохраняет тот же самый чистый C, уместные абстракции и приверженность открытым лицензиям, считают коллеги.
Беллар не склонен к саморекламе (например, вежливо отказывается от интервью), но армия программистов и пользователей широко использует созданные им продукты. Например, среди 654 указаний о копирайте в исходном коде одной из ранних версий QEMU 0.13.0 только 216 принадлежат ему. Другими словами, он настолько удачно запустил проект, что уже вскоре после запуска другие программисты вложили в него вдвое больше интеллектуальной собственности, чем сам автор!
Это значит, что Беллар способен невероятно успешно запускать проекты. Что характерно, он делает это в одиночку, общаясь с миром практически только через интернет.
Например, сообщение
This lossless compressor achieves a much higher compression rate on English texts than general purpose compressors
(116 символов)сжимается всего в 10 символов:
猟慴䅭铕袢珏寻䡷䁞꽱
Средний уровень компрессии составляет 15 %.
Сжатие осуществляется с учётом вероятности появления следующего слова по языковой модели нейросети GPT-2, которую разработала компания OpenAI (на Хабре был обзор GPT-2 и новость про генератор текста). Это нейросеть с 345 млн параметров на архитектуре Transformer (Фабрис Беллар отмечает, что самая большая модель GPT-2 с 1,5 млрд параметров даёт весьма условное улучшение сжатия). Далее арифметический кодер генерирует битовый поток. В этой демонстрации каждый сжатый символ содержит 15 бит данных и для примера представлен в юникодовских диапазонах двух наборов символов: CJK (китайский-японский-корейский) и хангыль.
Демо реализовано с помощью библиотеки LibNC (ещё один проект Беллара) и работает на стандартном ПК. Можно скачать утилиту командной строки gpt2tc под Linux.
Уровни сжатия для некоторых известных бенчмарков архивирования текста указаны в документации.
File Model Original size Compr. size Ratio CMIX v18 #params (bytes) (bytes) (bpb) ratio (bpb) book1 117M 768771 152283 1.58 1.82 book1 345M 768771 142183 1.48 book1 774M 768771 137562 1.43 book1 1558M 768771 134217 1.40 alice29.txt 117M 152089 23615 1.24 1.65 alice29.txt 345M 152089 20587 1.08 alice29.txt 774M 152089 19096 1.00 alice29.txt 1558M 152089 17382 0.91 enwik5 117M 100000 14875 1.19 1.60 enwik5 345M 100000 13511 1.08 enwik5 774M 100000 13240 1.06 enwik5 1558M 100000 12918 1.03
Фабрис Беллар также отмечает, что ту же языковую модель можно использовать для автозавершения текстовых сообщений (демо).
Например, фразу:
Habr' community is very
за несколько минут нейросеть дополняет в следующий текст (хотя скорее уместно сказать «сочиняет», а не «дополняет»):
![](https://habrastorage.org/webt/jv/pb/fg/jvpbfgvuw6wtn_gkk3p_snuqvvq.png)
На каждом запуске нейросеть выдаёт совершенно разные варианты.
![](https://habrastorage.org/webt/2q/2j/jp/2q2jjptyc62pyjv7ng2szboawtw.jpeg)
Фабрис Беллар
Фабрис Беллар известен как автор ряда серьёзных проектов, среди которых FFmpeg, QEMU, загрузчик TinyCC и другие.
Список проектов Фабриса Беллара (здесь перечислена только малая часть):
1989: LZEXE
1996: Harissa
1997: Публикация формулы Беллара для вычисления разрядов числа Пи
1999: Linmodem
2000: Вычисление самого большого известного простого числа (исходный код всего 438 байт)
2000: FFmpeg
2001: Компилятор TCC (Tiny C Compiler или TinyCC)
2002: TinyGL
2002: QEmacs
2003: QEMU
2004: Загрузчик TinyCC
2005: Передатчик сигнала в формате DVB-T с компьютера на телевизор
2009: Мировой рекорд по вычислению числа Пи
2011: Эмулятор компьютера с Linux на JavaScript
2014: формат сжатия изображений Better Portable Graphics (BPG), основанный на подмножестве алгоритмов из видеокодека HEVC
2020: сжатие без потерь англоязычных сообщений с помощью GPT-2
Каждый из этих проектов мог бы стать венцом карьеры для любого разработчика, но Фабрис Беллар продолжает работать. Каждые несколько лет он осваивает новые области: сжатие данных, численные методы, обработка сигналов, медиаформаты, сейчас вот увлёкся нейросетями. Но при этом сохраняет тот же самый чистый C, уместные абстракции и приверженность открытым лицензиям, считают коллеги.
Беллар не склонен к саморекламе (например, вежливо отказывается от интервью), но армия программистов и пользователей широко использует созданные им продукты. Например, среди 654 указаний о копирайте в исходном коде одной из ранних версий QEMU 0.13.0 только 216 принадлежат ему. Другими словами, он настолько удачно запустил проект, что уже вскоре после запуска другие программисты вложили в него вдвое больше интеллектуальной собственности, чем сам автор!
Это значит, что Беллар способен невероятно успешно запускать проекты. Что характерно, он делает это в одиночку, общаясь с миром практически только через интернет.