Files

127 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

# MiniCPM5-1B-rust (v0.2.0)
MiniCPM5-1B 模型的 Rust 推理实现,基于 [Burn](https://github.com/tracel-ai/burn) 框架。
## 特性
- 🔥 **Wgpu GPU 加速**:支持 CUDA / Metal / Vulkan / DX12 等多种 GPU 后端
- 🚀 **算子融合**:启用 fusion + autotune 优化,自动选择最优 kernel
- 📝 **流式输出**:实时生成文本,支持逐字输出
- 🧠 **思考模式**:支持开启模型的推理思考过程
- 📦 **纯 Rust**:无 C/C++ 依赖,跨平台编译简单
## 项目结构
```
MiniCPM5-1B-rust/
├── crates/
│ ├── minicpm-core/ # 核心模型实现(Transformer、Attention、FFN
│ ├── minicpm-inference/ # 推理引擎(生成、采样、tokenizer)
│ └── minicpm-convert/ # 模型转换库
└── examples/
├── convert/ # 模型转换示例(safetensors → Burn 格式)
└── wgpu-backend/ # Wgpu GPU 推理示例
```
## 快速开始
### 1. 准备模型
将 MiniCPM5-1B safetensors 模型放到 `MiniCPM5-1B/` 目录:
```
MiniCPM5-1B/
├── model-00000-of-00001.safetensors
├── config.json
└── tokenizer.json
```
### 2. 转换模型
```bash
cargo run --release -p convert
```
转换完成后会生成 `model/` 目录(全精度 f32,Burn mpk 格式)。
### 3. 运行推理
```bash
# 普通模式
cargo run --release -p wgpu-backend
# 开启思考模式
cargo run --release -p wgpu-backend -- --think
```
## 使用说明
### wgpu-backend 命令行参数
| 参数 | 说明 |
|------|------|
| `--think` | 开启思考模式,模型会在回答前进行推理思考 |
### GenerationConfig
```rust
GenerationConfig {
max_new_tokens: Some(1200), // 最大生成 token 数
temperature: 0.7, // 温度,越高越随机
top_p: 0.95, // nucleus sampling 参数
}
```
### 作为库使用
```rust
use burn::backend::{wgpu::WgpuDevice, Wgpu};
use minicpm_inference::{GenerationConfig, MiniCPM};
let device = WgpuDevice::default();
let model = MiniCPM::<Wgpu>::load(
"model/model",
"config.json",
"tokenizer.json",
&device,
)?;
let config = GenerationConfig {
max_new_tokens: Some(500),
temperature: 0.7,
top_p: 0.95,
};
// 流式生成
let stream = model.generate_stream("你好", false, &config)?;
for text in stream {
print!("{}", text);
}
```
## 发布构建
```bash
# Release 构建(启用 LTO + 最高优化级别)
cargo build --release
# 发布到 gitea registry
cargo publish -p minicpm-core --registry gitea
cargo publish -p minicpm-inference --registry gitea
cargo publish -p minicpm-convert --registry gitea
```
Release profile 配置:
- `opt-level = 3`:最高优化级别
- `lto = true`:链接时优化
- `codegen-units = 1`:单代码生成单元,最大化优化
## 依赖
- Rust 1.75+
- 支持 Wgpu 的 GPUCUDA / Metal / Vulkan / DX12
## License
MIT