# ModelLink_ppo **Repository Path**: chenmenglong233/ModelLink_ppo ## Basic Information - **Project Name**: ModelLink_ppo - **Description**: 昇腾大模型仓库 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/ascend/ModelLink/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1206 - **Created**: 2024-12-25 - **Last Updated**: 2024-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

GitHub Documentation

MindSpeed-LLM,原仓名ModelLink,作为昇腾大模型训练框架,旨在为华为 [昇腾芯片](https://www.hiascend.com/) 提供端到端的大语言模型训练方案, 包含分布式预训练、分布式指令微调、分布式偏好对齐以及对应的开发工具链。 ***注 : 原包名 modellink 更改为 mindspeed_llm *** --- ## 预置模型 MindSpeed-LLM当前已支持和预置大模型列表: - MindSpeed-LLM [100+ 预置大模型及其权重下载地址](./docs/models/pretrain.md) ## 用户使用指南 - MindSpeed-LLM [使用指南](./docs/USER_GUIDE.md) - [基于 Megatron-LM + MindSpeed-LLM 训练自定义大模型](./docs/DEVELOP_GUIDE.md) ## MindSpeed-LLM 大模型训练框架功能特性 ### 训练方案 * 分布式预训练:预训练方案/并行策略/加速算法/融合算子 * 分布式指令微调:指令微调方案/Prompt模板/动态padding/长序列方案 * 分布式偏好对齐:偏好对齐方案/DPO/奖励模型 * 开发工具链:权重转换/数据处理/分布式推理/分布式评估 * 昇腾工具链:Profiling采集/确定性计算/高可用 ### 研发中特性与模型 - O1: https://openai.com/index/learning-to-reason-with-llms/ - COT:[Chain-of-Thought Reasoning without Prompting](https://arxiv.org/pdf/2402.10200) - GRPO: [DeepSeek Reinforcement Learning](https://arxiv.org/pdf/2405.04434) - Search: [AlphaZero-Like Tree-Search](https://arxiv.org/pdf/2309.17179) - PPO: [Proximal Policy Optimization Algorithms](https://arxiv.org/abs/1707.06347) - PRM: [Reward Modeling as Next-Token Prediction](https://arxiv.org/pdf/2408.15240) - QLoRA: [Efficient Finetuning of Quantized LLMs](https://arxiv.org/pdf/2305.14314) - Mamba2: [Transformers are SSMs](https://arxiv.org/pdf/2405.21060) - Mamba-Hybird: [An Empirical Study of Mamba-based Language Models](https://arxiv.org/pdf/2406.07887) - DeepSeek-V2: [236B](https://huggingface.co/deepseek-ai/DeepSeek-V2) - DeepSeek-V2.5: [236B](https://huggingface.co/deepseek-ai/DeepSeek-V2.5) - QWen2.5: [7B](https://huggingface.co/Qwen/Qwen2.5-7B), [14B](https://huggingface.co/Qwen/Qwen2.5-14B), [32B](https://huggingface.co/Qwen/Qwen2.5-32B), [72B](https://huggingface.co/Qwen/Qwen2.5-72B) - InternLM2.5: [1.8B](https://huggingface.co/internlm/internlm2_5-1_8b), [7B](https://huggingface.co/internlm/internlm2_5-7b), [20B](https://huggingface.co/internlm/internlm2_5-20b) - MiniCPM3: [4B](https://huggingface.co/openbmb/MiniCPM3-4B) - Yi1.5: [6B](https://huggingface.co/01-ai/Yi-1.5-6B), [9B](https://huggingface.co/01-ai/Yi-1.5-9B), [34B](https://huggingface.co/01-ai/Yi-1.5-34B) - Phi3.5: [MoE](https://huggingface.co/microsoft/Phi-3.5-MoE-instruct), [Mini](https://huggingface.co/microsoft/Phi-3.5-mini-instruct) --- ## 分布式预训练 【预训练实测集群性能与线性度】
模型系列 实验模型 硬件信息 集群规模 MFU
LLAMA2 LLAMA2-7B Atlas 900 A2 PODc 1x8 68.8%
LLAMA2-13B Atlas 900 A2 PODc 1x8 62.23%
LLAMA2-70B Atlas 900 A2 PODc 4x8 55.8%
Mixtral Mixtral-8x7B Atlas 900 A2 PODc 8x8 31%
基于 `GPT3-175B` 稠密大模型,从128颗 NPU 扩展到 7968颗 NPU 进行 MFU 与线性度实验,下图是实验数据:

图中呈现了对应集群规模下的 `MFU` 值与集群整体的 `线性度`情况. 计算公式已经放到社区,点击链接可进行参考:[MFU计算公式](https://gitee.com/ascend/MindSpeed-LLM/wikis/%E6%9C%AF%E8%AF%AD%E5%AE%9A%E4%B9%89/%E5%A4%A7%E6%A8%A1%E5%9E%8B%20MFU%20%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F),[线性度计算公式](https://gitee.com/ascend/MindSpeed-LLM/wikis/%E6%9C%AF%E8%AF%AD%E5%AE%9A%E4%B9%89/%E7%BA%BF%E6%80%A7%E5%BA%A6%E5%85%AC%E5%BC%8F). 【并行策略/加速算法/显存优化/融合算子】
场景 特性名称 Mcore Legacy 贡献方
SPTD并行 张量并行 ✅ ✅ 【昇腾】
流水线并行 ✅ ✅ 【昇腾】
虚拟流水并行 ✅ ✅ 【昇腾】
序列并行 ✅ ✅ 【昇腾】
Noop Layers ✅ ❌ 【昇腾】
长序列并行 Ascend Ring Attention 长序列并行 ✅ ❌ 【昇腾】
Ulysses 长序列并行 ✅ ❌ 【昇腾】
混合长序列并行 ✅ ❌ 【昇腾】
自适应长序列并行 ✅ ❌ 【计算研究部】
MOE MOE 专家并行 ✅ ❌ 【昇腾】
MOE 重排通信优化 ✅ ❌ 【计算研究部】
显存优化 参数副本复用 ✅ ✅ 【计算算法部】
分布式优化器 ✅ ✅ 【昇腾】
Swap Attention ✅ ✅ 【计算研究部】
重计算 ✅ ✅ 【计算研究部】
O2 BF16 Optimizer ✅ ❌ 【昇腾】
融合算子 Flash attention ✅ ✅ 【昇腾】
Flash attention variable length ✅ ❌ 【昇腾】
Fused rmsnorm ✅ ✅ 【昇腾】
Fused swiglu ✅ ✅ 【昇腾】
Fused rotary position embedding ✅ ✅ 【昇腾】
GMM ✅ ❌ 【昇腾】
Matmul Add ✅ ❌ 【昇腾】
通信掩盖 梯度reduce通算掩盖 ✅ ✅ 【昇腾】
Recompute in advance ✅ ❌ 【昇腾】
权重all-gather通算掩盖 ✅ ❌ 【昇腾】
MC2 ✅ ✅ 【昇腾】
--- ## 分布式指令微调 【指令微调实测性能】
模型 硬件 集群 方案 序列 性能 MFU
llama2-7B Atlas 900 A2 PODc 1x8 全参 dynamic 45.7 samples/s -
全参 16K 1.78 samples/s 56.0%
全参 32K 0.79 samples/s 61.9%
llama2-13B Atlas 900 A2 PODc 1x8 全参 dynamic 28.4 samples/s -
llama2-70B Atlas 900 A2 PODc 1x8 LoRA dynamic 11.72 samples/s -
【指令微调特性】
场景 特性名称 Mcore Legacy 贡献方
微调数据集支持格式 Alpaca 风格 ✅ ✅ 【昇腾】
ShareGPT 风格 ✅ ✅ 【昇腾】
全参微调 单样本微调 ✅ ✅ 【昇腾】
多样本pack微调 ✅ ✅ 【NAIE】
多轮对话微调 ✅ ✅ 【昇腾】
长序列方案 ✅ ✅ 【NAIE】
低参微调 LoRA 微调 ✅ ✅ 【NAIE】
CCLoRA ✅ ✅ 【计算算法部】
--- ## 分布式偏好对齐 【偏好对齐实测性能】
模型 硬件 算法 集群 方案 序列 吞吐
llama2-7B Atlas 900 A2 PODc Offline DPO 1x8 全参 dynamic 12.77 samples/s
全参 16K 0.442 samples/s
Lora dynamic 9.79 samples/s
2x8 全参 32K 0.227 samples/s
【偏好对齐特性】
场景 特性名称 Mcore Legacy 贡献方
数据预处理 Pairwise数据集处理 ✅ ✅ 【NAIE】
PRM数据集处理 ✅ ✅ 【昇腾】
偏好对齐 Offline DPO ✅ ❌ 【NAIE】
SimPO ✅ ❌ 【China Mobile Cloud】
奖励模型 ORM ✅ ❌ 【昇腾】
PRM ✅ ❌ 【昇腾】
--- ## 开发工具链
场景 特性 Mcore Legacy 贡献方
权重转换 Huggingface 与 Megatron 互转 ✅ ✅ 【昇腾】
数据处理 预训练数据处理 ✅ ✅ 【昇腾】
Alpaca风格指令微调数据处理 ✅ ✅ 【昇腾】
ShareGPT风格指令微调数据处理 ✅ ✅ 【昇腾】
Pairwise数据集处理 ✅ ✅ 【NAIE】
分布式推理 流式推理 ✅ ✅ 【NAIE】
Chat对话 ✅ ✅ 【NAIE】
分布式评估 开源测评集评测 ✅ ✅ 【NAIE】
--- ## 昇腾工具链
场景 特性 Mcore Legacy 贡献方
性能采集分析 基于昇腾芯片采集 profiling 数据 ✅ ✅ 【昇腾】
高可用性 基于昇腾芯片开启确定性计算 ✅ ✅ 【昇腾】
基于昇腾芯片开启临终 ckpt 保存 ✅ ✅ 【计算研究部】
--- ## 版本配套与维护策略
依赖软件 版本 软件安装指南 推荐硬件形态
昇腾NPU驱动 在研版本 《驱动固件安装指南》 Atlas 900 A2 PODc
昇腾NPU固件
Toolkit(开发套件) 在研版本 《CANN 软件安装指南》
Kernel(算子包)
NNAL(Ascend Transformer Boost加速库)
PyTorch 在研版本 《Ascend Extension for PyTorch 配置与安装》
torch_npu插件
apex
MindSpeed-LLM版本有以下五个维护阶段: | **状态** | **时间** | **说明** | | ------------------- | -------- |----------------------------------------------------------------------| | 计划 | 1—3 个月 | 计划特性 | | 开发 | 3 个月 | 开发特性 | | 维护 | 6-12 个月| 合入所有已解决的问题并发布版本,针对不同的MindSpeed-LLM版本采取不同的维护策略,常规版本和长期支持版本维护周期分别为6个月和12个月 | | 无维护 | 0—3 个月 | 合入所有已解决的问题,无专职维护人员,无版本发布 | | 生命周期终止(EOL) | N/A | 分支不再接受任何修改 | MindSpeed-LLM已发布版本维护策略: | **MindSpeed-LLM版本** | **对应标签** | **维护策略** | **当前状态** | **发布时间** | **后续状态** | **EOL日期** | | ------------------- | ----------- | -------- | ------------ | ----------------------- | ----------- | -----------| | 1.0.0 | \ | 常规版本 | 维护 | 2024/12/30 | 预计2025/06/30起无维护 | | | 1.0.RC3 | v1.0.RC3.0 | 常规版本 | 维护 | 2024/09/30 | 预计2025/03/30起无维护 | | | 1.0.RC2 | v1.0.RC2.0 | 常规版本 | EOL | 2024/06/30 | 生命周期终止 | 2024/12/30 | | 1.0.RC1 | v1.0.RC1.0 | 常规版本 | EOL | 2024/03/30 | 生命周期终止 | 2024/9/30| | bk_origin_23 | \ | Demo | EOL | 2023 | 生命周期终止 | 2024/6/30 | --- ## 致谢 MindSpeed-LLM由华为公司的下列部门以及昇腾生态合作伙伴联合贡献 : 华为公司: - 昇腾计算产品部 - 计算算法部 - 计算研究部 - 公共开发部:NAIE - 全球技术服务部:GTS - 华为云计算 - 昇腾计算生态使能部 生态合作伙伴: - 移动云(China Mobile Cloud):大云震泽智算平台 感谢来自社区的每一个PR,欢迎贡献 MindSpeed-LLM --- ## 安全声明 [MindSpeed-LLM安全声明](https://gitee.com/ascend/MindSpeed-LLM/wikis/%E5%AE%89%E5%85%A8%E7%9B%B8%E5%85%B3/%E5%AE%89%E5%85%A8%E5%A3%B0%E6%98%8E)