Files
MiniCPM5-1B-rust/MODEL_GUIDE.md
T

4.1 KiB
Raw Blame History

模型格式与使用指南

模型格式说明

项目支持三种模型格式,适用于不同场景:

格式 精度 文件大小 适用后端 速度
full f32 全精度 ~2.5GB Flex / Wgpu 基准
half f16 半精度 ~1.2GB Flex / Wgpu 较快
q8 INT8 量化 ~650MB Flex (推荐) 最快

1. 全精度模型 (full)

  • 目录:model/
  • 文件:model.mpk
  • 精度:FP32
  • 适用场景:精度优先、GPU 推理

2. 半精度模型 (half)

  • 目录:model_half/
  • 文件:model.mpk
  • 精度:FP16
  • 适用场景:GPU 推理、显存有限

3. INT8 量化模型 (q8)

  • 目录:model_q8/
  • 文件:model.q8.bin + model.q8.json
  • 精度:INT8 + 缩放因子
  • 适用场景:CPU 推理、内存有限
  • 特性:SIMD 指令集加速(AVX2/SSE

使用方法

命令行参数

所有示例都支持以下命令行参数:

--full   # 使用全精度模型
--half   # 使用半精度模型
--q8     # 使用 INT8 量化模型

重要:参数前需要加 -- 与 cargo 分隔:

# 正确
cargo run --release -p flex-backend -- --q8
cargo run --release -p wgpu-backend -- --half

# 错误(参数会被 cargo 吃掉)
cargo run --release -p flex-backend --q8

Flex 后端(CPU

# 全精度
cargo run --release -p flex-backend -- --full

# 半精度
cargo run --release -p flex-backend -- --half

# INT8 量化(推荐,最快)
cargo run --release -p flex-backend -- --q8

最佳性能编译

RUSTFLAGS="-C target-cpu=native" cargo build --release -p flex-backend
cargo run --release -p flex-backend -- --q8

Wgpu 后端(GPU

# 全精度(推荐)
cargo run --release -p wgpu-backend -- --full

# 半精度
cargo run --release -p wgpu-backend -- --half

# INT8 量化(不推荐,性能较差)
cargo run --release -p wgpu-backend -- --q8

注意

  • WGPU 后端下,q8 量化层使用 CPU 实现,会频繁在 CPU-GPU 间传输数据,性能可能不如全精度
  • GPU 推理建议使用 --full--half

模型转换

使用 convert 示例转换模型:

# 全精度
cargo run --release -p convert -- --full

# 半精度
cargo run --release -p convert -- --half

# INT8 量化
cargo run --release -p convert -- --q8

# 全部转换
cargo run --release -p convert -- --all

源模型目录:MiniCPM5-1B/(需要包含 safetensors 格式模型)

性能对比(参考)

以 MiniCPM5-1B 模型为例:

后端 格式 内存占用 推理速度 推荐指数
Flex CPU q8 ~1GB
Flex CPU half ~1.5GB
Flex CPU full ~3GB
Wgpu GPU full ~2.5GB
Wgpu GPU half ~1.5GB
Wgpu GPU q8 ~1GB

注:实际性能取决于 CPU/GPU 型号、内存带宽等因素

启动时的输出说明

程序启动时会打印配置信息,确认使用的模型格式:

========================================
后端: Flex (纯 Rust CPU)
模式: INT8 量化 (SIMD 加速)
模型目录: model_q8
配置文件: MiniCPM5-1B/config.json
  特性: INT8 量化 + SIMD 加速,推荐使用
  编译建议: RUSTFLAGS="-C target-cpu=native" cargo build --release
========================================

如果模式和模型目录与预期不符,请检查命令行参数是否正确传递。

常见问题

Q: 加了 --q8 参数但感觉没变化?

A: 检查是否加了 -- 分隔符。正确用法:cargo run --release -p flex-backend -- --q8

Q: WGPU 上 q8 反而更慢?

A: 正常现象。q8 量化是 CPU 优化的,GPU 上建议用 full 或 half。

Q: half 模型速度和 full 差不多?

A: Flex CPU 后端上 f16 运算会转成 f32,速度差异不大。WGPU GPU 后端上显存占用会明显减少。

Q: 怎么确认用的是哪个模型?

A: 看启动时的打印信息,"模式"和"模型目录"字段会显示当前配置。