OpenBMB 开源轻量级 CUDA 推理框架 CPM.cu
OpenBMB推出了CPM.cu,这是一个轻量级且高效的开源CUDA推理框架,专为端侧大型语言模型(LLMs)的部署而设计,并为MiniCPM4提供优化,核心支持稀疏架构、投机采样和低位宽量化等前沿技术创新。
CPM.cu 亮点包括:
- 集成了InfLLM v2可训练稀疏注意力内核,可加速长上下文预填充和解码;
- FR-Spec(频率排序推测采样)通过压缩词汇空间提高草稿效率,显著降低计算开销;
- 结合了EAGLE-2推测采样、4位量化和基于滑动窗口注意力的长上下文支持,从而在资源受限设备上实现高效部署。
- 性能方面,在128K-token序列上,预填充速度比Qwen3-8B快2-4倍,解码速度快4-6倍。
CPM.cu 框架结构:
CPM.cu/ ├── src/ │ ├── flash_attn/ # 修改后的 Flash-Attention, 支持稀疏和投机采样 │ ├── model/ │ │ ├── minicpm4/ # minicpm4 模型 │ │ │ ├── minicpm4_model.cuh # 模型的核心实现 │ │ │ └── minicpm4_eagle.cuh # 投机采样实现 │ │ ├── model.cuh # 其他代表性模型 │ │ ├── w4a16_gptq_marlin/ # GPTQ 量化计算 kernel │ │ ├── memory.cuh # 显存分配 │ │ └── layer.cuh # 通用层 │ ├── entry.cu # pybind: 连接 C/CUDA 和 Python │ └── ... ├── cpmcu/ # python interface └── ...
-
cpmcu/ 代码提供了一个 python 的调用接口,里面涉及在 Python 侧 tokenize,调用 C 代码得到模型的输出 logits,在 Python 侧根据 logits 采样并 detokenize 这些过程。我们使用了 pybind 将 C 代码与 Python 代码进行绑定。
-
src/model/memory.cuh 这里实现了整个推理框架的内存管理,这里我们采用了先分配模型权重,再分配模型中间计算结果所需的空间,最后把所有剩余显存分配给 kv-cache 的内存管理策略。这一点设计上是和 vLLM, SGLang 类似的。分配中间计算结果的空间时可以考虑一下中间计算结果的生命周期,做一点显存复用。
-
src/model/w4a16_gptq_marlin/ 量化的计算 kernel。这里直接使用了 vLLM 的 Marlin 代码。
-
src/model/minicpm4/ 这里是模型的架构实现。src/model/下也有其他代表性模型实现。
-
src/flash_attn/ 我们基于 flash_attn 2.6.3 版本,在上面增加了对 InfLLM v2、投机采样的适配支持。下面我们主要介绍这一部分,也是整个框架实现的难点。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源模型上下文协议 MCP 更新规范文档,添加对结构化工具输出的支持
开源模型上下文协议 MCP 昨天更新了规范文档,主要变更如下: 移除对 JSON-RPC 批处理的支持(PR #416) 添加对结构化工具输出的支持(PR #371) 将 MCP 服务器归类为 OAuth 资源服务器,添加受保护资源元数据以发现相应的授权服务器。(PR #338) 要求 MCP 客户端按照 RFC 8707 中描述的方式实现资源指示器,以防止恶意服务器获取访问令牌。(PR #734) 在授权规范中阐明安全注意事项和最佳实践,并在新的安全最佳实践页面中说明。 增加引导支持,使服务器能够在交互过程中向用户请求更多信息。(PR #382) 在工具调用结果中增加资源链接支持。(PR #603) 在使用 HTTP 时,后续请求中需通过MCP-Protocol-Version头指定协商的协议版本。(PR #548) 将生命周期操作中的 SHOULD 改为 MUST 详情查看https://modelcontextprotocol.io/specification/2025-06-18/changelog
- 下一篇
Workout.cool —— 现代开源健身教练平台
一个全面的健身指导平台,可以为你制定锻炼计划、跟踪进度并访问包含详细说明和视频演示的庞大锻炼数据库。 项目包含一个全面的练习数据库。要导入练习样本,请执行以下操作: 导入的先决条件 准备 CSV 文件 你的 CSV 应该包含以下列: id,name,name_en,description,description_en,full_video_url,full_video_image_url,introduction,introduction_en,slug,slug_en,attribute_name,attribute_value 可以使用提供的示例。 导入命令 # Import exercises from a CSV file pnpm run import:exercises-full /path/to/your/exercises.csv # Example with the provided sample data pnpm run import:exercises-full ./data/sample-exercises.csv CSV 格式示例 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS8编译安装MySQL8.0.19