幽若 9b24e1b73a !224 融合算子后端迁移
Merge pull request !224 from 幽若/update-fused
2025-05-30 06:13:41 +00:00
2025-05-30 06:13:41 +00:00
2024-11-26 09:24:53 +08:00
2024-11-26 09:24:53 +08:00
2024-11-26 09:24:53 +08:00
2024-11-26 09:24:53 +08:00
2024-11-26 09:24:53 +08:00
2024-11-26 09:24:53 +08:00
2025-04-17 08:18:18 +00:00

Badge Visit our community


📝 简介

openMind Library是一个大模型微调套件通过命令行接口或SDK原生支持在昇腾NPU上进行微调、推理、评估和部署。通过简化使用流程充分利用NPU的独特优势为大模型应用提供高效、可扩展的解决方案。

为什么使用 openMind Library

基于Transformers框架openMind Library实现了高效的微调流程。它集成了PyTorch生态中常用的工具库功能提供数据预处理、权重加载、低参微调、量化适配以及训练跟踪等全流程的一键式解决方案。此外库内融合了针对昇腾NPU的优化算子可大幅提升模型训练效率。

openMind Library提供了统一的Pipeline SDK提供更快速、更高效的推理体验。

模型部署方面openMind Library基于LMDeploy和MindIE提供多后端部署支持极大地简化了部署流程使得模型部署更加便捷。

openMind Library目前支持的特性如下

  • 模型类型支持Qwen2、Qwen2.5、Qwen1.5、Internlm2、Internlm3、Llama3.1、Glm4、Skywork等系列模型
  • 微调训练SFT训练
  • 混合精度训练: BF16、FP16
  • 高效微调LoRA微调、DoRA微调、PiSSA微调、4bit QLoRA微调
  • 分布式训练native DDP、DeepSpeed
  • 微调加速npu_fusion_attention融合算子、npu_rms_norm融合算子、RoPE融合算子、SwiGLU融合算子
  • 训练监控SwanLab
  • 多轮对话Transformers/Mindformers多backend
  • 推理Transformers/Diffusers多backend、text-generation/text-to-image多任务
  • 部署LMDeploy、MindIE
  • 评估lm_eval

🔥 DeepSeek功能支持

模型蒸馏 DeepSeek-R1-Distill系列LLM模型微调 Open-R1复现
在研中,详情请见模型蒸馏章节 在研中,详情请见DeepSeek-R1-Distill模型微调章节 在研中,详情请见基于昇腾NPU复现open-r1文档

🌟 项目特色

openMind Library支持QLoRA融合算子等训练加速手段帮助您减少显存开销提升微调训练速度。

Memory Optimization Performance Boosting
Qwen2.5-7B Full/LoRA/QLoRA显存开销
npu=8, per_device_train_batch_size=1, max_length=1024
Qwen2.5-7B Full/LoRA性能对比
npu=8, max_length=1024, train_samples_per_second

🚀 更新日志

  • 2025/02/20新增DoRA低参微调算法、新增SwiGLU和RoPE融合算子。
  • 2025/02/06新增LLM二次预训练、新增融合算子SDK支持、数据集支持txt/csv/parquet格式。
  • 2025/01/17openMind Library 1.0.0版本发布支持cli命令启动微调、LoRA权重合并、SwanLab训练监控以及LMDeploy/MindIE部署。

⚙️ 软件版本配套

openMind Library master版本配套说明如下目前仅支持Linux系统。

产品名称 产品版本 获取链接
MindSpore 2.4.0 https://www.mindspore.cn/versions#2.4.0
PyTorch 2.1.0 https://download.pytorch.org/whl/torch/
PyTorch-NPU 6.0.rc3-pytorch2.1.0 https://gitee.com/ascend/pytorch/releases/tag/v6.0.rc3-pytorch2.1.0
CANN 8.0.RC3.beta1 https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.0.RC3.beta1
HDK 1.0.26.alpha https://www.hiascend.com/hardware/firmware-drivers/community?product=6&model=27&cann=8.0.RC3.alpha003&driver=1.0.26.alpha
MindSpeed可选 1.0.RC2/ https://gitee.com/ascend/MindSpeed/tree/1.0.RC2/
Megatron-LM可选 0.6.0 https://github.com/NVIDIA/Megatron-LM/releases/tag/core_v0.6.0
MindSpore NLP可选 0.4.1 https://github.com/mindspore-lab/mindnlp/tree/v0.4.1
diffusers可选 0.27.0 https://github.com/huggingface/diffusers/tree/v0.27.0
silicondiff_npu可选 2.1.0 https://pypi.org/project/silicondiff-npu/2.1.0/
mindone可选 0.2.0 https://gitee.com/mindspore-lab/mindone/tree/v0.2.0/

配套版本安装,推荐用户参考安装文档,以确保顺利完成固件和驱动的配置。

🛠️ 安装

openMind Library支持PyTorch和MindSpore双框架您可以根据需求选择安装对应框架和依赖。请注意不要同时安装双框架。您可以直接使用pip install openmind的形式安装源码或者git clone获取源码手动安装以使用更多示例脚本。

  • 使用pip进行安装
# 不安装框架仅安装openMind Library
pip install openmind

# aarch64环境下安装PyTorch框架及其框架
pip install openmind[pt]

# x86环境下安装PyTorch框架及其框架
pip install openmind[pt] --extra-index-url https://download.pytorch.org/whl/cpu    

# MindSpore框架及其依赖
pip install openmind[ms]
  • 从源代码安装:
git clone https://gitee.com/ascend/openmind.git
cd openmind

# 不安装框架仅安装openMind Library
pip install -e .

# aarch64环境下安装PyTorch框架及其框架
pip install -e .[pt]

# x86环境下安装PyTorch框架及其框架
pip install -e .[pt] --extra-index-url https://download.pytorch.org/whl/cpu    

# MindSpore框架及其依赖
pip install -e .[ms]

关于openMind Library的安装步骤推荐用户参考安装文档,以确保顺利并正确地完成安装过程。


🧰 快速上手

openMind Library支持通过cli或SDK方式启动微调、推理、评估、多轮对话和部署。运行示例前请初始化CANN环境变量

# 默认安装路径,如有必要请修改到特定安装路径
source /usr/local/Ascend/ascend-toolkit/set_env.sh

微调

您可以在openMind源码目录下在终端中输入以下命令启动微调示例快速拉起全参/LoRA/DoRA/QLoRA微调。

全参微调

openmind-cli train examples/features/train/train_sft_full.yaml

LoRA微调

openmind-cli train examples/features/train/train_sft_lora.yaml

DoRA微调

openmind-cli train examples/features/train/train_sft_dora.yaml

PiSSA微调

openmind-cli train examples/features/train/train_sft_pissa.yaml

QLoRA微调

QLoRA微调启动前需要手动安装bitandbytes仓请参考QLoRA章节中的安装指引完成前置配置。

openmind-cli train examples/features/train/train_sft_qlora.yaml

LoRA权重合并

基于LoRA等低参数微调方法训练完成后系统将保存适配器权重。通过openMind Library您可以使用yaml配置文件或命令行传参方式快速完成权重合并操作便于后续模型部署与应用。

openmind-cli export examples/features/export/merge_lora_qwen2_0.5b.yaml

NPU亲和算子优化

openMind Library目前集成了多种融合算子可以显著提升模型微调训练性能。您可以参考基础教程-融合算子使能文档使用该功能提升训练速度。

训练功能完整说明(含数据处理、参数配置及启动方式等)请参阅基础教程-模型训练文档。

推理

openMind Library支持基于cli命令快速启动文本生成推理。

openmind-cli run text-generation --framework pt --input "What is AI?"

openmind-cli run也支持文生图推理。

openmind-cli run  text-to-image  --framework pt --backend diffusers --input "masterpiece, best quality, Cute dragon creature, pokemon style, night, moonlight, dim lighting"

如果您需要集成openMind Library的推理功能或者有其他使用需求您也可以使用对应的SDK接口进行调用。

from openmind import pipeline
   
pipe = pipeline(
    task="text-generation",
    model="Baichuan/Baichuan2_7b_chat_pt",
    framework="pt",
    backend="transformers",
    trust_remote_code=True,
    device="npu:0",
)
output = pipe("Give three tips for staying healthy.")
print(output)

更多推理功能使用,您可以参考基础教程-模型推理文档和单轮推理章节。

评估

openMind Library集成了lm_eval进行模型评估推理。您可以调用openmind-cli eval命令,从魔乐社区下载评估数据集完成评估。

openmind-cli eval --model Baichuan/Baichuan2_7b_chat_pt --device npu:0 --tasks arithmetic --batch_size 64

更多使用方式和支持的评估数据集列表,请查看大语言模型评估章节。

多轮对话

openMind Library集成了transformers和Mindformers启动多轮对话。您可以调用openmind-cli chat命令,一键式快速启动对话服务。

openmind-cli chat --model_id Qwen2.5-7B-Chat --device 0

更多运行方式您可以查看多轮对话章节。

部署

openMind Library支持了LMDeploy和MindIE部署模型服务。您可以使用以下命令运行示例完成服务部署。

基于LMDeploy部署Qwen2-7B模型

在您基于LMDeploy部署模型之前请参考LMDeploy章节,进行部署前的环境准备。

openmind-cli deploy AI-Research/Qwen2-7B --backend lmdeploy

调用API接口完成推理

curl http://127.0.0.1:1025/v1/chat/completions \
      -H 'Content-Type: application/json' \
      -d '{"model": "AI-Research/Qwen2-7B", "messages": "推荐一个海边度假的地方"}'

更多deploy接口使用和MindIE后端使用请查看模型部署章节。


🔧 版本维护

分支维护策略

openMind版本分支的维护阶段如下

状态 时间 说明
计划 1—3 个月 计划特性
开发 3 个月 开发特性
维护 6-12个月 常规分支维护6个月, 长期支持分支维护12个月。对重大BUG进行修复不合入新特性并视BUG的影响发布补丁版本
生命周期终止EOL N/A 分支不再接受任何修改

openMind版本维护策略

openMind版本 维护策略 当前状态 发布时间 后续状态 EOL日期
1.1.0 常规分支 开发 2025/03/31 预计发布于3月31日 2025/09/30
1.0.0 常规分支 维护 2025/01/17 - 2025/07/17
0.9.1 预研分支 不维护 2025/01/17 - -
0.9 预研分支 不维护 2025/01/17 - -
0.8 预研分支 不维护 2025/01/17 - -
0.7 预研分支 不维护 2025/01/17 - -

📇 指南链接

我们也为您提供了更详细的指南文档,您可以根据以下链接跳转查询对应功能明细。


📚 贡献

  1. 在上传PR之前请确保所有测试都通过。首先在本地运行如下命令。
# The scripts below run on system default python version by default. If you want to use other python version, set the env
# PY_VERSION. For example, `PY_VERSION=3.8 ./ci/lint.sh`
# Lint check
./ci/lint.sh
# Unit test
./ci/unit_test.sh
# Functional test, Please generate the HUB_TOKEN from openmind by yourself and use it privatelly.
HUB_TOKEN=your_hub_token ./ci/functional_test.sh
  1. 当您推送或更新PRPull Request系统将自动触发CI持续集成构建和测试流程。若所有CI构建和测试均顺利通过ci-pipeline-passed标记将自动添加到您的PR中。然而若出现CI故障您可以通过点击CI日志链接来详细查看失败原因并在本地进行必要的修复。一旦您完成了修复并希望重新运行CI作业只需在PR中留下评论compile即可。

  2. 详细贡献指南请参考开发者教程-贡献指南


🔒 安全声明

为保障使用过程安全,推荐用户参考安全声明了解相关安全信息,进行必要的安全加固。


📖 免责声明

致openMind Library使用者

  1. openMind Library提供的模型仅供您用于非商业目的。
  2. openMind Library仅提示性地向您建议可用于模型微调的数据集华为不提供任何数据集如您使用这些数据集进行训练请您特别注意应遵守对应数据集的License如您因使用数据集而产生侵权纠纷华为不承担任何责任。
  3. 如您在使用openMind Library过程中发现任何问题包括但不限于功能问题、合规问题请在Gitee提交issue我们将及时审视并解决。

致数据集所有者

如果您不希望您的数据集在openMind Library中被提及或希望更新关于您的数据集的描述请在Gitee提交issue我们将根据您的issue要求删除或更新您的数据集描述。衷心感谢您对openMind Library的理解和贡献。

许可证

openMind Library使用木兰宽松许可证第2版MulanPSL v2。详见License文件。

Description
No description provided
Readme MulanPSL-2.0 18 MiB
Languages
Python 99.6%
Shell 0.4%