2 unstable releases
Uses new Rust 2024
| 0.1.0 | Jun 3, 2025 |
|---|---|
| 0.0.0 | Nov 25, 2024 |
#536 in Algorithms
12,226 downloads per month
Used in 3 crates
(via ggus)
44KB
1K
SLoC
ggml-quants
ggml-quants 是一个 Rust 库,用于实现 ggml 定义的量化数据类型及其对应的量化和反量化算法。
项目简介
ggml-quants 提供了一组高效的量化工具,用于将浮点数数据压缩为更小的量化格式(如 Q4_0, Q8_1 等),并支持从量化数据还原为浮点数。
该库的核心功能包括:
- 定义各种量化格式数据结构;
- 提供通用的量化和反量化接口;
- 基于
rayon并行加速正反量化计算;
使用示例
use ggml_quants::{Quantize, Q8_1};
// 原始浮点数数据
let data: [f32; 32] = [
0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8,
0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6,
1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4,
2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2,
];
// 量化数据
let quantized = Q8_1::quantize(&data);
// 反量化数据
let dequantized: [f32; 32] = quantized.dequantize();
应用场景
在 gguf 项目中,模型权重通常以浮点数形式存储(如 f32 或 f16),这会占用大量内存,成为限制性能的主要因素。通过使用 ggml-quants 提供的量化工具,可以在能够容忍的精度损失下,将权重从 f32 压缩为更小的格式(如 Q4_0 或 Q8_1),从而:
- 减少存储空间:降低模型部署对硬件内存的需求;
- 加快加载速度:量化后的权重文件更小,加载时间显著减少;
- 提升推理效率:在支持量化计算的硬件(如 GPU 或专用加速器)上,推理速度可以显著提升;
Dependencies
~1.5MB
~30K SLoC