Skip to content

【Hackathon 10th Spring No.50】为 FastDeploy 新增 MiniCPM4.1-8B 模型 - #8118

Open
codecason wants to merge 1 commit into
PaddlePaddle:developfrom
codecason:task/050-hackathon-minicpm41
Open

【Hackathon 10th Spring No.50】为 FastDeploy 新增 MiniCPM4.1-8B 模型#8118
codecason wants to merge 1 commit into
PaddlePaddle:developfrom
codecason:task/050-hackathon-minicpm41

Conversation

@codecason

@codecason codecason commented Aug 28, 2026

Copy link
Copy Markdown

Motivation

为 MiniCPM4.1-8B 增加完整的 FastDeploy 支持,包括模型架构、混合推理、在线权重量化和长上下文注意力路径。

本实现使用原始 Hugging Face BF16 checkpoint,支持 BF16、在线 WINT4 和在线 WINT8 部署。同时新增 InfLLM-V2 注意力后端与 CUDA 算子,用于在支持的 NVIDIA GPU 上验证长上下文推理。

关联 RFC PR:
PaddlePaddle/community#1318
PaddlePaddle/community#1543

Modifications

  • 新增 MiniCPM4.1 模型实现、配置、注册、权重加载、MuP scaling 和 LongRoPE 处理。
  • 新增混合思考支持,包括请求级思考开关、thinking budget、混合思考模式和多 token 强制结束处理。
  • 基于原始 BF16 checkpoint 新增在线 WINT4/WINT8 权重量化,并提供可确定复现的评测工具。
  • 新增 InfLLM-V2 注意力后端、CUDA 算子、后端配置和独立性能测试。
  • 新增 MiniCPM4.1 BF16、WINT4 和 WINT8 的 Serving benchmark YAML 配置。
  • 新增一键验收入口和 WINT Serving 启动脚本。
  • 新增MiniCPM模型、思考预算、量化、算子测试、Serving 端到端测试。
  • 新增中英文文档、使用说明、性能记录和支持模型列表。

Usage or Command

在终端配置:

cd /path/to/FastDeploy
export MODEL_PATH=/path/to/MiniCPM4.1-8B
export CUDA_VISIBLE_DEVICES=0

一次性执行编译、单元测试、CUDA 算子测试和端到端测试:

bash tests/benchmarks/test_minicpm41.sh

也可以分别执行各阶段:

bash tests/benchmarks/test_minicpm41.sh build
bash tests/benchmarks/test_minicpm41.sh unit
bash tests/benchmarks/test_minicpm41.sh operators
bash tests/benchmarks/test_minicpm41.sh e2e

启动在线 WINT4 Serving:

bash scripts/run_minicpm41_wint_server.sh wint4 "${MODEL_PATH}"

wint4 替换为 wint8 即可启用在线 INT8 权重量化。

Accuracy Tests

使用原始 openbmb/MiniCPM4.1-8B checkpoint,在单张 NVIDIA RTX A6000(SM86)上完成验证:

  • 模型、thinking budget、后端和量化测试:87 passed
  • InfLLM-V2 CUDA 算子正确性测试:12 passed
  • Serving E2E 测试:
    • BF16 + FlashAttention:5 passed
    • 在线 WINT4 + FlashAttention:5 passed
    • 在线 WINT8 + FlashAttention:5 passed
    • BF16 + InfLLM-V2:5 passed
  • pre-commitpassed

Performance Tests

以下结果于 2026 年 8 月 25 日在单张 NVIDIA RTX A6000(SM86,TP=1)上测得。所有模式均使用原始 MiniCPM4.1-8B BF16 checkpoint,配置为 max_model_len=1024max_num_seqs=1max_num_batched_tokens=256、关闭 prefix caching,并固定 32 个 GPU KV-cache blocks。

Serving benchmark 在并发数 1 下发送 16 个随机请求,名义输入/输出长度为 128/64 token。所有模式完成相同的 2,895 个输入 token 和 1,010 个输出 token。

模式 输出 tok/s E2E 加速比 平均 TTFT 平均 TPOT TPOT 加速比 驻留显存 显存压缩比 显存降低 估算参数存储 参数压缩比
BF16 37.35 1.00x 136.98 ms 24.45 ms 1.00x 16,858 MiB(16.46 GiB) 1.00x 0.00% 15.25 GiB 1.00x
在线 WINT8(INT8 权重) 64.48 1.73x 140.23 ms 13.24 ms 1.85x 10,416 MiB(10.17 GiB) 1.62x 38.21% 8.19 GiB 1.86x
在线 WINT4(INT4 权重) 96.72 2.59x 146.50 ms 7.86 ms 3.11x 6,514 MiB(6.36 GiB) 2.59x 61.36% 4.66 GiB 3.28x

E2E 加速比为“量化模式输出吞吐 / BF16 输出吞吐”。显存压缩比为“BF16 驻留显存 / 量化模式驻留显存”,并保持相同的 KV cache 配置。估算参数存储根据 safetensors 元数据计算,包含未量化的 BF16 权重与持久化 BF16 scales。

在线量化将 worker 启动时间从 BF16 的 25.41 秒增加到 WINT4 的 27.41 秒和 WINT8 的 28.09 秒。

InfLLM-V2 Attention 算子加速比

Attention 加速比统一按“Dense Attention 延迟 / InfLLM-V2 完整链延迟”计算,大于 1 表示 InfLLM-V2 更快。Prefill 与 Decode 的执行路径和实验设置不同,因此分别报告。

Prefill Attention

实验设置:独占 NVIDIA RTX A6000(SM86),batch 1、BF16 Q/K/V 与 KV cache,生产形状 QH=32KVH=2D=128block_size=64。InfLLM-V2 设置为 dense_len=8192selected_blocks=96query_tile_size=128query_chunk_size=4096;预热 20 次并执行 100 次 CUDA event 计时,取中位数。Dense 侧测量完整 FlashAttention prefill;InfLLM-V2 侧包含 compressed-K 更新、dense prefix、Stage 1、paged-cache gather、两个 FlashAttention 分区和 LSE 合并。

上下文 Dense InfLLM-V2 加速比 结论
32K 88.638 ms 45.810 ms 1.935x InfLLM-V2 更快

Checklist

  • PR 标题至少包含一个标签。
    • 标签列表:[[FDConfig],[APIServer],[Engine], [Scheduler], [PD Disaggregation], [Executor], [Graph Optimization], [Speculative Decoding], [RL], [Models], [Quantization], [Loader], [OP], [KVCache], [DataProcessor], [BugFix], [Docs], [CI], [Optimization], [Feature], [Benchmark], [Others], [XPU], [HPU], [GCU], [DCU], [Iluvatar], [Metax]]
    • 可根据 PR 内容添加语义清晰的新标签。
  • 已格式化代码并在提交前运行 pre-commit
  • 已添加单元测试。
  • 已提供准确性结果。
  • 本 PR 目标分支为 develop,不适用 release 分支 Cherry-Pick 要求。

@CLAassistant

CLAassistant commented Aug 28, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants