update doc
RustInfer是一个用Rust语言实现的高性能大语言模型(LLM)推理引擎,手写CUDA算子,支持BF16与INT4(AWQ)量化推理,单请求decode吞吐量超越vLLM。
高性能推理内核架构 - 从零成本抽象到显存优化
RustInfer 采用分层模块化架构,核心包括:
测试环境: H20, Batch Size=1, BF16, CUDA Graph enabled, vLLM compile disabled, temperature = 0, topk = None
Batch Size=1, compressed-tensors K-packed INT4, BF16 activation
注意: 长序列性能受到 flashdecode 影响,输出越长越慢。
v0.7.0 优化路径(259 → 281 tok/s, Qwen3-4B):
RustInfer 支持 Z-Image 系列模型进行高质量文生图推理,完全使用 Rust + CUDA 实现,无需 Python 依赖。
测试环境: H20 GPU, BF16 精度, CUDA Graph 优化
Prompt: 一只可爱的橘色小猫咪,戴着白色围裙和厨师帽,在温馨明亮的厨房里做饭,阳光透过窗户洒进来,灶台上有一口冒着热气的锅,小猫用锅铲翻炒着五颜六色的蔬菜,表情专注又开心,厨房里摆放着绿植和可爱的厨房用品,温暖治愈的氛围,高清细腻,皮克斯风格
1. 下载模型
# Z-Image-Turbo(推荐,极速生成) huggingface-cli download Tongyi-MAI/Z-Image-Turbo --local-dir ./Z-Image-Turbo # Z-Image(完整版,更高质量) huggingface-cli download Tongyi-MAI/Z-Image --local-dir ./Z-Image
2. Rust 代码示例
use infer_worker::model::diffusion::z_image::{ZImagePipeline, DiffusionRequest}; use infer_worker::base::device::DeviceType; // 加载模型 let mut pipeline = ZImagePipeline::from_pretrained( "/path/to/Z-Image-Turbo", DeviceType::Cuda(0) )?; // Warmup(首次运行,预热 CUDA kernel) pipeline.warmup_for(1024, 1024)?; // 生成图片 let request = DiffusionRequest { prompt: "一只可爱的橘猫在厨房做饭,皮克斯风格".to_string(), height: 1024, width: 1024, num_inference_steps: 2, // Turbo 用 2 步,Full 用 28-50 步 guidance_scale: 1.0, // Turbo 用 1.0,Full 用 4.5 seed: Some(42), ..Default::default() }; let output = pipeline.generate(&request)?; // output.output: [1, 3, H, W] 的 RGB 张量,值域 [0, 255]
3. 运行测试
# Z-Image-Turbo 测试 cargo test --lib model::diffusion::z_image::pipeline::tests::test_pipeline_generate_cuda \ --release -- --nocapture --ignored # Z-Image 完整版测试 cargo test --lib model::diffusion::z_image::pipeline::tests::test_pipeline_z_image_full_cuda \ --release -- --nocapture --ignored
prompt
height
width
num_inference_steps
guidance_scale
seed
RustInfer/ ├── crates/ │ ├── infer-protocol/ # 通信协议定义(MessagePack) │ ├── infer-scheduler/ # 独立推理引擎进程 │ ├── infer-worker/ # 核心推理库 │ │ ├── base/ # 内存管理、分配器 │ │ ├── tensor/ # 张量系统(零拷贝) │ │ ├── op/ # 算子库(CPU/CUDA) │ │ ├── model/ # 模型实现(Llama3 / Qwen3) │ │ └── cuda/ # CUDA集成 │ ├── infer-server/ # HTTP API服务器(Axum) │ │ ├── api/ # OpenAI兼容端点 │ │ ├── chat/ # 聊天模板 │ │ └── zmq_client.rs # ZMQ客户端 │ └── infer-frontend/ # Web UI(Dioxus WASM) ├── DEVELOPERS.md # 开发者文档(架构深度解析) ├── README.md # 本文件 └── Cargo.toml # 工作区配置
# Ubuntu/Debian sudo apt-get update sudo apt-get install clang libclang-dev pkg-config libssl-dev # OpenBLAS(CPU后端) sudo apt-get install libopenblas-dev # 或使用Conda conda install conda-forge::libclang anaconda::openssl
git clone https://github.com/Vinci-hit/RustInfer.git cd RustInfer
# CPU版本 cargo build --release # CUDA版本(需要CUDA toolkit) cargo build --release --features cuda
注意: build.rs 会自动检测GPU计算能力(通过 nvidia-smi),也可通过 CUDA_ARCH=sm_90 环境变量手动指定。
build.rs
CUDA_ARCH=sm_90
先下载测试模型(Llama-3.2-1B-Instruct):
uv run hf download unsloth/Llama-3.2-1B-Instruct --local-dir ./Llama-3.2-1B-Instruct
# 基础测试 cd RustInfer/crates/infer-worker cargo test # CUDA性能测试 cargo test test_llama3_cuda_performance --release -- --nocapture --ignored # CPU推理测试 cargo test test_llama3_cpu_loading_and_generation --release -- --nocapture --ignored
下载地址:
支持格式:
测试环境: H20, Qwen3-4B, Batch Size=1
发布日期: 2026-04
核心改进:
__ldg
性能:
发布日期: 2026-01
发布日期: 2025-10
CUDA内存池化 (/crates/infer-worker/src/base/allocator.rs)
/crates/infer-worker/src/base/allocator.rs
零拷贝模型加载 (/crates/infer-worker/src/model/loader.rs)
/crates/infer-worker/src/model/loader.rs
Workspace预分配 (/crates/infer-worker/src/model/llama3.rs)
/crates/infer-worker/src/model/llama3.rs
CUDA Graph捕获 (/crates/infer-worker/src/cuda/config.rs)
/crates/infer-worker/src/cuda/config.rs
Flash Attention (/crates/infer-worker/src/op/kernels/cuda/flash_attn_gqa/)
/crates/infer-worker/src/op/kernels/cuda/flash_attn_gqa/
算子融合
手写 BF16 GEMV kernel
INT4 AWQ 量化推理
BF16混合精度
中优先级:
低优先级:
详细技术实现指南请参阅 DEVELOPERS.md
请参阅 DEVELOPERS.md 中的详细模板和示例。
关键步骤:
Op
参考 /crates/infer-worker/src/model/llama3.rs 实现:
完整指南: DEVELOPERS.md
Apache License 2.0 - 详见 LICENSE
灵感来源:
技术栈:
如果这个项目对你有帮助,请给我们一个 ⭐ Star!
Made with ❤️ and 🦀 Rust
GitHub • Issues
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
RustInfer: Rust实现的高性能LLM推理引擎
RustInfer是一个用Rust语言实现的高性能大语言模型(LLM)推理引擎,手写CUDA算子,支持BF16与INT4(AWQ)量化推理,单请求decode吞吐量超越vLLM。
🏗️ 核心架构
高性能推理内核架构 - 从零成本抽象到显存优化
RustInfer 采用分层模块化架构,核心包括:
📊 性能对比:RustInfer vs vLLM
Qwen3-4B
Llama-3.2-1B-Instruct
INT4 AWQ 量化推理
v0.7.0 优化路径(259 → 281 tok/s, Qwen3-4B):
🎨 文生图(Text-to-Image)
RustInfer 支持 Z-Image 系列模型进行高质量文生图推理,完全使用 Rust + CUDA 实现,无需 Python 依赖。
支持的模型
效果展示
Prompt: 一只可爱的橘色小猫咪,戴着白色围裙和厨师帽,在温馨明亮的厨房里做饭,阳光透过窗户洒进来,灶台上有一口冒着热气的锅,小猫用锅铲翻炒着五颜六色的蔬菜,表情专注又开心,厨房里摆放着绿植和可爱的厨房用品,温暖治愈的氛围,高清细腻,皮克斯风格
快速使用
1. 下载模型
2. Rust 代码示例
3. 运行测试
参数说明
promptheight/widthnum_inference_stepsguidance_scaleseed技术特性
项目结构
🚀 快速开始
1. 安装依赖
2. 克隆仓库
3. 构建项目
注意:
build.rs会自动检测GPU计算能力(通过 nvidia-smi),也可通过CUDA_ARCH=sm_90环境变量手动指定。4. 运行测试
先下载测试模型(Llama-3.2-1B-Instruct):
📦 支持的模型
Llama 3 系列
Qwen3 系列
下载地址:
支持格式:
📊 性能基准与版本演进
性能提升历程
版本历史
v0.8.0 (当前) - INT4 AWQ 量化推理
发布日期: 2026-04
核心改进:
v0.7.0 - 手写GEMV + Kernel级优化,281 tok/s
发布日期: 2026-04
核心改进:
__ldgread-only cache,小矩阵(QKV/wo/w2)比 cublasLt 快 25-44%性能:
v0.6.0 - Decode性能优化,超越vLLM
发布日期: 2026-04
核心改进:
v0.5.0 - Qwen3 模型支持
发布日期: 2026-04
v0.4.0 - 架构升级
发布日期: 2026-01
v0.3.0 - CUDA Graph优化
发布日期: 2026-01
v0.2.0 - 性能突破
发布日期: 2026-01
v0.1.0 - 初始版本
发布日期: 2025-10
⚡ 性能优化技术
已实现的优化
CUDA内存池化 (
/crates/infer-worker/src/base/allocator.rs)零拷贝模型加载 (
/crates/infer-worker/src/model/loader.rs)Workspace预分配 (
/crates/infer-worker/src/model/llama3.rs)CUDA Graph捕获 (
/crates/infer-worker/src/cuda/config.rs)Flash Attention (
/crates/infer-worker/src/op/kernels/cuda/flash_attn_gqa/)算子融合
手写 BF16 GEMV kernel
__ldgread-only cache 路径减少 L1 thrashingINT4 AWQ 量化推理
BF16混合精度
⚠️ 当前限制
已实现 ✅
待实现 🔄
高优先级:
中优先级:
低优先级:
详细技术实现指南请参阅 DEVELOPERS.md
🛠️ 开发指南
添加新算子
请参阅 DEVELOPERS.md 中的详细模板和示例。
关键步骤:
Optrait添加新模型
参考
/crates/infer-worker/src/model/llama3.rs实现:完整指南: DEVELOPERS.md
📄 许可证
Apache License 2.0 - 详见 LICENSE
🙏 致谢
灵感来源:
技术栈:
如果这个项目对你有帮助,请给我们一个 ⭐ Star!
Made with ❤️ and 🦀 Rust
GitHub • Issues