BF16-модель и все её кванты.Меньше, чем один BF16-файл.
SeedPack сжимает репозиторий GGUF в один архив без потерь. Весь Qwen3-0.6B, 10.95 ГБ, занимает 781.7 МБ.
Тридцать файлов, всего 10.95 ГБ: BF16-модель (1.20 ГБ), 25 квантов от 215 до 844 МБ и четыре маленьких файла. В архиве SeedPack BF16-модель занимает 780.62 МБ, каждый квант — от 9 до 28 КБ, всё вместе — 781.68 МБ.
Настоящие размеры из seedpack list опубликованного архива. Каждый квант занимает от 9 до 28 КБ.
Кванты не хранятся. Они вырастают заново.
Квантизаторы llama.cpp детерминированы. Поэтому SeedPack хранит самые точные веса один раз и пересчитывает из них каждый квант на видеокарте.
Сохранить семя
BF16-модель кладётся один раз, через энтропийный кодер для весов BF16: 65.2% от её размера.
Вырастить кванты
Каждый квант заново вычисляется из семени на GPU — бит в бит совпадающим CUDA-портом
ggml-quants.cиз llama.cpp, с imatrix репозитория.Оставить разницу
Там, где пересчитанный блок расходится с опубликованным файлом, остаток кодируется вероятностями самого квантизатора. Одинаковые тензоры хранятся один раз.
Проверить каждый байт
При распаковке проверяются BLAKE3 каждого файла и CRC32 каждой части архива; записываются только прошедшие проверку файлы.
В репозитории нет BF16? Семенем становится самый точный квант (UD-Q8_K_XL, Q8_0 и так далее). 21 квант Qwen3.5-2B, 28.13 ГБ, сжимается до 2.55 ГБ с imatrix и до 3.02 ГБ без неё.
Двенадцать архиваторов. Один репозиторий.
Все 30 файлов unsloth/Qwen3-0.6B-GGUF, 10.95 ГБ, на одной машине. Каждый архив распакован и проверен.
30 файлов, 10.95 ГБ. Чем меньше, тем лучше.
- SeedPack7.14%7.14%17.7 s · 618 MB/s / 11.1 s · 984 MB/s
- lmz 1.3.041.47%41.47%38.3 s · 286 MB/s / 6.1 s · 1,786 MB/s
- HF Xet*46.68%46.68%
- zstd 1.5.7 -19 --long=3059.99%59.99%576.3 s · 19 MB/s / 17.7 s · 620 MB/s
- zstd 1.5.7 -3 --long=3060.36%60.36%15.3 s · 715 MB/s / 13.4 s · 816 MB/s
- 7-Zip 23.01 -mx993.26%93.26%833.3 s · 13 MB/s / 31.5 s · 347 MB/s
- xz 5.4.1 -693.36%93.36%465.9 s · 24 MB/s / 100.7 s · 109 MB/s
- bzip2 -993.87%93.87%181.0 s · 60 MB/s / 88.5 s · 124 MB/s
- brotli 1.2 -q794.25%94.25%74.9 s · 146 MB/s / 22.3 s · 492 MB/s
- ZipNN 0.5.4†94.34%94.34%10.7 s · 1,024 MB/s / 1.6 s · 6,858 MB/s
- gzip -994.51%94.51%70.7 s · 155 MB/s / 11.2 s · 977 MB/s
- lz4 1.9.4 -998.51%98.51%44.4 s · 246 MB/s / 9.1 s · 1,208 MB/s
Где SeedPack проигрывает: в скорости. При распаковке он пересчитывает кванты, поэтому ZipNN и lmz распаковывают быстрее. А на одиночном файле выигрыш небольшой.
Повторить замер: hf_bench.pyГде это окупается
SeedPack выигрывает, когда несколько квантов одних и тех же весов хранятся или передаются вместе.
Публикация семейства моделей
Выложите весь репозиторий на Hub одним файлом. seedpack list читает по сети только индекс; люди достают нужные кванты, сверенные с хешами оригинала.
Библиотека моделей на одном диске
Храните все кванты всех моделей, которые тестируете. unsloth/Qwen3.5-2B-GGUF занимает 2.91 ГБ вместо 34.57 ГБ.
Машины без интернета
На изолированный компьютер везите один файл, а не папку на десятки гигабайт. Архив, собранный на Windows, распаковывается на Linux бит в бит, и наоборот.
Зеркала и трафик
Хранение и исходящий трафик оплачиваются побайтно. Те же 30 файлов занимают в 14 раз меньше байтов.
Сравнение квантов
Сравнивайте IQ1 с Q8, не держа на диске 26 файлов. Маска достаёт ровно те, что вы сейчас тестируете.
Настоящие команды, настоящий вывод.
Сняты с запусков на опубликованном архиве. Записываются только запрошенные файлы; семя декодируется в памяти.
$ seedpack list hf://neurosquad/Qwen3-0.6B-SEEDPACKhf://neurosquad/Qwen3-0.6B-SEEDPACK: varc 0.1, M29 model repo: M28 with the BF16 v2 base codec (R2), created 2026-10-23T21:11:56name size stored roleQwen3-0.6B-BF16.gguf 1.20 GB 780.62 MB baseQwen3-0.6B-IQ4_NL.gguf 381.57 MB 14.03 KB derivedQwen3-0.6B-Q4_K_M.gguf 396.71 MB 14.60 KB derivedQwen3-0.6B-Q8_0.gguf 639.45 MB 21.99 KB derivedQwen3-0.6B-UD-IQ1_S.gguf 214.64 MB 8.89 KB derivedQwen3-0.6B-UD-Q8_K_XL.gguf 844.29 MB 28.30 KB derived…imatrix_unsloth.dat 1.15 MB (bundle) file30 files, 10.95 GB -> archive 781.68 MB (7.14%)
seedpack 0.1.0 на RTX 5070. «…» — пропущенные строки.
Один pip install.
Чистый Python на PyPI. Не нужны ни CUDA Toolkit, ни компилятор: NVRTC, nvJitLink и заголовки CUDA ставятся из pip.
pip install seedpackSEEDPACK_CACHE переносит кэш.Чего он пока не умеет
SeedPack молод. Вот как обстоят дела сейчас.
Сейчас
- Для упаковки и распаковки нужна видеокарта NVIDIA.
- Одиночный файл сжимается слабо: один Q8_0 — до 90.1%, один Q4_K_M — до 93.8%, один BF16 — до 65.2%. Большой выигрыш даёт только набор квантов одних и тех же весов.
- Распаковка заново запускает квантизаторы: 11.1 с на наборе в 10.95 ГБ, у lmz — 6.1 с.
- Проверено на репозиториях Qwen3 и Qwen3.5 от Unsloth, на RTX 5070 под Windows 10 и Ubuntu (WSL2).
- Если опубликованная imatrix отличается от той, которой квантовали, часть блоков предсказывается неточно. Файлы остаются точными, растёт только архив (33 МБ на все кванты Qwen3.5-2B).
В планах
- Распаковка без видеокарты NVIDIA — на CPU-квантизаторах самого ggml
- Проверка побайтовой распаковки на разных поколениях GPU, от Turing до Blackwell
- Другие издатели и архитектуры: Llama, Gemma, Mistral, MoE-модели, от 7B до 70B
- Быстрые IQ-квантизаторы на GPU и распаковка прямо во время скачивания
- Файнтюны как разница с базовой моделью
Вопросы
Это действительно без потерь?
Да. Каждый файл возвращается побайтово: SHA-256 каждого распакованного файла совпадает с исходным репозиторием. При распаковке проверяются BLAKE3 каждого файла и CRC32 каждой части архива; файл, не прошедший проверку, не записывается.
Нужна ли видеокарта для распаковки?
Пока да: NVIDIA, Turing или новее, с драйвером CUDA 13. Кванты пересчитываются на ней. Распаковка на CPU — в планах.
Мне нужен один квант. Есть ли смысл?
Ради одной загрузки — нет: x с Hub один раз скачивает весь архив (781.7 МБ для Qwen3-0.6B), а один Q4_K_M весит 397 МБ. SeedPack окупается, когда нужно несколько квантов, весь набор или хранить их: после первой загрузки любой квант достаётся из локального кэша за секунды.
А если в репозитории нет BF16-файла?
Семенем становится самый точный квант, остальные выводятся из него. Если нет imatrix, квантизаторы запускаются с единичными весами или без весов — для каждого тензора берётся вариант с меньшим остатком. 21 квант Qwen3.5-2B сжимается до 9.06% с imatrix и до 10.74% без неё.
С какими моделями он работает?
Принимает любые GGUF и любые другие файлы. Лучше всего сжимает, когда кванты сделаны llama.cpp из одних и тех же весов: именно это делает их предсказуемыми; варианты квантизаторов старых версий llama.cpp тоже есть. Пока проверен на репозиториях Qwen3 и Qwen3.5 от Unsloth.
Откроют ли распакованные файлы llama.cpp, Ollama или LM Studio?
Да. На выходе — исходные GGUF-файлы, поэтому их открывает любая среда, которая понимает GGUF.
Формат .varc стабилен?
SeedPack сейчас в версии 0.1.0. Архив — это последовательность частей с индексом в конце: это даёт произвольный доступ и позволяет list читать по сети только индекс. Письменная спецификация и версии формата — в планах.
Как SeedPack связан с NeuroSquad?
SeedPack — проект NeuroSquad с открытым кодом под Apache-2.0. Это отдельная утилита командной строки: чтобы пользоваться ею, не нужны ни приложение NeuroSquad, ни аккаунт.
Попробуйте на настоящем архиве.
Загляните в опубликованный архив Qwen3-0.6B: list читает только его индекс.
seedpack list hf://neurosquad/Qwen3-0.6B-SEEDPACK