Обновить
16K+

Сжатие данных *

Упаковываем и распаковываем информацию

16,46
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Сжимаем флаги стран в 11 бит

Время на прочтение11 мин
Охват и читатели7.4K

Недавно я посмотрел интересное видео YouTube‑канала «Physics for the Birds». Это видео посвящено матрицам, но для объяснения некоторых операций с матрицами автор использовал флаги. Он показал, как можно разбить флаги по осям, чтобы представить их в виде матриц и сэкономить место на диске. В конце этот пример был применён к реальным матрицам и вычислениям с ними.

Однако это видео дало мне вдохновение: часто флаги бывают очень простыми — несколько разноцветных полос, распространённые элементы наподобие звезды, полумесяца или креста. Если использовать какую‑нибудь схему кодирования, то удастся ли описать флаг Франции

в формате «три полосы: синяя, белая, красная», чтобы декодеру и рендереру достаточно было всего нескольких бит? Как может выглядеть такое кодирование?

Я решил создать нечто подобное.

Читать далее

Новости

Проблема переполнения Store: настройка самоочистки RocksDB в Kafka Streams

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели6.3K

Одной из сильных сторон Kafka Streams является возможность хранить состояние приложения локально. По умолчанию в качестве локального хранилища используется RocksDB — встроенная key-value база данных, расположенная на диске.

Но есть одна особенность, о которой редко задумываются в начале проекта. State Store отлично умеет хранить данные, но совершенно не знает, когда их пора удалить. Если приложение однажды записало объект в Store, он останется там до тех пор, пока приложение самостоятельно его не удалит. Никакого встроенного TTL для обычного State Store в Kafka Streams нет. На небольших объёмах это практически незаметно.

Однако если сервис работает месяцами и ежедневно обрабатывает миллионы сообщений, локальное состояние начинает непрерывно расти. RocksDB постепенно превращается в архив всех когда-либо обработанных данных, большая часть которых уже никогда не понадобится.

Узнать больше

Способен ли UNO заменить TOML, YAML, KDL, HCL, EDN и другие языки разметки данных?

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.7K

Уникальная нотация языка UNO создаёт ему огромный потенциал, позволяющий в перспективе заменить большинство нынешних языков разметки данных.

Понятно, что XML и JSON имеют собственные ниши, в которых они могут находиться вечно, но существует огромный ряд задач, где даже их можно с выгодой заместить. Что же касается таких специализированных форматов, как TOML, YAML, KDL, HCL или EDN, то при повсеместном внедрении UNO они рискуют потерять свою актуальность. Из-за врожденных синтаксических недостатков, медленного парсинга или скрытых ошибок, обусловленных недостаточным проектированием, эти языки могут остаться лишь в легаси-проектах. Верно ли данное утверждение? Давайте разбираться.

Да не может быть! Или всё таки..

Регрессивные JPEG

Время на прочтение4 мин
Охват и читатели8K

Одно из удобных свойств файлов JPEG заключается в том, что в них можно опционально сохранять первыми низкочастотные компоненты. Это означает, что частично скачанное изображение будет отображаться в низком разрешении, а не обрезаться снизу.

Внутри файла это реализуется разбиением сжатых данных на несколько «сканов», перед каждым из которых добавляется заголовок. Вот первый скан изображения:

FF DA - Маркер "начало скана"

00 0C - Поле длины в big endian (12 байт); включает и свою длину

03 - Количество каналов в скане (3)

01 - Глобальный id первого включённого канала

00 - Индекс 1 таблицы Хаффмана (DC: 0, AC: 0)

02 - Глобальный id второго включённого канала

10 - Индекс 2 таблицы Хаффмана (DC: 1, AC: 0)

03 - Глобальный id третьего включённого канала

10 - Индекс 2 таблицы Хаффмана (DC: 0, AC: 0)

00 - Начальный коэффициент DCT (DC)

00 - Конечный коэффициент DCT (тоже DC)

01 - Точность: половинная, предыдущие данные отсутствуют.

f8ad 512d d3f1 cd96 - Зашифрованные кодом Хаффмана коэффициенты DCT

bcb0 58df 53d5 5d97 [...и так далее]

В него включён самый низкочастотный коэффициент (DC-компонент) преобразования Фурье для всех трёх цветовых каналов.

В качестве трёх цветовых каналов вместо привычного RGB используется YCbCr. Яркость (Luminance, Y) отделена, потому что должна иметь высокое качество, а цвета можно передавать кое-как и они всё равно будут выглядеть неплохо.

Читать далее

Часть I. Знакомство с UNO. Как синтаксическая типизация стала основой нового языка разметки

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7.1K

Вспомните себя в те времена, когда вы только знакомились с информационными технологиями. Что вы чувствовали, начиная работать с XML, JSON, TOML, YAML и другими языками разметки?

Лично мне поначалу было крайне сложно работать с HTML, особенно без подсветки. Позже пришлось разбираться с кавычками и скобками JSON, которые виделись мне сущим кошмаром. Впоследствии я осознал гениальность этих языков, но осадочек остался. Поэтому время от времени я возвращался к мысли о создании понятной для человека языка Универсальной Нотации Объектов. И получилось. Познакомьтесь, пожалуйста, это UNO — и ваше участие в его развитии будет весьма полезно.

Как появился UNO

Однажды мне потребовалось завести небольшие структурированные описания некоторых сущностей в обычных текстовых файликах. Предполагалось, что их будут заполнять и обычные люди, не знакомые с IT. Что ставило под сомнение выполнимость задачи. Сдаваться? Да ни в коем случае, вызов принят. Тем более, задача воспринималась как тренировка мышления.

Что же это за UNO такой?

Превращение 256ГБ SSD в 320ГБ SSD без пайки и регистрации

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели16K

Как сжать данные на диске на компьютере/ноутбуке?

Почему нажимать эту кнопку не стоит?

Что использовать вместо этой кнопки?

Я хочу знать больше

Сжатие данных — это предсказание

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели20K

Недавно я читала материалы о сжатии данных, и меня внезапно озарила безумная мысль: по сути своей, алгоритмы сжатия и LLM предназначены для решения одной и той же задачи.

В этом посте я познакомлю вас с основами сжатия, чтобы вы могли понять его глубокую связь с моделированием языка. Возможно, вас это изумит.

Читать далее

Как заглянуть внутрь.exe, собранного через Nuitka? Новый инструмент с открытым кодом

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели7.5K

Как узнать, что внутри .exe, собранного через Nuitka? DeNuitkanizator — инструмент с открытым кодом для анализа таких файлов. Извлекает строки, модули, хэши, информацию о защите и многое другое за один запуск.

Читать далее

Нейронные аудиокодеки: мощное сжатие звука с помощью LLM

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели16K

В июле 2024 года французская компания Kyutai опубликовала речевую модель Moshi с нейронным аудиокодеком Mimi. Это был первый в мире голосовой end-to-end AI с открытыми исходниками, способный вести диалог в реальном времени и свободный для использования всеми желающими, демо.

Вместо прямого предсказания сэмплов аудиокодек работает в три этапа:

1. Токенизация звука.

2. Предсказание следующих токенов в LLM.

3. Восстановление оригинала.

Читать далее

Архиватор рождённый из теории предельного сжатия вселенной

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели8.6K

Bounce — быстрый архиватор на чистом Rust без внешних зависимостей. Smart Routing автоматически выбирает стратегию: LZ77 для текста, Byte-Shuffle для весов нейросетей, Huffman для бинарных данных, Raw Store для уже сжатых файлов. Результат: 450 МБ .safetensors сжимается до 71.9% при декомпрессии 1.3 ГБ/с — лучше gzip и zstd. Многопоточный pipeline, пик памяти 73.6 МБ на файл в 450 МБ, размер блока через золотое сечение. Идеально для ML CI/CD, edge-деплоя LLM и смешанных датасетов.

Читать далее

Мой универсальный код

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

Как я улучшил универсальный код Элиаса 1975 года, заменив длину на popcount — и получил 36% экономии на метаданных. С бенчмарками! Картинка на обложке кринжовая, но тут вроде так принято? 😅

Читать далее

Скрытая цена LLM: как KV-cache увеличивает стоимость инференса и как эту проблему решает Google TurboQuant

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели11K

При инференсе LLM общее потребление памяти определяется не только размером самой модели, но и промежуточными данными, накапливаемыми в процессе ее работы. С ростом контекста объем этих данных растет почти линейно и может стать сопоставимым или даже превышать размер самой модели.

В основе этой проблемы лежит KV-cache. Пример: у LLaMA 2 7B веса занимают около 14 ГБ, но при контексте 8K токенов KV-cache весит уже примерно 4 ГБ. Всего при четырех параллельных запросах это около 16 ГБ.

Это и есть скрытая цена инференса, которая не так очевидна на первый взгляд.

Читать далее

Как я экономлю 80% контекста нейросетей при работе с логами

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели7.6K

Разаработанная фоновая утилита позволяет производить вставку сжатых логов с абсолютной прозрачностью для восприятия AI агентами. В статье описал свой путь к оптимизации сжатия до 80%.

Читать далее

Ближайшие события

maxpack: межфайловая дедупликация на версионных данных

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели5.2K

Разбор межфайловой дедупликации на версионных данных: почему обычная упаковка упирается в потолок и что меняется на CPython, Go и Node.js.

Читать далее

Simple diffusion – компактная модель генерации изображений

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.9K

Всем привет! Мы создаем простую, быструю и компактную диффузионную модель, которую можно обучать и запускать на обычных видеокартах, сохранив при этом высокое качество. Simple Diffusion (sdxs-1b) — это первый результат наших опытов, мы публикуем её как альфа‑версию под лицензией Apache-2.0 вместе с открытым кодом подготовки данных и обучения. https://huggingface.co/AiArtLab/sdxs-1b

TLDR; На обучение SDXL потребовалось ~6 млн долларов. Z‑Image говорят обучили всего за 600к. У нас была RTX-4080 и два чемодана  желание сделать небольшой прототип быстрой и дешевой модели на imagenet. В процессе мы немного увлеклись. Вероятно удалось создать модель примерно в сотни раз дешевле/быстрее относительно быстро обучаемой SDXL с генерацией близко к реальному времени в высоком разрешении, и без характерных проблем в анатомии, но качество пока в целом ниже (но надеемся будет выше).

Читать далее

Исследователи Кембриджа доказали, что вашей статьи не существует

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели17K

СРОЧНО. Исследователи из Отдела предиктивных реконструкций (Department of Predictive Reconstructions) Королевского колледжа Кембриджа (King’s College Cambridge) доказали, что любой письменный текст можно свести к минимальному генеративному промпту и восстановить с семантической достоверностью 98%. Редакция получила доступ к препубликационному черновику. Рынки реагируют. Подробности ниже.

Читать далее

TurboQuant. Новый алгоритм сжатия от Google

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели22K

Google Research выпустили TurboQuant - новый алгоритм сжатия данных, который сокращает объём кэш-памяти LLM как минимум в 6 раз и даёт ускорение до 8 раз. При этом заявляется отсутствие потерь в точности, что напрямую влияет на эффективность работы ИИ.

Читать далее

В каждом JPEG зашита модель вашей сетчатки. Буквально

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели62K

После того как я написал статью про то, что ваш монитор не умеет показывать бирюзовый и 65% видимых цветов для него просто не существуют, один мой знакомый (далекий правда от технической отрасли) спросил: «Окей, монитор врёт, а что тогда делает JPEG с оставшимися 35%?» И это хороший вопрос. Я полез в спеку, а через полчаса забыл, зачем вообще полез. Потому меня уже интересовало другое: ребята, которые в 1992-м финализировали этот стандарт, по сути заревёрсили человеческое зрение и запихнули его в алгоритм сжатия.

И я хочу вам про это рассказать, потому что это самый красивый кусок инженерии, который я видел. В той статье я разбирал, как мало мы на самом деле видим. Здесь — как мало нам на самом деле нужно видеть, чтобы мозг поверил, что видит всё. А потом я решил это проверить руками.

Читать далее

Гайд: Как работать с форматом PARQUET

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели8.2K

В прошлом году мы начали публиковать данные в каталоге «Если быть точным» в формате Parquet. Его придумали инженеры Twitter и Cloudera в 2013 году, и сегодня он стал стандартом хранения аналитических данных — его используют Google, Amazon, Netflix и большинство современных data-платформ. В этом гайде мы расскажем, как эффективно работать с данными в формате Parquet с помощью Python.

Читать далее

Видеокодек AV2 готов. Почему нам важны открытые стандарты

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели18K

Новые видеокодеки моментально улучшают жизнь миллионов людей. Тем не нужно прикладывать практически никаких усилий, разве что обновить железо или софт. После этого видеофайлы магически уменьшаются в размере, качество картинки становится лучше, видео в интернете перестаёт тормозить и т. д. Например, новый видеокодек AV2 уменьшает трафик на 30%.

Единственный недостаток — время кодирования увеличивается, потому что используются сложные интеллектуальные технологии (например, психофизические модели зрения и мозга, новые способы предсказания будущего (межкадровых изменений) по предыдущим кадрам, последние открытия в математике (вроде треллис-квантования). Появляется ощущение некоего волшебства. Вообще, эффективное сжатие напрямую связано с пониманием данных, то есть с уровнем интеллекта. Чем глубже понимание смысла, тем больше мы видим аналогий, паттернов, циклов и рекурсий, которые можно использовать для «упаковки» информации.

Как говорится, достаточно продвинутая технология неотличима от магии. Так и видеокодеки нового поколения — это настоящая программная магия.

Читать далее
1
23 ...