Crate ggml_quants

Crate ggml_quants 

Source
Expand description

# ggml-quants

CI Latest version Documentation license

GitHub Issues GitHub Pull Requests GitHub repo size GitHub code size in bytes GitHub contributors GitHub commit activity

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 项目中,模型权重通常以浮点数形式存储(如 f32f16),这会占用大量内存,成为限制性能的主要因素。通过使用 ggml-quants 提供的量化工具,可以在能够容忍的精度损失下,将权重从 f32 压缩为更小的格式(如 Q4_0Q8_1),从而:

  • 减少存储空间:降低模型部署对硬件内存的需求;
  • 加快加载速度:量化后的权重文件更小,加载时间显著减少;
  • 提升推理效率:在支持量化计算的硬件(如 GPU 或专用加速器)上,推理速度可以显著提升; 本模块提供了数据块的定义和量化/反量化的实现。 包括对不同数据类型的量化支持,以及并行处理的扩展。

Re-exports§

pub extern crate digit_layout;

Modules§

types
类型定义模块

Structs§

DeltaMin
全局缩放因子和最小值
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§

QuantizeError
量化错误类型

Traits§

DataBlock
数据块定义
QuantExt
并行量化和反量化的扩展特性
Quantize
量化和反量化的特性