
MiniCPM-SALA 长上下文混合注意力架构解析与微调实战25% 稀疏 75% 线性注意力与百万令牌推理指南【免费下载链接】MiniCPMMiniCPM5: SOTA on-device LLMs, small yet powerful.项目地址: https://gitcode.com/GitHub_Trending/mi/MiniCPMMiniCPM-SALASparse Attention and Linear Attention是 MiniCPM 系列中面向超长上下文建模的混合架构模型它系统性地将 25% 的稀疏注意力InfLLM-v2与 75% 的线性注意力Lightning Attention结合并通过混合位置编码方案 HyPE 将上下文窗口扩展到百万令牌级别同时显著降低计算与 KV 缓存开销。本篇指南以 minicpm_sala/README-cn.md 为核心结合仓库内微调脚本、DeepSpeed/FSDP 配置与 LLaMA-Factory 配置完整梳理该架构的技术原理、应用场景并给出可复制的全参数与 LoRA 微调实战方案。一、MiniCPM-SALA 是什么首个大规模稀疏 线性混合架构MiniCPM-SALA 的核心设计是混合注意力架构将两种注意力机制按比例组合用于超长上下文建模组件占比技术作用稀疏注意力25%InfLLM-v2高保真局部建模保留关键令牌的精确注意力关系线性注意力75%Lightning Attention全局高效的循环计算线性复杂度处理长序列这一组合的工程含义在于稀疏注意力负责看得准局部细节与关键依赖线性注意力负责看得远以循环方式高效传播全局信息二者互补使得模型在扩展上下文窗口的同时保持强大的长度泛化能力。在此基础上HyPE混合位置编码方案进一步为稀疏与线性注意力提供统一的位置感知能力让模型可以在推理时平滑泛化到训练时未见过的更长序列。证据边界说明以上架构构成25%/75% 配比、InfLLM-v2、Lightning Attention、HyPE均出自 minicpm_sala/README-cn.md 与英文版 minicpm_sala/README.md 的官方陈述其技术细节论文见仓库文档 docs/MiniCPM_SALA.pdf。1.1 性能长上下文下的推理加速根据文档官方陈述与稠密 Transformer 基线如 Qwen3-8B相比MiniCPM-SALA 在长上下文设置下实现了最高3.5 倍推理加速同时显著降低计算量与 KV 缓存开销。仓库中的基准图直观展示了这一收益在处理 64K 至 1024K 序列时MiniCPM-SALA 的首令牌延迟TTFT与端到端延迟均低于 Qwen3-8B且 Qwen3-8B 在 128K 以上多个长度点出现 OOM显存不足而 MiniCPM-SALA 可持续推理到 1024K对应图表见 assets/minicpm_sala/inference_speed_5090.png。从架构原理上可以解释这一收益线性注意力无需存储随序列长度线性增长的完整注意力矩阵KV 缓存开销从 O(n) 规模每条序列被压缩为固定尺寸的循环状态这正是长上下文场景下显存与算力瓶颈得以缓解的根本原因。1.2 方法Transformer 到混合架构的蒸馏为确保混合架构不损失能力MiniCPM-SALA 采用了一条新颖的蒸馏路径以 MiniCPM-4 的稠密 Transformer 权重作为初始化应用结构化衰减structured decay将稠密注意力能力迁移到混合架构通过后训练适应post-training adaptation恢复并强化下游能力。即先继承再适配从而把密集注意力的成熟能力有效转移到稀疏 线性的混合结构中官方陈述见 minicpm_sala/README.md。二、适用用户与推理部署路径MiniCPM-SALA 面向从个人到企业、研究者的广泛用户群体文档给出了三条典型使用路径个人用户通过 HuggingFace 直接加载检查点进行推理设置简单适合快速体验与原型验证企业用户借助 vLLM 或 SGLang 实现高吞吐、可扩展的推理服务发挥混合架构的长上下文吞吐优势研究者使用 Transformers Trainer、LLaMA-Factory 等高级框架进行灵活的模型开发与前沿实验具体入口见下文微调章节。三、微调总览两种官方支持的框架仓库在 minicpm_sala/finetune/README-cn.md 中提供了覆盖不同规模的微调工作流能力矩阵如下训练规模实现方式单 GPU面向快速原型设计与较小模型直接运行微调脚本单节点多 GPUDeepSpeed ZeRO、Accelerate 多 GPU 或 FSDP多节点Accelerate FSDP 驱动的大规模分布式训练两种官方框架的分工与特性框架定位适用人群Transformers Trainer官方脚本默认配合 DeepSpeed支持全参数与 LoRA需要底层自定义、灵活性最高的场景LLaMA-Factory模块化微调工具包支持 SFT / KTO / DPO / 持续预训练希望开箱即用、快速切换训练范式的场景四、Transformers Trainer 微调实战4.1 安装依赖pip install -r requirements.txt依赖清单minicpm_sala/finetune/requirements.txt包含json、typing、dataclasses、torch、transformers、accelerate、deepspeed进行 LoRA/QLoRA 微调时还需自行安装peft与bitsandbytes脚本内通过from peft import ...与BitsAndBytesConfig按需使用。4.2 多轮对话数据格式与 loss_mask 机制微调代码采用多轮对话格式并通过为不同角色赋予不同的loss_mask值实现在单次前向传播中计算多个回复的损失。标准格式如下[ { messages: [ { role: system, content: 系统提示文本 }, { role: user, content: 用户提示文本 }, { role: assistant, content: 助手回复文本 }, { role: user, content: 用户提示文本 }, { role: assistant, content: 助手回复文本 } ] } ]单个样本示例AdvertiseGen 广告文案生成见 minicpm_sala/finetune/trainer/data/AdvertiseGenChatML/train.json{ messages: [ { role: user, content: 类型#裙*裙长#半身裙 }, { role: assistant, content: 这款百搭时尚的仙女半身裙整体设计非常的飘逸随性穿上之后每个女孩子都能瞬间变成小仙女啦。料子非常的轻盈透气性也很好穿到夏天也很舒适。 } ] }验证集要求微调代码已包含验证集逻辑因此一个完整的数据集必须同时包含训练集与验证集测试集可选分别通过--train_data_path与--eval_data_path指定。仓库同时提供了另一个示例数据集 minicpm_sala/finetune/trainer/data/ocnli_public_chatml/可用于自然语言推理任务的微调。4.3 源码视角数据预处理如何实现 loss_mask理解 finetune.py 的SupervisedDataset.preprocessingfinetune.py有助于你正确构造数据序列以bos_token_id开头label_ids对应位置置为-100ignore_index即不参与损失计算对system与user角色通过tokenizer.apply_chat_template编码输入对应的 label 全部为-100只计算生成不计算输入的 loss对assistant角色内容同时加入input_ids与label_ids真实 token参与损失计算若 tokenizer 的eos_token_id 73440对应 MiniCPM-3/4 系列user 消息会使用add_generation_promptTrue追加生成提示符序列尾部追加eos_token_id并对应一个真实 label随后统一截断 / 右填充到model_max_length填充位置 label 为-100、attention_mask 为 0。这意味着你准备的多轮数据中系统提示与用户输入不会产生训练损失只有助手回复会这正是多轮回复损失能够被同时计算的基础。4.4 DeepSpeed ZeRO全参数与 LoRA 微调全参数微调8 卡示例使用 ZeRO-3 配置 ds_config_zero3.jsonformatted_time$(date %Y%m%d%H%M%S) deepspeed --include localhost:0,1,2,3,4,5,6,7 finetune.py \ --model_name_or_path openbmb/MiniCPM-SALA \ --output_dir output/AdvertiseGenSFT/$formatted_time/ \ --train_data_path data/AdvertiseGenChatML/train.json \ --eval_data_path data/AdvertiseGenChatML/dev.json \ --learning_rate 5e-5 \ --per_device_train_batch_size 2 \ --per_device_eval_batch_size 32 \ --bf16 \ --gradient_accumulation_steps 4 \ --warmup_steps 100 \ --max_steps 3000 \ --weight_decay 0.01 \ --eval_steps 100 \ --save_strategy steps \ --save_steps 500 \ --seed 42 \ --log_level info \ --logging_strategy steps \ --logging_steps 10 \ --deepspeed configs/ds_config_zero3.jsonLoRA 微调仅需在上述脚本中追加--use_lora。参数要点说明--model_name_or_path openbmb/MiniCPM-SALAHuggingFace 上的 MiniCPM-SALA 检查点也可替换为本地模型路径--bf16与 DeepSpeed 配置中bf16: {enabled: auto}配合自动对齐训练精度若硬件不支持 bf16可改用--fp16脚本中二者不可同时开启见 finetune.py 的断言--gradient_accumulation_steps 4与--per_device_train_batch_size 2二者乘积决定有效 batch 大小可根据显存调整--max_steps 3000与--save_strategy steps/--save_steps 500按步数而非轮数控制训练与保存ZeRO 相关超参数如allgather_bucket_size、stage3_gather_16bit_weights_on_model_save在 ds_config_zero3.json 中配置train_batch_size等字段设为auto由 Trainer 自动填充。仓库同时在 minicpm_sala/finetune/trainer/configs/deepspeed/ 提供 ZeRO-2、ZeRO-3 及各自的 offload 变体单卡显存受限时可选用ds_config_zero3_offload.json将优化器状态或参数卸载到 CPU。4.5 LoRA 与 QLoRA 的源码实现在 finetune.py 的load_model_and_tokenizer中LoRA 配置要点target_modules当模型架构为MiniCPM3ForCausalLM时作用于[q_a_proj, kv_a_proj_with_mqa, q_b_proj, kv_b_proj]否则含 MiniCPM-SALA 场景作用于[q_proj, v_proj]默认超参数r64、lora_alpha32、lora_dropout0.1、init_lora_weightsgaussian、task_typeTaskType.CAUSAL_LM脚本内注释给出了参考规模可训练参数约 294 万占全部参数的约 0.098%当--use_lora与--qlora同时开启时通过BitsAndBytesConfig(load_in_4bitTrue, bnb_4bit_quant_typenf4, bnb_4bit_use_double_quantTrue, ...)以 4bit NF4 量化加载基座脚本要求qlora必须搭配use_lora见 finetune.py。4.6 Accelerate FSDP单节点与多节点单节点 8 卡 FSDP 全参数微调配置 fsdp_config.yamlformatted_time$(date %Y%m%d%H%M%S) accelerate launch --config_file configs/accelerate/fsdp_config.yaml \ finetune.py \ --model_name_or_path openbmb/MiniCPM-SALA \ --output_dir output/AdvertiseGenSFT/$formatted_time/ \ --train_data_path data/AdvertiseGenChatML/train.json \ --eval_data_path data/AdvertiseGenChatML/dev.json \ --learning_rate 5e-5 \ --per_device_train_batch_size 2 \ --per_device_eval_batch_size 32 \ --bf16 \ --gradient_accumulation_steps 4 \ --warmup_steps 100 \ --max_steps 3000 \ --weight_decay 0.01 \ --eval_steps 100 \ --save_strategy steps \ --save_steps 500 \ --seed 42 \ --log_level info \ --logging_strategy steps \ --logging_steps 10LoRA 微调同样只需追加--use_lora。FSDP 配置关键项fsdp_config.yamldistributed_type: FSDP、fsdp_sharding_strategy: FULL_SHARD参数/梯度/优化器状态全分片fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP按 Transformer 层自动包装mixed_precision: bf16混合精度注释表明可切换fp16num_machines: 1、num_processes: 8单机 8 卡。多节点训练配置 fsdp_config_multiple_nodes.yaml需按集群实际修改 5 个参数num_machines节点数num_processes所有节点 GPU 总数num_machines × num_processes_per_machinemain_process_ip主节点 IP所有节点保持一致main_process_port通信端口所有节点保持一致machine_rank当前机器编号从 0 开始主节点必须为 0。配置文件中给出的示例值为 2 节点 × 8 卡 16 进程main_process_ip: 192.168.0.2、端口29501。五、LLaMA-Factory 微调实战HuggingFace 检查点openbmb/MiniCPM-SALA可直接在 LLaMA-Factory 中用于全参数与 LoRA 训练支持SFT、KTO、DPO 和持续预训练四种模式。5.1 安装 LLaMA-Factorygit clone https://github.com/hiyouga/LlamaFactory.git cd LLaMA-Factory pip install -r requirements.txt5.2 数据准备四种训练模式pretrain、sft、dpo、kto需分别参照 minicpm_sala/finetune/llama_factory/llama_factory_data/ 中的{mode}_demo.json准备数据然后将数据集信息注册到LLaMA-Factory/data/dataset_info.json。参考示例{ identity: { file_name: identity.json }, sft_zh_demo: { file_name: alpaca_zh_demo.json }, kto_en_demo: { file_name: kto_en_demo.json, formatting: sharegpt, columns: { messages: messages, kto_tag: label }, tags: { role_tag: role, content_tag: content, user_tag: user, assistant_tag: assistant } }, dpo_en_demo: { file_name: dpo_en_demo.json, ranking: true, formatting: sharegpt, columns: { messages: conversations, chosen: chosen, rejected: rejected } } }关键注册项说明SFT 数据如sft_zh_demo.json默认按 Alpaca 格式读取 instruction/input/outputKTO 数据需标注kto_tag即偏好标签列并通过tags指定 sharegpt 的角色字段映射DPO 数据必须设置ranking: true并分别指定chosen与rejected列仓库内的示例数据sft_zh_demo.json、dpo_en_demo.json、kto_en_demo.json可直接用于对照格式。5.3 创建训练配置 YAML全参数 SFT创建minicpm_sala_sft.yaml放入LLaMA-Factory/examples/minicpm_config/### model model_name_or_path: openbmb/MiniCPM-SALA trust_remote_code: true ### method stage: sft do_train: true finetuning_type: full ### ddp ddp_timeout: 180000000 deepspeed: examples/deepspeed/ds_z3_config.json ### dataset dataset: sft_zh_demo template: cpm4 cutoff_len: 1800 max_samples: 500000 overwrite_cache: true preprocessing_num_workers: 16 ### output output_dir: saves/minicpm/minicpm_sala_full logging_steps: 10 save_strategy: epoch plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 2 gradient_accumulation_steps: 4 learning_rate: 0.0001 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ### eval val_size: 0.1 per_device_eval_batch_size: 4 eval_steps: 500LoRA SFT复制上述文件为minicpm_sala_lora_sft.yaml仅将finetuning_type从full改为lora即可。字段说明template: cpm4使用 MiniCPM-4 系列的对话模板MiniCPM-SALA 继承自 MiniCPM-4不要更换为其他模板cutoff_len序列截断长度长上下文任务可适当调大val_size: 0.1从训练集中切分 10% 作为验证集DPO/KTO 训练可参考仓库现成配置 minicpm_dpo.yaml 与 minicpm_kto.yaml二者在数据列映射、cutoff_len1200与学习率DPO 为 1e-5、KTO 为 5e-6上有所区分。5.4 训练命令全参数训练DeepSpeedllamafactory-cli train examples/minicpm_config/minicpm_sala_sft.yaml全参数训练Accelerate FSDP 多节点accelerate launch \ --config_file examples/accelerate/fsdp_config_multiple_nodes.yaml \ src/train.py examples/minicpm_config/minicpm_sala_sft.yamlLoRA 训练DeepSpeedllamafactory-cli train examples/minicpm_config/minicpm_sala_lora_sft.yaml仓库在 minicpm_sala/finetune/llama_factory/scripts/ 提供了对应的可直接复用脚本单卡/单机 LoRA 脚本 lora_finetune.sh、全参数脚本 sft_finetune.sh 以及多节点全参数脚本 sft_finetune_multi_nodes.sh。六、如何选择微调方案综合两种框架与三种分布式策略可按下列条件快速决策单卡快速验证Transformers Trainer 直接运行或 LLaMA-Factory 单机脚本优先 LoRA约 0.1% 可训练参数单机多卡8 卡DeepSpeed ZeRO-2/3配置见 minicpm_sala/finetune/trainer/configs/deepspeed/或 Accelerate FSDPfsdp_config.yaml均可显存紧张时开启 offload多节点集群Accelerate FSDP 多节点配置fsdp_config_multiple_nodes.yaml务必同步修改num_machines、num_processes、main_process_ip、main_process_port、machine_rank五项偏好对齐/安全对齐LLaMA-Factory 的 DPO / KTO 模式开箱即用直接复用 minicpm_dpo.yaml、minicpm_kto.yaml。七、引用与许可证若 MiniCPM-SALA 的模型、代码或论文对你有帮助可按官方给出的 BibTeX 条目引用见 minicpm_sala/README.mdarticle{minicpm4, title{{MiniCPM-SALA}: Hybridizing Sparse and Linear Attention for Efficient Long-Context Modeling}, author{MiniCPM Team}, year{2026} }相关指南与代码以 Apache-2.0 License 提供。更多技术细节可进一步阅读仓库中的 MiniCPM_SALA.pdf 论文原文以及用于评估推理加速的图表资源assets/minicpm_sala/与长上下文评估结果。【免费下载链接】MiniCPMMiniCPM5: SOTA on-device LLMs, small yet powerful.项目地址: https://gitcode.com/GitHub_Trending/mi/MiniCPM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考