SeedPack
开源 · Apache-2.0

BF16 模型和它的全部量化版本,比一个 BF16 文件还小。

SeedPack 把 GGUF 仓库无损打包成一个归档。整个 Qwen3-0.6B 共 10.95 GB,只占 781.7 MB。

三十个文件,共 10.95 GB:BF16 模型(1.20 GB)、25 个 215 到 844 MB 的量化版本和四个小文件。在 SeedPack 归档里,BF16 模型占 780.62 MB,每个量化版本只占 9 到 28 KB,合计 781.68 MB。

unsloth/Qwen3-0.6B-GGUF30 个文件
10.95 GB781.68 MB7.14%
BF16 种子量化版本,由种子长出小文件

真实大小,来自已发布归档的 seedpack list。每个量化版本只占 9 到 28 KB。

7.14%的原始大小:整个 unsloth/Qwen3-0.6B-GGUF,10.95 GB,归档仅 781.7 MB
1.1 MB25 个量化版本加四个小文件,在 BF16 种子之外一共只多这么多
逐字节每个文件都按位还原,SHA-256 与原文件一致
6 秒在 RTX 5070 上从归档取出一个 397 MB 的量化版本并完成校验

量化版本不靠存储,而是重新长出来。

llama.cpp 的量化器是确定性的。所以 SeedPack 只存一次最精确的权重,再在 GPU 上由它重新算出每个量化版本。

  1. 存下种子

    BF16 模型只存一次,使用专为 BF16 权重设计的熵编码器:压到原大小的 65.2%。

  2. 长出量化版本

    每个量化版本都在 GPU 上由种子重新计算,用的是 llama.cpp ggml-quants.c 的逐位一致 CUDA 移植,并配合仓库自带的 imatrix。

  3. 只留差异

    重新计算的块与发布文件不一致时,残差用量化器自身的概率编码。不同文件里相同的张量只存一次。

  4. 校验每个字节

    解包时校验每个文件的 BLAKE3 和每个数据块的 CRC32,只写出通过校验的文件。

仓库里没有 BF16?最精确的量化版本(UD-Q8_K_XL、Q8_0 等)就成为种子。Qwen3.5-2B 的 21 个量化版本共 28.13 GB,带 imatrix 压到 2.55 GB,不带则为 3.02 GB。

基准测试

十二款压缩工具,同一个仓库。

unsloth/Qwen3-0.6B-GGUF 的全部 30 个文件,10.95 GB,同一台机器。每个归档都解包并校验过。

30 个文件,10.95 GB。越小越好。

  • 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 GB)、Core i7-8700K、32 GB 内存、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 GB,而不是 34.57 GB。

离线机器

给隔离网络的电脑带一个文件,而不是几十 GB 的文件夹。在 Windows 上打包的归档能在 Linux 上逐位还原,反之亦然。

镜像与带宽

存储和出口流量按字节计费。同样的 30 个文件,字节数少到 1/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。

PyPI 上的纯 Python 包。不需要 CUDA Toolkit,也不需要编译器:NVRTC、nvJitLink 和 CUDA 头文件都由 pip 安装。

pip install seedpack

seedpack 0.1.0 · Apache-2.0PyPIREADME

NVIDIA 显卡Turing(RTX 20 系列)或更新,CUDA 13 驱动(R580 或更新)。
Python 3.11+已在 Windows 10 上用 3.11、在 WSL2 的 Ubuntu 上用 3.14 测试。
Windows 或 Linux归档可以在两者之间逐位迁移,双向都行。
首次运行为你的显卡编译量化器,约 15 秒,之后缓存。用 SEEDPACK_CACHE 可以更改缓存位置。

它暂时还做不到的

SeedPack 还很年轻。以下是它目前的状态。

现在

  • 打包和解包都需要 NVIDIA 显卡。
  • 单个文件收益不大:单个 Q8_0 压到 90.1%,单个 Q4_K_M 压到 93.8%,单个 BF16 压到 65.2%。大幅压缩需要同一套权重的多个量化版本。
  • 解包要重新运行量化器:10.95 GB 的测试集需 11.1 秒,lmz 为 6.1 秒。
  • 已在 Unsloth 的 Qwen3 和 Qwen3.5 仓库上测试,硬件为 RTX 5070,系统为 Windows 10 和 Ubuntu(WSL2)。
  • 如果发布的 imatrix 与量化时用的不同,部分块会预测不准。文件依然准确,只是归档变大(Qwen3.5-2B 全部量化版本多 33 MB)。

路线图

  • 无需 NVIDIA 显卡解包,基于 ggml 自带的 CPU 量化器
  • 在不同代 GPU(从 Turing 到 Blackwell)上验证逐位解包
  • 更多发布者和架构:Llama、Gemma、Mistral、MoE 模型,7B 到 70B
  • 更快的 GPU IQ 量化器,以及边下载边解包
  • 把微调模型存为相对基础模型的差异
完整路线图

常见问题

真的无损吗?

是的。每个文件都逐字节还原:每个解出文件的 SHA-256 都与原仓库一致。解包时校验每个文件的 BLAKE3 和每个数据块的 CRC32,未通过校验的文件不会写出。

解包需要显卡吗?

目前需要:Turing 或更新的 NVIDIA 显卡,配 CUDA 13 驱动。量化版本要在显卡上重新计算。CPU 解包已列入路线图。

我只要一个量化版本,值得用吗?

如果只下载一次,不值得:从 Hub 执行 x 会先下载整个归档(Qwen3-0.6B 为 781.7 MB),而单个 Q4_K_M 只有 397 MB。需要多个量化版本、整套文件或长期保存时,SeedPack 才划算:首次下载后,任何量化版本都能在几秒内从本地缓存取出。

仓库里没有 BF16 文件怎么办?

最精确的量化版本成为种子,其余由它推导。没有 imatrix 时,量化器以单位权重或无权重运行,每个张量取残差更小的方案。Qwen3.5-2B 的 21 个量化版本带 imatrix 压到 9.06%,不带为 10.74%。

支持哪些模型?

任何 GGUF 和其他文件都能放进去。量化版本由 llama.cpp 从同一套权重生成时压缩效果最好,因为这正是它们可预测的原因;也包含旧版 llama.cpp 的量化器变体。目前已在 Unsloth 的 Qwen3 和 Qwen3.5 仓库上测试。

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 出品