openMind+LLaMAFactory:Qwen1.5-7B 微调及推理昇腾实践

打印 上一主题 下一主题

主题 2079|帖子 2079|积分 6237

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一 概述

Qwen系列模型是由阿里巴巴开发的开源大语言模型,其被广泛用于自然语言处理的多种使命,包罗文本生成、翻译、择要生成等。本文的目标是使用 openMind 工具套件及 LLaMA-Factory 开源微调框架,在昇腾 NPU 上跑通 Qwen1.5-7B 模型的微调和推理全流程。

二 环境准备

1 安装 Ascend CANN Toolkit 和 Kernels

请参考​​安装教程​​或使用以下命令快速安装。
  1. # 请替换URL为CANN版本和设备型号对应的URL
  2. # 安装CANN Toolkit
  3. wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run
  4. bash Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install
  5. # 安装CANN Kernels
  6. wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run
  7. bash Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install
  8. # 设置环境变量
  9. source /usr/local/Ascend/ascend-toolkit/set_env.sh
复制代码
2 安装 openMind Library 和 openMind Hub Client



  • 安装openMind Hub Client
  1. pip install openmind_hub
复制代码


  • 安装openMind Library,并安装PyTorch框架及其依赖。
  1. pip install openmind[pt]
复制代码
更详细的安装信息请参考openMind官方的​​环境安装​​章节。
3 安装 LLaMA-Factory

使用以下指令快速安装:
  1. git clone https://github.com/hiyouga/LLaMA-Factory.git
  2. cd LLaMA-Factory
  3. pip install -e ".[torch-npu,metrics]"
复制代码
三 模型及配置文件准备

1 模型下载

参考魔乐社区​​官方指引​​,或使用以下脚本从魔乐社区下载 Qwen1.5-7B 模型:
  1. from openmind_hub import snapshot_download
  2. model_path = snapshot_download("PyTorch-NPU/qwen1.5_7b", revision="main", resume_download=True)
复制代码
2 配置文件准备

本文所用配置文件​​qwen1_5_lora_sft_ds.yaml​​内容如下:
  1. ### model
  2. ### 编辑此变量为存储该模型的路径
  3. model_name_or_path: <your/path/to/PyTorch-NPU/qwen1.5_7b>
  4. ### method
  5. stage: sft
  6. do_train: true
  7. finetuning_type: lora
  8. lora_target: q_proj,v_proj
  9. ### ddp
  10. ddp_timeout: 180000000
  11. deepspeed: examples/deepspeed/ds_z0_config.json
  12. ### dataset
  13. dataset: identity,alpaca_en_demo
  14. template: qwen
  15. cutoff_len: 1024
  16. max_samples: 1000
  17. overwrite_cache: true
  18. preprocessing_num_workers: 16
  19. ### output
  20. output_dir: saves/Qwen1.5-7B/lora/sft
  21. logging_steps: 10
  22. save_steps: 500
  23. plot_loss: true
  24. overwrite_output_dir: true
  25. ### train
  26. per_device_train_batch_size: 1
  27. gradient_accumulation_steps: 2
  28. learning_rate: 0.0001
  29. num_train_epochs: 3.0
  30. lr_scheduler_type: cosine
  31. warmup_ratio: 0.1
  32. fp16: true
  33. ### eval
  34. val_size: 0.1
  35. per_device_eval_batch_size: 1
  36. evaluation_strategy: steps
  37. eval_steps: 500
复制代码
四 原始模型直接推理

验证 LLaMA-Factory 在昇腾 NPU 上推理功能是否正常:
  1. ASCEND_RT_VISIBLE_DEVICES=0 llamafactory-cli webchat --model_name_or_path <your/path/to/PyTorch-NPU/qwen1.5_7b> \
  2.                 --adapter_name_or_path saves/Qwen1.5-7B/lora/sft \
  3.                 --template qwen \
  4.                 --finetuning_type lora
复制代码
注:ASCEND_RT_VISIBLE_DEVICES 为指定 NPU 卡的环境变量,可根据已有环境修改
如下图所示可正常举行对话,即为可正常推理:



五 自定义数据集构建

本文用到的数据集为 LLaMA-Factory 自带的 identity 和 alpaca_en_demo,对 identity 数据集举行如下全局更换即可实现定制指令:


  • ​​{{name}}​​ 更换为 Ascend-helper
  • ​​{{author}}​​ 更换为 Ascend
更多自定义数据集的构建请参考​​官方数据集构造指引​​ 。

六 微调与推理

基于 LoRA 的 sft 指令微调

使用以下指令启动 Qwen1.5-7B 模型微调:
  1. ASCEND_RT_VISIBLE_DEVICES=0 llamafactory-cli train <your_path>/qwen1_5_lora_sft_ds.yaml
复制代码
动态归并 LoRA 的推理

使用以下指令实现动态归并 LoRA 的 Qwen1.5-7B 模型推理:
  1. ASCEND_RT_VISIBLE_DEVICES=0 llamafactory-cli chat --model_name_or_path <your/path/to/PyTorch-NPU/qwen1.5_7b> \
  2.                 --adapter_name_or_path saves/Qwen1.5-7B/lora/sft \
  3.                 --template qwen \
  4.                 --finetuning_type lora
复制代码
通过询问大模型是谁检验 sft 指令微调的结果,如下图,大模型回答本身是 Ascend-helper 说明 sft 乐成,如失败,可返回微调阶段增长训练轮数重新训练。



七 总结

应用使能套件 openMind 为广大大模型开发者提供了高效简洁的工具,魔乐则托管了大量各领域主流模型及以 CPU 和昇腾 NPU 为底子算力的 space app,同时,越来越多的开源三方软件开始原生支持昇腾 NPU,广大开发者可以在魔乐社区体验更多强盛的 AI 大模型及风趣的 app,欢迎一起探索!
相干链接

  • openMind Library介绍:​​https://modelers.cn/docs/zh/openmind-library/overview.html​​
  • openMind Hub Client介绍:​​https://modelers.cn/docs/zh/openmind-hub-client/overview.html​​
  • 更多如模型导出、webui使用、模型评测等进阶功能可参阅原生支持文档:​​https://ascend.github.io/docs/sources/llamafactory/example.html​​

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表