# MiniCPM4 速度狂飙,快至220倍!MiniCPM4.0-8B是首个原生稀疏模型,5%的极高稀疏度加持系统级创新技术的大爆发,宣告了端侧长文本时代到来! ## 论文 `MiniCPM4: Ultra-Efficient LLMs on End Devices` - https://arxiv.org/pdf/2506.07900 ## 模型结构 MiniCPM4核心架构基于Transformer Decoder-only,引入InfLLM 2.0混合稀疏注意力结构,采用「高效双频换挡」机制,能够根据任务特征自动切换注意力模式:在处理高难度的长文本、深度思考任务时,启用稀疏注意力以降低计算复杂度,在短文本场景下切换至稠密注意力以确保精度,实现了长、短文本切换的高效响应。
## 算法原理 MiniCPM 4.0模型采用的InfLLMv2稀疏注意力架构改变了传统Transformer模型的相关性计算方式:对分块分区域高效「抽查」,即对文本进行分块分区域处理后,通过智能化选择机制,只需对最有相关性的重点区域进行注意力计算“抽查”,摆脱了逐字重复计算的低效,注意力层仅需1/10的计算量即可完成长文本计算。
## 环境配置 ``` mv MiniCPM4_pytorch MiniCPM4 ``` ### 硬件需求 DCU型号:K100AI,节点数量:1 台,卡数:4 张。 ### Docker(方法一) ``` docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.4.1-ubuntu22.04-dtk25.04.1-py3.10 # 为以上拉取的docker的镜像ID替换,本镜像为:e50d644287fd docker run -it --shm-size=64G -v $PWD/MiniCPM4:/home/MiniCPM4 -v /opt/hyhal:/opt/hyhal:ro --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name minicpm4 bash cd /home/MiniCPM4 pip install -r requirements.txt # requirements.txt ``` ### Dockerfile(方法二) ``` cd /home/MiniCPM4/docker docker build --no-cache -t minicpm4:latest . docker run --shm-size=64G --name minicpm4 -v /opt/hyhal:/opt/hyhal:ro --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video -v $PWD/../../MiniCPM4:/home/MiniCPM4 -it minicpm4 bash # 若遇到Dockerfile启动的方式安装环境需要长时间等待,可注释掉里面的pip安装,启动容器后再安装python库:pip install -r requirements.txt。 ``` ### Anaconda(方法三) 1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: - https://developer.sourcefind.cn/tool/ ``` DTK驱动:25.04.1 python:python3.10 torch:2.4.1 torchvision:0.19.1 triton:3.0.0 flash-attn:2.6.1 deepspeed:0.14.2 apex:1.4.0 transformers:4.53.2 ``` 不同深度学习库可支持的DCU型号可在此处查询:[DAS资源下载](https://das.sourcefind.cn:55011/portal/#/home) `Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应。` 2、其它非特殊库参照requirements.txt安装 ``` cd /home/MiniCPM4 pip install -r requirements.txt # requirements.txt ``` 报错解决: ``` 1、TypeError: Phi3LongRoPEScaledRotaryEmbedding._compute_cos_sin_cache() missing 3 required positional arguments: 'max_position_embeddings', 'rescale_factors', and 'mscale' File "/usr/local/lib/python3.10/dist-packages/vllm/model_executor/models/minicpm.py", line 245 下面这一行代码是不必要的,因为RotaryEmbedding构造函数已经处理了适当的缓存初始化,注释掉: # self.rotary_emb.cos_sin_cache = self.rotary_emb._compute_cos_sin_cache( # ) 2、ValueError: You must use the new past_key_values format, such as the Cache class, instead of the old tuple format. openbmb/MiniCPM4-8B/modeling_minicpm.py", line 2052 将下面代码: if use_legacy_cache: raise ValueError( 'You must use the new past_key_values format, such as the Cache class, instead of the old tuple format.' ) past_key_values = DynamicCache.from_legacy_cache(past_key_values) 替换成: past_key_values = DynamicCache.from_legacy_cache(past_key_values) ``` ## 数据集 `项目中官方提供了用于试验的示例数据集` ``` /home/MiniCPM4/finetune/data/ ├── AdvertiseGenChatML | ├── train.json | └── dev.json └── ocnli_public_chatml ├── train.json └── dev.json ``` 更多资料可参考源项目的[`README_origin`](./README_origin.md) ## 训练 ### 单机多卡 预训练权重目录结构: ``` /home/MiniCPM4/ └── openbmb/MiniCPM4-8B ``` ``` cd /home/MiniCPM4/finetune bash lora_finetune_minicpm4.sh # 此处以MiniCPM4-8B为例,其它参数量的模型以此类推。 ``` ## 推理 ### 单机单卡 ``` cd /home/MiniCPM4 # 方法一:transformers推理 python infer_transformers.py # 方法二:vllm推理 python infer_vllm.py # 官方版vLLM目前不支持InfLLM-v2。 # 目前已开放dense推理,投机采样、量化、量化加投机敬请期待后续vllm的适配优化。 ``` 更多资料可参考源项目的[`README_origin`](./README_origin.md) ## result 此处以vllm版的推理结果示例: `输入: ` ``` 推荐5个北京的景点。 ``` `输出:` ``` 北京,这座历史悠久、文化底蕴深厚的城市,拥有众多令人向往的景点。以下是五个不容错过的北京景点推荐: 1. **故宫博物院**:作为明清两代皇家宫殿,故宫不仅是世界上最大的木质结构建筑群,也是中国乃至世界上最大的古代宫廷博物馆。这里收藏着大量的珍贵文物,如书画、瓷器、玉器等,能够让人近距离感受到中国传统文化的魅力。 2. **长城**:作为中华民族的象征,长城是中国古代军事防御工程的杰出代表。其中,八达岭长城是最为著名的一段,其地势险峻,长城蜿蜒曲折,是游客体验长城雄伟壮观的最佳地点。 3. **天安门广场**:作为世界上最大的城市中心广场,天安门广场不仅是国家的重要政治活动场所,也是游客们欣赏宏伟建筑的好去处。广场上的天安门城楼、人民英雄纪念碑、毛主席纪念堂等,都是历史的见证。 4. **颐和园**:颐和园是中国保存最完整的皇家园林,以其精美的园林艺术和丰富的文化内涵而著称。园内的昆明湖、万寿山、长廊等景点,让人仿佛置身于一幅生动的中国山水画中。 5. **圆明园**:虽然历经劫难,但圆明园的残垣断壁依然透露出清朝皇家园林的辉煌。园内的荷花池、西洋楼遗址等,让人在感叹历史的同时,也能感受到中国园林艺术的精妙。 以上五个景点,不仅能够让人领略到北京深厚的历史文化底蕴,也是来京旅游者必访之地。 ``` ### 精度 DCU与GPU精度一致,推理框架:vllm,训练中所用数据为少量demo数据,仅供模型训练方法测试,故无法作为训练精度参考。 ## 应用场景 ### 算法类别 `对话问答` ### 热点应用行业 `制造,广媒,金融,能源,医疗,家居,教育` ## 预训练权重 魔搭社区下载地址为:[OpenBMB/MiniCPM4-8B](https://www.modelscope.cn/models/OpenBMB/MiniCPM4-8B) ## 源码仓库及问题反馈 - http://developer.sourcefind.cn/codes/modelzoo/MiniCPM4_pytorch.git ## 参考资料 - https://github.com/OpenBMB/MiniCPM.git