LoRA微调概论

🍋🍋AI学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


一、LoRA微调

✅ 核心思想

  • 不更新原始大模型的所有参数(7B 参数 ≈ 14GB 显存)
  • 而是在某些层(如 attention 的 Q/V 投影)插入低秩矩阵
  • 只训练 A 和 B(可减少 99%+ 可训练参数)

✅ 优势

项目传统全参数微调LoRA
显存占用极高(需多卡)极低(单卡 24G 可训 70B)
训练速度快 2~5 倍
存储成本每个任务存完整模型只存 ~100MB 的 adapter
多任务切换需加载不同模型动态切换 LoRA 权重

💡适用场景:SFT、DPO、甚至部分 RLHF(策略模型)


二、准备工作

1. 环境安装(推荐使用unsloth加速)

# 基础依赖 pip install torch transformers datasets accelerate peft bitsandbytes # (可选但强烈推荐)Unsloth:加速 LoRA 训练 2~5 倍 pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"

2. 选择基础模型

  • 中文推荐:Qwen/Qwen-1.5-7B-Chat,THUDM/chatglm3-6b
  • 英文推荐:meta-llama/Meta-Llama-3-8B-Instruct,mistralai/Mistral-7B-Instruct-v0.3
  • 注意:不要用 base 模型做对话任务!优先选-Instruct-Chat版本

3. 准备 SFT 数据集(Alpaca 格式)

[ { "instruction": "将以下英文翻译成中文", "input": "The future is already here — it's just not evenly distributed.", "output": "未来已来,只是尚未均匀分布。" }, // ... 更多样本 ]

三、LoRA 微调代码(Hugging Face + PEFT)

使用 Unsloth(更快更省显存)

from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="Qwen/Qwen-1.5-7B-Chat", max_seq_length=2048, dtype=None, # 自动选 float16/bfloat16 load_in_4bit=True, ) model = FastLanguageModel.get_peft_model( model, r=64, target_modules=["q_proj", "k_proj", "v_proj", "o_proj"], lora_alpha=128, lora_dropout=0, bias="none", use_gradient_checkpointing=True, random_state=3407, ) # 后续训练流程类似,但速度提升 2~5 倍

Unsloth 优势:自动融合 kernels、支持梯度检查点、内存优化,单卡 24G 可训 70B 模型


四、关键超参数调优指南

参数推荐值说明
r(rank)32 ~ 128越大拟合能力越强,但过大会过拟合;7B 模型常用 64
lora_alpha2×r控制 LoRA 更新幅度,通常设为 2*r
lora_dropout0.0 ~ 0.1小模型可设 0,大模型可加 0.05 防过拟合
target_modules见下表必须匹配模型架构
learning_rate1e-4 ~ 5e-4比全参数微调高 10 倍
batch_size越大越好通过gradient_accumulation_steps模拟大 batch

🔧 常见模型的target_modules

模型家族target_modules
Llama / Mistral["q_proj", "k_proj", "v_proj", "o_proj"]
Qwen["q_proj", "k_proj", "v_proj", "o_proj"]
ChatGLM["query_key_value"]
Phi-3["q_proj", "k_proj", "v_proj"]

💡 不确定?用print(model)查看模块名,或设target_modules="all-linear"(PEFT ≥ 0.10)


五、微调后如何推理?

方式 1:合并 LoRA 权重(推荐用于部署)

→ 合并后可用vLLM / TGI / Transformers直接加载

方式 2:动态加载 LoRA(适合多 adapter 切换)

from peft import PeftModel model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-1.5-7B-Chat", ...) model = PeftModel.from_pretrained(model, "./qwen-lora") # 推理时自动应用 LoRA

⚠️ 注意:vLLM 从 v0.4.0 开始实验性支持 LoRA 推理,但生产环境仍建议合并。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1027579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

永磁同步电机无位置传感器控制:龙伯格(Luenberger)观测器与Simulink模型

龙伯格 luenberger观测器,永磁同步电机无位置传感器控制,simulink模型,使用PLL锁定位置。在永磁同步电机(PMSM)的控制领域,无位置传感器控制技术近年来备受关注。这种技术能够在不依赖物理位置传感器的情况…

零刻预告全球最小双盘位NAS:Intel、AMD、Arm随便选

零刻预告全球最小双盘位NAS:Intel、AMD、Arm随便选Posted on 2025-12-17 00:18 lzhdim 阅读(0) 评论(0) 收藏 举报现在,零刻预告了新款NAS ME Pro,号称世界上最小的双盘位NAS,长宽尺寸只有166mm、121mm,高度…

C# 排序,字典以及类相关知识点扩宽

一、冒泡排序冒泡排序:俩两相比,如果前面大于后面的值这时候交换位置。 外循环要经过多少轮 一轮找出一个最值 内循环比较多少次 例如5个数比较4次即可,下一轮的时候 不用和上传最值进行比较,所以写内循环次数可以 这样写list.Count-1-iList&…

Daily Prob 5

多次重剖之后树的深度这次不是什么级数求和了。对于一个有根树,我们如下定义重链剖分:对于每个点 \(a\),找到子节点中子树大小最大的那一个(如果有多个任取一个),记为 \(b\),然后将 \((a, b)\) 这条边设为重边。…

Applite:终极Mac软件管理神器,让Homebrew图形化操作如此简单

Applite:终极Mac软件管理神器,让Homebrew图形化操作如此简单 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为复杂的终端命令而头疼吗&#xff1f…

阿里云渠道商:轻量服务器远程协作性能优化指南

一、引言 随着远程办公常态化,轻量应用服务器成为中小团队首选。但许多用户反馈阿里云轻量服务器(如 2 核 2G 配置)在远程协作时出现卡顿、延迟问题。文章提供 3 步优化方案,助您提升远程协作流畅度。二、优化方案第一步&#xff…

如何实现 “右移”的智能监控,快速定位和恢复线上事故?

一、核心理念:从“被动响应”到“主动预警” 传统监控停留在“故障发生-告警-人工处理”,而智能“右移”强调生产环境的事前预防、事中定位、事后自愈。 二、智能监控体系分层设计 1. 数据采集层 多维度埋点: 应用层:日志(结构化/非结构化)、链路追踪(Trace)、关键业…

我发现图神经网络补全罕见病知识图谱基层漏诊率骤降

📝 博客主页:Jax的CSDN主页 目录医生打字慢到怀疑人生?AI医生竟成“键盘侠”救星 一、当AI医生遇上人类医生:一场效率革命 二、AI医生的"作弊"秘籍:从打字小能手到诊断大师 三、AI医生的成长烦恼&#xff1a…

在React Native中实现鸿蒙跨平台开发分享功能,你可以使用`react-native-share`库,这个库支持多种分享方式,包括文本分享、图片分享,甚至是文件分享

在React Native中实现分享功能,你可以使用react-native-share库,这个库支持多种分享方式,包括文本分享、图片分享,甚至是文件分享。下面是如何使用react-native-share来实现这些功能的步骤: 安装react-native-share …

BetterNCM插件完整使用指南:从入门到精通的网易云音乐体验升级

BetterNCM插件完整使用指南:从入门到精通的网易云音乐体验升级 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在使用基础的网易云音乐客户端吗?BetterNCM插件…

终极指南:如何用wps-view-vue轻松实现WPS文档在线预览功能

终极指南:如何用wps-view-vue轻松实现WPS文档在线预览功能 【免费下载链接】wps-view-vue wps在线编辑、预览前端vue项目,基于es6 项目地址: https://gitcode.com/gh_mirrors/wp/wps-view-vue 想要在Web应用中快速集成WPS文档在线预览功能吗&…

大模型薪资揭秘:百万年薪是主流,千万年薪是特例,收藏这份务实指南

大模型行业薪资确实可观,但需理性看待。多数岗位年薪在40-150万之间,百万已是行业核心水平;千万年薪仅限于硅谷顶尖技术大牛或资深管理者,非常罕见。入行应选对方向(数据、平台、部署等),练硬实…

在一个事务里面死循环select一条数据,当我开启事务时,数据是1,每过5秒我就select一次,这个时候mybatis的一级缓存起作用了,所以不会去数据库查数据,等别的线程更新了数据表的数据,会使m

这个问题涉及到 MyBatis 一级缓存、事务隔离级别和数据库的并发控制。让我详细分析一下:1. MyBatis 一级缓存的行为MyBatis 一级缓存(Local Cache)是 SqlSession 级别​ 的缓存:在同一个 SqlSession 中执行相同的查询,…

在DevSecOps中,如何将安全测试(SAST/DAST等) 无缝集成到CI/CD流水线?

一、核心理念:安全左移,持续防护 将安全测试从传统“发布前检测”转变为开发全流程的嵌入式检查,实现“安全即代码”。 二、集成架构设计 分层安全测试策略 text CI/CD流水线安全防护链: ├── 提交前(Pre-commit) │ ├── Git Hooks:代码规范/敏感信息扫描 │…

3分钟掌握AI视频字幕去除:开源神器video-subtitle-remover完全解析

3分钟掌握AI视频字幕去除:开源神器video-subtitle-remover完全解析 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-b…

告别命令行:Applite让Mac软件管理变得简单直观

告别命令行:Applite让Mac软件管理变得简单直观 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为复杂的Homebrew命令而头疼吗?Applite这款免费开源…

元胞自动机Python康威生命游戏

import pygame import sys from pygame.locals import *# 初始化Pygame pygame.init()# 配置参数 # 单元格大小(像素) CELL_SIZE 20 # 网格行列数 GRID_COLS 40 # 列数 GRID_ROWS 30 # 行数 # 窗口尺寸 WINDOW_WIDTH CELL_SIZE * GRID_COLS WI…

AI大模型落地指南:十大行业案例详解,程序员必收藏

本文介绍十大AI落地案例展示如何助力企业实现AI转型。案例涵盖文档翻译、流程自动化、合同审校、IT运维等多个场景,显著提升效率、降低成本。公司提供全周期一站式服务,从咨询规划到交付运维,帮助企业真正让大模型为员工提质增效,…

四步重塑小米AI音箱:从语音助手到全屋智能中枢的进化之路

四步重塑小米AI音箱:从语音助手到全屋智能中枢的进化之路 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 你是否曾经对着家里的智能音…

Set和Get访问器and构造函数(析构函数)

一、Set和Get访问器属性:public int Age{get;set},一般不存储数据,可以公开接口,可以在外部进行访问 字段:private int age 字段可以存储数据,一般定义成私有的,目的保证数据的安全性如果对类里面的字段进行限制、或者拦截处理 &…