SeedPack
Открытый код · Apache-2.0

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 МБ.

unsloth/Qwen3-0.6B-GGUFфайлов: 30
10.95 GB781.68 MB7.14%
BF16-семякванты, выращенные из семенималенькие файлы

Настоящие размеры из seedpack list опубликованного архива. Каждый квант занимает от 9 до 28 КБ.

7.14%от исходного размера: весь unsloth/Qwen3-0.6B-GGUF, 10.95 ГБ, в архиве на 781.7 МБ
1.1 МБна все 25 квантов и четыре маленьких файла вместе, сверх BF16-семени
Побайтовокаждый файл восстанавливается бит в бит, его SHA-256 совпадает с оригиналом
6 счтобы достать из архива один квант на 397 МБ и проверить его, на RTX 5070

Кванты не хранятся. Они вырастают заново.

Квантизаторы llama.cpp детерминированы. Поэтому SeedPack хранит самые точные веса один раз и пересчитывает из них каждый квант на видеокарте.

  1. Сохранить семя

    BF16-модель кладётся один раз, через энтропийный кодер для весов BF16: 65.2% от её размера.

  2. Вырастить кванты

    Каждый квант заново вычисляется из семени на GPU — бит в бит совпадающим CUDA-портом ggml-quants.c из llama.cpp, с imatrix репозитория.

  3. Оставить разницу

    Там, где пересчитанный блок расходится с опубликованным файлом, остаток кодируется вероятностями самого квантизатора. Одинаковые тензоры хранятся один раз.

  4. Проверить каждый байт

    При распаковке проверяются 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%17.7 s · 618 MB/s / 11.1 s · 984 MB/s
  • lmz 1.3.041.47%38.3 s · 286 MB/s / 6.1 s · 1,786 MB/s
  • HF Xet*46.68%
  • zstd 1.5.7 -19 --long=3059.99%576.3 s · 19 MB/s / 17.7 s · 620 MB/s
  • zstd 1.5.7 -3 --long=3060.36%15.3 s · 715 MB/s / 13.4 s · 816 MB/s
  • 7-Zip 23.01 -mx993.26%833.3 s · 13 MB/s / 31.5 s · 347 MB/s
  • xz 5.4.1 -693.36%465.9 s · 24 MB/s / 100.7 s · 109 MB/s
  • bzip2 -993.87%181.0 s · 60 MB/s / 88.5 s · 124 MB/s
  • brotli 1.2 -q794.25%74.9 s · 146 MB/s / 22.3 s · 492 MB/s
  • ZipNN 0.5.4†94.34%10.7 s · 1,024 MB/s / 1.6 s · 6,858 MB/s
  • gzip -994.51%70.7 s · 155 MB/s / 11.2 s · 977 MB/s
  • lz4 1.9.4 -998.51%44.4 s · 246 MB/s / 9.1 s · 1,208 MB/s
* оценка по модели формата, а не замер · † работает в памяти внутри WSL, диск не учитываетсяRTX 5070 (12 ГБ), Core i7-8700K, 32 ГБ ОЗУ, NVMe, Windows 10. SeedPack 0.1.0; его время включает запуск процесса и инициализацию CUDA (2–4 с).

Где 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-SEEDPACK
hf://neurosquad/Qwen3-0.6B-SEEDPACK: varc 0.1, M29 model repo: M28 with the BF16 v2 base codec (R2), created 2026-10-23T21:11:56
name size stored role
Qwen3-0.6B-BF16.gguf 1.20 GB 780.62 MB base
Qwen3-0.6B-IQ4_NL.gguf 381.57 MB 14.03 KB derived
Qwen3-0.6B-Q4_K_M.gguf 396.71 MB 14.60 KB derived
Qwen3-0.6B-Q8_0.gguf 639.45 MB 21.99 KB derived
Qwen3-0.6B-UD-IQ1_S.gguf 214.64 MB 8.89 KB derived
Qwen3-0.6B-UD-Q8_K_XL.gguf 844.29 MB 28.30 KB derived
…
imatrix_unsloth.dat 1.15 MB (bundle) file
30 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 seedpack

seedpack 0.1.0 · Apache-2.0PyPIREADME

Видеокарта NVIDIATuring (RTX 20xx) или новее, с драйвером CUDA 13 (R580 или новее).
Python 3.11+Проверено на 3.11 под Windows 10 и на 3.14 под Ubuntu в WSL2.
Windows или LinuxАрхивы переносятся между ними бит в бит, в обе стороны.
Первый запускКомпилирует квантизаторы под вашу видеокарту примерно за 15 с и кэширует их. Переменная SEEDPACK_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
Проект NeuroSquad