diff --git a/README.md b/README.md index b50ad274f86ac4c5afa001f0ad42a68a39b96f0a..9063ad8f6ffdb1022647f3a645faa00011d5b5bc 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@

-MindSpeed-Core-MS 是链接华为自研AI框架[MindSpore](https://www.mindspore.cn/install/)+华为[昇腾大模型加速解决方案MindSpeed](https://www.hiascend.cn/software/mindspeed)的重要组件,旨在提供华为全栈易用的端到端的自然语言模型以及多模态模型训练解决方案。MindSpeed-Core-MS内部提供一键式补丁工具,可帮助用户将模型使能加速库MindSpeed/MindSpeed-LLM/MindSpeed-MM以及三方库的AI框架依赖由PyTorch无缝切换为MindSpore,以此获得更极致的性能体验。 +MindSpeed-Core-MS 是链接华为自研AI框架[MindSpore](https://www.mindspore.cn/install/)+华为[昇腾大模型加速解决方案MindSpeed](https://www.hiascend.cn/software/mindspeed)的重要组件,旨在提供华为全栈易用的端到端的自然语言模型以及多模态模型训练解决方案。MindSpeed-Core-MS 提供了代码一键转写工具,可帮助用户将模型使能加速库MindSpeed/MindSpeed-LLM/MindSpeed-MM以及三方库依赖由PyTorch无缝切换为MindSpore,以此获得更极致的性能体验。另外,MindSpeed-Core-MS 也提供了动态图调试工具,使用户在分布式训练场景下更容易地进行代码调试和debug。 --- @@ -23,19 +23,21 @@ MindSpeed-Core-MS 是链接华为自研AI框架[MindSpore](https://www.mindspore MindSpeed-Core-MS的依赖配套如下表,安装步骤参考[基础安装指导](./docs/INSTALLATION.md)。 -| 依赖软件 | | -| ---------------- | ------------------------------------------------------------ | +| 依赖软件 | 版本 | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | 昇腾NPU驱动固件 | [在研版本](https://www.hiascend.com/hardware/firmware-drivers/community?product=1&model=30&cann=8.0.RC3.alpha002&driver=1.0.26.alpha) | -| 昇腾 CANN | [在研版本](https://www.hiascend.com/zh/developer/download/community/result?module=cann) | -| MindSpore | [MindSpore 2.6.0](https://www.mindspore.cn/install/) | -| Python | >=3.9 | -| Python三方库依赖 | requirements.txt | -| 镜像链接 | [images](http://mirrors.cn-central-221.ovaijisuan.com/detail/129.html) | +| 昇腾 CANN | [在研版本](https://www.hiascend.com/zh/developer/download/community/result?module=cann) | +| MindSpore | [2.6.0](https://www.mindspore.cn/install/) | +| MSAdapter | [在研版本](https://openi.pcl.ac.cn/OpenI/MSAdapter.git) | +| Python | >=3.9 | +| Python三方库依赖 | requirements.txt | +| 镜像链接 | [images](http://mirrors.cn-central-221.ovaijisuan.com/detail/186.html) | -注:Python 三方库依赖文件`requirements.txt`列举的是模型训练所需要的python三方库 +注:Python 三方库依赖文件`requirements.txt`列举的是模型训练所需要的Python三方库。 ## 支持模型 -下方仅部分列举所支持模型。 + +下方仅部分列举所支持模型,所支持的模型清单详见[支持模型全集](./docs/MODELS.md)。 @@ -76,8 +78,6 @@ MindSpeed-Core-MS的依赖配套如下表,安装步骤参考[基础安装指 - - @@ -88,94 +88,102 @@ MindSpeed-Core-MS的依赖配套如下表,安装步骤参考[基础安装指 - -
r1-zero 52x8 BF16
r1-zero 2x8 BF16
# 使用指南 -按照[基础安装指导](./docs/INSTALLATION.md)完成相关基础依赖安装后,用户可试用自然语言模型对应的补丁工具拉取代码并完成相关转换。 +按照[基础安装指导](./docs/INSTALLATION.md)完成相关基础依赖安装后,用户可根据具体使用场景(MindSpeed-LLM/MindSpeed-MM/MindSpeed-RL)进行相应的自动适配。 ## 仓库拉取 执行以下命令拉取MindSpeed-Core-MS代码仓 ```shell -git clone -b feature-0.2 https://gitee.com/ascend/MindSpeed-Core-MS.git +git clone https://gitee.com/ascend/MindSpeed-Core-MS.git -b master ``` -## MindSpeed-LLM - -### 一键转换 +## 一键适配 -补丁工具集成了相关代码仓拉取、代码自动转换适配以及模型启动shell脚本自动适配功能,依赖以下配置: +MindSpeed-Core-MS提供了一键适配命令脚本,集成了基于MindSpeed进行模型训练的相关代码仓拉取、代码自动转写及适配、环境变量设置等功能,用户根据使用场景(大语言模型/多模态模型/强化学习)执行相应命令即可完成一键自动适配,代码自动转写的工具原理详见[转写工具](./docs/convert_tool.md)。在运行一键适配命令前,请确保: +- 基础依赖已安装 - 所部署容器网络可用,python已安装 - git已完成配置,可以正常进行clone操作 -详细介绍请见补丁工具说明。用户执行命令即可一键转换。 +**注意:各个使用场景下代码仓不能混用,建议针对各场景使用独立目录。** + +### 大语言模型:MindSpeed-LLM +执行以下操作进行一键适配后,用户即可进行大语言模型训练: ```shell cd MindSpeed-Core-MS -#deepseek v3预训练、微调 -source test_convert_llm.sh +source auto_convert_llm.sh ``` -### 设置环境 +此处提供以下大语言模型训练拉起流程作为参考。 + +- [**DEEPSEEK-V3预训练 & 微调**](./docs/deepseekv3.md) + +若在环境中`PYTHONPATH`等环境变量失效(例如退出容器后再进入等),可执行如下命令重新设置环境变量 ```shell -#deepseek v3预训练、微调 +# 在MindSpeed-Core-MS目录下执行 MindSpeed_Core_MS_PATH=$(pwd) -export PYTHONPATH=${MindSpeed_Core_MS_PATH}/msadapter/mindtorch:${MindSpeed_Core_MS_PATH}/Megatron-LM:${MindSpeed_Core_MS_PATH}/MindSpeed:${MindSpeed_Core_MS_PATH}/MindSpeed-LLM:${MindSpeed_Core_MS_PATH}/transformers/src/:$PYTHONPATH +export PYTHONPATH=${MindSpeed_Core_MS_PATH}/MSAdapter/mindtorch:${MindSpeed_Core_MS_PATH}/Megatron-LM:${MindSpeed_Core_MS_PATH}/MindSpeed:${MindSpeed_Core_MS_PATH}/MindSpeed-LLM:${MindSpeed_Core_MS_PATH}/transformers/src/:$PYTHONPATH ``` -### 模型训练 +--- -在进行一键转换安装后,用户即可进行模型训练,提供以下模型任务拉起流程作为参考。 +### 多模态模型:MindSpeed-MM +执行以下操作进行一键适配后,用户即可进行多模态模型训练: -- [**DEEPSEEK-V3预训练 & 微调**](./docs/deepseekv3.md) +```shell +cd MindSpeed-Core-MS +source auto_convert_mm.sh +``` ---- +此处提供以下多模态模型训练拉起流程作为参考。 -## MindSpeed-RL +- [**Qwen2.5VL 微调**](./docs/) -### 一键转换 +若在环境中`PYTHONPATH`等环境变量失效(例如退出容器后再进入等),可执行如下命令重新设置环境变量 -补丁工具集成了相关代码仓拉取、代码自动转换适配以及模型启动shell脚本自动适配功能,依赖以下配置: +```shell +# 在MindSpeed-Core-MS目录下执行 +MindSpeed_Core_MS_PATH=$(pwd) +export PYTHONPATH=${MindSpeed_Core_MS_PATH}/MSAdapter/mindtorch:${MindSpeed_Core_MS_PATH}/Megatron-LM:${MindSpeed_Core_MS_PATH}/MindSpeed:${MindSpeed_Core_MS_PATH}/MindSpeed-MM:${MindSpeed_Core_MS_PATH}/transformers/src/:$PYTHONPATH +``` -- 所部署容器网络可用,python已安装 -- git已完成配置,可以正常进行clone操作 +--- -详细介绍请见补丁工具说明。用户执行命令即可一键转换。 +### 强化学习:MindSpeed-RL +执行以下操作进行一键适配后,用户即可进行强化学习模型训练: ```shell cd MindSpeed-Core-MS #deepseek v3-r1-zero、qwen25-7b-r1-zero -source test_convert_rl.sh +source auto_convert_rl.sh ``` -### 设置环境 +此处提供以下强化模型训练拉起流程作为参考。 + +- [**DeepSeek-R1-ZERO-Qwen2.5 7B**](./docs/) + +若在环境中`PYTHONPATH`等环境变量失效(例如退出容器后再进入等),可执行如下命令重新设置环境变量 ```shell -#deepseek v3-r1-zero、qwen25-7b-r1-zero +# 在MindSpeed-Core-MS目录下执行 MindSpeed_Core_MS_PATH=$(pwd) -Ascend_PATH=/usr/loacl/Ascend/ascend-toolkit/latest/ -export PYTHONPATH=${MindSpeed_Core_MS_PATH}/msadapter/mindtorch:${MindSpeed_Core_MS_PATH}/MindSpeed-LLM/:${MindSpeed_Core_MS_PATH}/MindSpeed/: \ - ${MindSpeed_Core_MS_PATH}/Megatron-LM/:${MindSpeed_Core_MS_PATH}/vllm/:${MindSpeed_Core_MS_PATH}/vllm-ascend/: \ - ${MindSpeed_Core_MS_PATH}/transformers/src/: \ - ${Ascend_PATH}/python/site-packages:${Ascend_PATH}/opp/built-in/op_impl/ai_core/tbe: +export PYTHONPATH=${MindSpeed_Core_MS_PATH}/MSAdapter/mindtorch:${MindSpeed_Core_MS_PATH}/MindSpeed-LLM/:${MindSpeed_Core_MS_PATH}/MindSpeed/:${MindSpeed_Core_MS_PATH}/Megatron-LM/:${MindSpeed_Core_MS_PATH}/vllm/:${MindSpeed_Core_MS_PATH}/vllm-ascend/:${MindSpeed_Core_MS_PATH}/transformers/src/:$PYTHONPATH ``` -### 模型训练 - -在进行一键转换安装后,用户即可进行模型训练,提供以下模型任务拉起流程作为参考。 - -- [**DEEPSEEK V3-R1-ZERO/QWEN25-7B-R1-ZERO**](./docs/GRPO.md) - --- +## 分布式调试工具 +针对传统pdb工具在分布式训练场景下无法给所有进程/子进程设置断点导致训练进程挂死的问题,我们开发了分布式调试pdb工具,以帮助用户在模型训练/开发过程中遇到精度无法对齐等问题时能够快速debug定位。分布式调试工具的使用详见[分布式调试工具使用说明](./docs/distributed_debug.md)。 + # 常见问题 FAQ 相关FAQ请参考链接:[FAQ](./docs/FAQ.md) @@ -186,23 +194,31 @@ export PYTHONPATH=${MindSpeed_Core_MS_PATH}/msadapter/mindtorch:${MindSpeed_Core MindSpeed-Core-MS版本有以下五个维护阶段: -| **状态** | **时间** | **说明** | -| ------------------- | -------- |----------------------------------------------------------------------| -| 计划 | 1—3 个月 | 计划特性 | -| 开发 | 3 个月 | 开发特性 | -| 维护 | 6-12 个月| 合入所有已解决的问题并发布版本,针对不同的MindSpeed-Core-MS版本采取不同的维护策略,常规版本和长期支持版本维护周期分别为6个月和12个月 | -| 无维护 | 0—3 个月 | 合入所有已解决的问题,无专职维护人员,无版本发布 | -| 生命周期终止(EOL) | N/A | 分支不再接受任何修改 | +| **状态** | **时间** | **说明** | +| ------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| 计划 | 1—3 个月 | 计划特性 | +| 开发 | 3 个月 | 开发特性 | +| 维护 | 6-12 个月 | 合入所有已解决的问题并发布版本,针对不同的MindSpeed-Core-MS版本采取不同的维护策略,常规版本和长期支持版本维护周期分别为6个月和12个月 | +| 无维护 | 0—3 个月 | 合入所有已解决的问题,无专职维护人员,无版本发布 | +| 生命周期终止(EOL) | N/A | 分支不再接受任何修改 | MindSpeed-Core-MS已发布版本维护策略: -| **MindSpeed-Core-MS版本** | **维护策略** | **当前状态** | **发布时间** | **后续状态** | **EOL日期** | -|-----------------|-----------|--------|------------|-----------------------|-----------| -| feature-0.2 | Demo | 开发 | | | | -| | Demo | 开发 | | | | +| **MindSpeed-Core-MS版本** | **维护策略** | **当前状态** | **发布时间** | **后续状态** | **EOL日期** | +| ------------------------------- | ------------------ | ------------------ | ------------------ | ------------------ | ----------------- | +| feature-0.2 | Demo | 维护 | 2025.4.15 | | | +| master | / | 开发 | 预计2025.6.30 | / | / | --- # 安全声明 [MindSpeed-Core-MS安全声明](./docs/SECURITYNOTE.md) + +# 免责声明 + +## 致MindSpeed-Core-MS使用者 + +1. MindSpeed-Core-MS提供的模型仅供您用于非商业目的。 +2. 对于各模型,MindSpeed-Core-MS平台仅提示性地向您建议可用于训练的数据集,华为不提供任何数据集,如您使用这些数据集进行训练,请您特别注意应遵守对应数据集的License,如您因使用数据集而产生侵权纠纷,华为不承担任何责任。 +3. 如您在使用MindSpeed-Core-MS过程中,发现任何问题(包括但不限于功能问题、合规问题),请在Gitee提交issue,我们将及时审视并解决。 diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 3beff3ecbc729f316d1c8ebc0a97b9da82eb62e1..9859749a03a0ed64ad6410d1d703ee664d28ba36 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -16,10 +16,14 @@ 下载[CANN](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha003/softwareinst/instg/instg_0002.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit),请根据系统和硬件产品型号选择匹配版本的。参考[安装CANN软件包](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha003/softwareinst/instg/instg_0007.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)官方指导或执行以下命令安装: ```shell -./Ascend-cann-toolkit__linux-.run --install -./Ascend-cann-kernels-__linux-.run --install +# 安装文件名跟随版本迭代及硬件版本,根据实际修改 +bash Ascend-cann-toolkit_8.1.RC1_linux-aarch64.run --full +bash Ascend-cann-kernels-_8.1.RC1_linux-aarch64.run --install +source /usr/local/Ascend/ascend-toolkit/set_env.sh # 安装nnal包需要source环境变量 +bash Ascend-cann-nnal_8.1.RC1_linux-aarch64.run --install # 设置环境变量 source /usr/local/Ascend/ascend-toolkit/set_env.sh +source /usr/local/Ascend/nnal/atb/set_env.sh --cxxabi=0 ``` ### MindSpore 安装 diff --git a/docs/MODELS.md b/docs/MODELS.md index 11e17760894c53d04b8c77bc7319881a2d7af40e..afe4a37d3941b2f95c7ca8f468499c03c22c6aed 100644 --- a/docs/MODELS.md +++ b/docs/MODELS.md @@ -31,57 +31,8 @@ - CodeLlama - 34B - 4K - Mcore - 2x8 - - - - - InternLM2 - 20B - 4K - Mcore - 1x8 - - - - 32K - Mcore - 1x8 - - - - - InternLM2.5 - 1.8B - 32K - Mcore - 1x8 - - - - - 7B - 32K - Mcore - 1x8 - - - - - 20B - 32K - Mcore - 2x8 - - - - - LLaMA2 - 7B + LLaMA2 + 7B 4K Mcore 1x8 @@ -89,31 +40,21 @@ - 13B - 4K + 16K Mcore 1x8 - 34B - 4K - Mcore - 2x8 - - - - - 70B - 4K + 32K Mcore - 4x8 + 1x8 - LLaMA3 + LLaMA3 8B 8K Mcore @@ -121,14 +62,6 @@ - - 70B - 8K - Mcore - 8x8 - - - LLaMA3.1 8B @@ -170,120 +103,23 @@ - - - Qwen1.5 - 0.5B - 8K - Mcore - 1x8 - - - + + Qwen1.5 1.8B 8K Mcore 1x8 - - 4B - 8K - Mcore - 1x8 - - - - 7B - 8K - Mcore - 1x8 - - - - 14B - 8K - Mcore - 1x8 - - - - 32B - 8K - Mcore - 4x8 - - - - 72B - 8K - Mcore - 8x8 - - - - 110B - 8K - Mcore - 8x8 - - - - - Qwen2 - 0.5B - 4K - Mcore - 1x8 - - - - 32K - Mcore - 1x8 - - - - 1.5B - 4K - Mcore - 1x8 - - - - 32K - Mcore - 1x8 - - - - 7B + + Qwen2 + 7B 4K Mcore 1x8 - - 32K - Mcore - 1x8 - - - - 57B-A14B - 4K - Mcore - 8x8 - - - - 72B - 4K - Mcore - 4x8 - - Qwen2.5 @@ -326,83 +162,7 @@ - Mixtral - 8x7B - 32K - Mcore - 8x8 - - - - - 8x22B - 32K - Mcore - 8x8 - - - - - 64K - Mcore - 8x8 - - - - - Mistral - 7B - 32K - Mcore - 1x8 - - - - - Gemma - 2B - 8K - Mcore - 1x8 - - - - - 7B - 8K - Mcore - 1x8 - - - - - Gemma2 - 9B - 8K - Mcore - 1x8 - - - - - 27B - 8K - Mcore - 2x8 - - - - - DeepSeek-V2-Lite - 16B - 8K - Mcore - 1x8 - - - - - MiniCPM + MiniCPM 2B 4K Mcore @@ -411,8 +171,9 @@ - 8x2B - 4K + DeepSeek-V2-Lite + 16B + 8K Mcore 1x8 @@ -427,6 +188,15 @@ + + DeepSeek-V3 + 671B + 4K + Mcore + 64x8 + + + @@ -538,8 +308,8 @@ 微调 8x16 BF16 - / - / + + \ No newline at end of file