Expand description
# 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 或专用加速器)上,推理速度可以显著提升; 本模块提供了数据块的定义和量化/反量化的实现。 包括对不同数据类型的量化支持,以及并行处理的扩展。
Re-exports§
pub extern crate digit_layout;
Modules§
- types
- 类型定义模块
Structs§
- Delta
Min - 全局缩放因子和最小值
- IQ1M
- IQ1M 量化结构体
- IQ1S
- IQ1S 量化结构体
- IQ2S
- IQ2S 量化结构体
- IQ2XS
- IQ2XS 量化结构体
- IQ2XXS
- IQ2XXS 量化结构体
- IQ3S
- IQ3S 量化结构体
- IQ3XXS
- IQ3XXS 量化结构体
- IQ4NL
- IQ4NL 量化结构体
- IQ4XS
- IQ4XS 量化结构体
- Q2K
- Q2K 量化结构体
- Q3K
- Q3K 量化结构体
- Q4K
- Q4K 量化结构体
- Q4_0
- Q4_0 量化结构体
- Q4_
0_ 4_ 4 - Q4_0_4_4 量化结构体
- Q4_
0_ 4_ 8 - Q4_0_4_8 量化结构体
- Q4_
0_ 8_ 8 - Q4_0_8_8 量化结构体
- Q4_1
- Q4_1 量化结构体
- Q5K
- Q5K 量化结构体
- Q5_0
- Q5_0 量化结构体
- Q5_1
- Q5_1 量化结构体
- Q6K
- Q6K 量化结构体
- Q8K
- Q8K 量化结构体
- Q8_0
- Q8_0 量化结构体
- Q8_1
- Q8_1 量化结构体
- bf16
- A 16-bit floating point type implementing the
bfloat16
format. - f16
- A 16-bit floating point type implementing the IEEE 754-2008 standard
binary16
a.k.a “half” format.
Enums§
- Quantize
Error - 量化错误类型