当前位置: 首页 > news >正文

CANN-昇腾NPU-LoRA微调-显存只占5%怎么做到的

全量微调 Llama2-7B 需要更新 7B 参数显存开销约 80GB。LoRA 只训练 0.5% 的参数约 35M显存开销约 4GB。在昇腾NPU上 LoRA 微调是性价比最高的方案。LoRA 原理在原始权重 W 旁边加一个低秩矩阵 ΔW A × B原始y Wx LoRAy (W AB)x Wx ABx A: [hidden, r], B: [r, hidden], r hidden Llama2-7B: r16, A[4096,16], B[16,4096] 每层 LoRA 参数: 2 × 4096 × 16 128K 全量参数: 4096 × 4096 16M 参数比: 0.8%训练时 W 冻结只更新 A 和 B。推理时把 ΔW 合并回 W零额外延迟。昇腾NPU上的实现frompeftimportLoraConfig,get_peft_modelimporttorchimporttorch_npu modelAutoModelForCausalLM.from_pretrained(meta-llama/Llama-2-7b-hf,torch_dtypetorch.bfloat16,device_mapnpu:0)lora_configLoraConfig(r16,lora_alpha32,target_modules[q_proj,v_proj,k_proj,o_proj,gate_proj,up_proj,down_proj],lora_dropout0.05,)modelget_peft_model(model,lora_config)model.print_trainable_parameters()# 输出: trainable params: 35M || all params: 6.7B || trainable%: 0.52%显存对比Llama2-7B 全量微调 vs LoRA 微调单卡 Atlas 800I A264GB 显存项目全量微调LoRA 微调模型权重14GB可冻结14GB冻结LoRA 权重-0.2GB梯度14GB全量0.2GB仅 LoRA优化器状态28GB全量 fp320.4GB仅 LoRA激活20GB20GB总计76GB34.8GBLoRA 微调的显存不到全量微调的一半。单卡 64GB 就能跑不需要 8 卡 TP。训练速度配置吞吐 (tokens/s)训练时间1M tokens全量微调8 卡 TP1,8009 分钟LoRA单卡1,20014 分钟LoRA 单卡比全量 8 卡慢 55%。但如果你只有一张卡LoRA 是唯一选择。推理时合并 LoRA# 方法 1动态合并每次推理时计算 Wx ABx# 优点可以热切换不同 LoRA# 缺点多一次矩阵乘法约 3-5ms 额外延迟# 方法 2预合并训练完成后 W W AB删除 A 和 B# 优点推理零开销# 缺点不能切换 LoRAmodelmodel.merge_and_unload()# 预合并预合并后的模型跟原始模型完全一样——ATB 的推理加速、FlashAttention、量化全部适用。多 LoRA 推理同一个基座模型挂多个 LoRA不同请求用不同 LoRAfromatbimportLLM,MultiLoraConfig modelLLM(meta-llama/Llama-2-7b-hf,devicenpu:0,multi_loraMultiLoraConfig(lora_dirs[lora_chat,lora_code,lora_translate],max_loras3,))# 不同请求用不同 LoRAresultsmodel.generate([(Hello,lora_chat),(def fib(n):,lora_code),(Translate:,lora_translate),])ATB 的 Multi-LoRA 把多个 LoRA 的 ΔW 打包成 Batch GEMM一次计算所有 LoRA 的增量。这比逐个 LoRA 计算高效得多。精度影响LoRA 的精度损失取决于 r 值秩r 值可训练参数微调精度损失适用场景817M0.5-1%简单任务分类1635M0.1-0.3%通用对话、代码3270M0.1%复杂任务翻译、推理64140M几乎无损失全量微调替代r16 是性价比最高的选择。除非任务特别复杂否则不需要 r32。LoRA 微调是昇腾NPU上最实用的微调方案——显存少、速度快、合并后零推理开销。如果你的场景是基座模型 领域适配LoRA 几乎总是比全量微调更好的选择。仓库在这里https://atomgit.com/cann/torch_npu
http://www.gsyq.cn/news/1364957.html

相关文章:

  • NHSE终极指南:5步掌握《动物森友会》存档编辑的艺术
  • AutoML与集成学习在多模态医疗AI中的工程化实践
  • 数据缺失处理与PCA降维:构建全球生活便利指数的技术实践
  • 呼伦贝尔通风管道设计安装攻略,选宇鹏不锈钢怎么样 - myqiye
  • 深入Linux内核:PTP硬件时间戳(HW Timestamping)是如何炼成的?
  • AI产业到底包括哪些
  • GMERF与MERF:处理过离散计数数据的小域估计方法对比
  • 基于高斯过程与Vecchia近似的空间数据预处理:让机器学习模型学会处理空间依赖性
  • 2026镍基合金625加工厂家新推荐,哪家技术强? - myqiye
  • 避开这些坑,你的孟德尔随机化分析结果才可靠:以口腔癌研究为例的实操避雷指南
  • 小红书视频下载终极指南:5分钟掌握免费无水印批量下载技巧
  • 视频字幕提取终极指南:3分钟本地搞定87种语言硬字幕识别
  • 3步突破网易云音乐格式封锁:NCMDump解密转换实战指南
  • Windows Cleaner深度解析:4步彻底解决C盘空间不足的完整技术方案
  • 3分钟解放你的QQ音乐收藏:qmcdump让加密音频重获自由播放权
  • 终极Winget安装修复指南:从零到精通解决Windows包管理器问题
  • 3步实现Windows任务栏透明化:从新手到专家的桌面美化全攻略
  • 5分钟成为网页资源管理高手:猫抓插件让你的浏览器无所不能
  • 利用C#在PDF文档中添加电子签名的实现流程
  • 在C#项目中使用NLog进行日志记录的方法步骤
  • C# 中TaskScheduler的使用小结
  • C#项目使用obfuscar混淆实践
  • 使用C#将Excel文件转换为SVG的实现代码
  • RTX51任务调度中K_IVL与K_TMO事件详解
  • JMeter+InfluxDB+Grafana压测监控实时可视化实战
  • 高斯随机定时器原理与JMeter压测行为建模
  • PearSAN框架:基于皮尔逊相关的代理模型加速纳米光子逆向设计
  • BG3ModManager加载失败的三大底层校验机制解析
  • 英飞凌XC866评估板Flash批量编程解决方案
  • RISC-V与x86平台并行FFT性能对比研究