记录使用LoRA技术进行模型微调

【大模型】基于LoRA微调Gemma大模型(1) 此外,我们希望我们的增量ΔW在训练开始时为零,这样微调就会从原始模型一样开始。因此,B通常初始化为全零,而 A初始化为随机值(通常呈正态分布)。 阅读详情

作为一种常用的大模型微调方式,可以使用低秩自适应(LoRA)将大模型适配至不同的下游任务,可以降低节省训练成本。最近又在使用这个Trick,顺手记录一下。这里主要学习了来自于Diffusers提供的text2image和LCM的LoRA代码:

https://github.com/luosiallen/latent-consistency-model/blob/main/LCM_Training_Script/consistency_distillation/train_lcm_distill_lora_sdxl_wds.py

https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py

需要用到的Huggingface的PEFT(Parameters Efficient Fine Tune)库。基于这个库可以很方便的将任意nn.Module的模型转为LoRA类模型,进行微调训练。

第一步. 实例化模型: (以Diffusion的Unet为例。事实上,可以是任意的nn.Module子类。)

from diffusers import UNet2DConditionModel# model_path: /path/to/your/modelunet=UNet2DConditionModel.from_pretrained(model_path)unet.train() # 开启训练

第二步. 转换模型至参数化:(安装 pip install peft)

from peft import get_peft_model, LoraConfig
self.lora_config = LoraConfig(    r=lora_rank,    lora_alpha=lora_rank*2,    target_modules=["to_q", "to_k", "to_v", "to_out.0", "proj_in",    "proj_out", "ff.net.0.proj", "ff.net.2", "conv1", "conv2",     "conv_shortcut", "downsamplers.0.conv", "upsamplers.0.conv", "time_emb_proj",],    inference_mode=False, # inference: Ture    init_lora_weights='gaussian',)peft_model = get_peft_model(unet, self.lora_config)

* 可以使用: 统计模型的总参数以及可训练的参数。

model.print_trainable_parameters()

* target_modules 根据模块的字典进行匹配,关键字包括的底层模块(Conv和Linear)都会转为LoRA单元。可以用以下方式,打印model的所有模块名称:

print([name for name, _ in model.named_modules()])

第三步. 实例化优化器:

optimizer = torch.optim.AdamW(peft_model.parameters(),                    lr=lr,                   weight_decay=weight_decay)

接下来就可以展开正常的训练流程。

for i in iteration_max:    out = peft_model(input)    loss = loss_fn(out, target)    loss.backward()    optimizer.step()    optimizer.zero_grad(set_to_none=True)

**保存LoRA参数:**有好几种方式,但貌似效果都一样。

# Option 1peft_model.save_pretrained(save_path) 
# Option 2from diffusers import convert_state_dict_to_diffusers,                      StableDiffusionXLPipelinefrom peft import get_peft_model_state_dictlora_state_dict = get_peft_model_state_dict(peft_peft_model)lora_state_dict = convert_state_dict_to_diffusers(lora_state_dict)StableDiffusionXLPipeline.save_lora_weights(save_path, lora_state_dict)

加载LoRA参数:

# 对应Option 1from peft import PeftModelunet = UNet2DConditionModel.from_pretrained(model_path)unet_wlora = PeftModel.from_pretrained(base_model, lora_path)
# 对应Option 2from diffusers import DiffusionPipelinepipeline = DiffusionPipeline.from_pretrained(model_path)pipeline.load_lora_weights(lora_path)

# Option 2 可能是能够结合Diffuser库封装的Pipeline进行加载,在使用过程中比较方便吧。

以下代码,是我在使用过程中用于检测LoRA参数是否正常可训练。这里有个地方需要特别注意,LoRA的参数是由一个A矩阵(C_in, rank)和B矩阵(rank, C_out)组成,再由它们相乘得到一个权重偏置量W’(C_in, C_out),并乘以一个权重(lora_alpha/rank)加到原权重W上。A矩阵默认采用随机初始化,而B矩阵采用的是零初始化。因此,在最开始时W‘为0,在早期的梯度更新时,A矩阵的梯度为0,W’整体的变化很小,但随着梯度回传的次数越来越多,W‘的变化会越来越大。一开始没有意识到这个问题,发现不管我怎么调整rank,前几轮的loss都一样,以为是出现Bug。但不断的检查代码,发现确实是在更新LoRA,最终在每个迭代的时候打印出Lora的梯度范式,才发现这个现象的原因。

检查LoRA的梯度

# test loracat_latents, timesteps, text_embed = torch.randn(2, 8, 32, 32).to(self.device), torch.randint(0, 1000, (2,)).to(self.device), torch.randn(2, 77, 1024).to(self.device)lora_output = peft_model(cat_latents, timesteps, text_embed).sampleprint(lora_output.shape)#在这里可以看到Lora权重的Shape都是(C,rank)或者(rank, C)的格式loss = nn.functional.mse_loss(lora_output, torch.zeros_like(lora_output))print(loss.item())loss.backward()for name, param in peft_model.named_parameters():    if "lora_A" in name and param.grad is not None:        print(f"检测到 {name} 的梯度 (范数: {param.grad.norm().item():.6f})")    if "lora_B" in name and param.grad is not None:        print(f"检测到 {name} 的梯度 (范数: {param.grad.norm().item():.6f})")

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

使用 LoRA 进行模型微调的步骤 定义一个 LoRA 模块,用于替换 transformer 中的标准线性层,通常在自注意力机制的 query、key 和 value 投影中使用# 定义 LoRA 模块# LoRA 引入了两个额外的矩阵 W_down 和 W_upself.W_down = nn.Linear(input_dim, rank, bias=False) # 低秩降维self.W_up = nn.Linear(rank, output_dim, bias=False) # 低秩升维# 将低秩适配结果加到原始输出上。 阅读详情

相关推荐

ST-LINK调试原理与STM32硬件连接实战指南

嵌入式调试器是连接开发环境与物理MCU的核心枢纽,其本质是基于ARM CoreSight架构的实时硬件观测与控制接口。它通过JTAG或SWD协议访问内核寄存器、内存及外设,实现断点、单步、内存监视等深度调试能力,远超简单程序烧录功能。ST-LINK作为主流ARM Cortex-M调试器,支持SWD(2线)与JTAG(多线)双模式,在电平匹配、复位控制、引脚复用规避等硬件层面临关键工程约束。掌握VREF参考电压配置、nSRST硬复位接线、调试引脚隔离策略及Keil MDK调试会话配置,是保障STM32稳定联机

weixin_42596214的博客 312

text-to-lora:即插即用的Transformer适配方案

text-to-lora:即插即用的Transformer适配方案 Text-to-LoRA (T2L) 是一个即插即用的Transformer适配方案,可以轻松地将Transformer模型适配到特定的任务上。T2L 通过学习一个小的适配器(Adapter)来改变原始模型的权重,从而实现快速且高效的任务适配。 项目介绍 Text-to-LoRA (T2L) 是一个开源项目,由SakanaAI团队...

gitblog_00772的博客 529

ClickHouse集群扩容实战:用clickhouse-copier搞定数据迁移与分片重平衡

本文详细介绍了使用clickhouse-copier工具实现ClickHouse集群从3分片到5分片的平滑扩容实战。通过分片级并行处理、原子性保证等核心机制,该工具能高效完成数据迁移与分片重平衡,同时保持服务连续性。文章涵盖集群拓扑规划、表结构检查、迁移配置、执行监控及迁移后优化等关键步骤,为大数据量场景下的ClickHouse扩容提供完整解决方案。

weixin_29091837的博客 294

从零开始构建与使用 LoRA:Stable Diffusion 微调完整实战指南

本文系统讲解了如何使用 Hugging Face 的 Diffusers 库从零开始训练与使用 Stable Diffusion 的 LoRA(Low-Rank Adaptation)模型。内容涵盖 LoRA 原理、环境搭建、数据集准备、训练脚本执行、超参数说明与推理加载方式。通过本教程,读者可以在本地 GPU 上快速构建定制风格的图像生成模型,并掌握 AutoPipeline 与多 LoRA 叠加等实用技巧。

等风来 1433

实战篇【2】-H3C防火墙开局基础配置

本篇文章为“H3C防火墙开局基础配置”,主要涵盖配置管理地址、聚合端口、安全区域、安全策略、静态路由、ACL,WEB和SSH远程管理、Console、SNMP、NTP时钟、日志主机等内容,对比交换机配置开局,增加两处配置,安全区域和安全策略。方便调试人员远程管理、调试。

weixin_47402139的博客 1万+

DeepSeek跨会话协作指南:让AI成为你的「第二大脑」

通过DeepSeek的跨会话协作系统,用户实测工作效率提升63%。

紫夜若涵的博客 1475

DeepSeek大模型微调实战(理论篇)

在大模型的微调过程中,**LoRA(低秩适配)**参数设置是提升训练效率和性能的关键。通过减少需更新的参数量,LoRA能够在维持模型性能的同时显著降低计算成本。然而,LoRA并非唯一影响训练效果的因素。诸如。

python1222_的博客 8946

【软考】数据库系统工程师备考指南(一)

目录一、数据库系统工程师简介二、考试要求三、考试目标四、考试范围(一)信息系统知识(二)数据库系统设计与管理 一、数据库系统工程师简介 数据库系统工程师考试属于全国计算机技术与软件专业技术资格(水平)考试(简称计算机软件水平资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。笔试安排在一天之内。 2022 年数据库系统工程

邓邓子的博客 3859

【个人开发】macbook m1 Lora微调qwen大模型

本项目参考网上各类教程整理而成,为个人学习记录。项目中微调模型为:qwen/Qwen1.5-4B-Chat。去年新发布的Qwen/Qwen2.5-3B-Instruct同样也适用。

weixin_44505713的博客 2269

看28377代码笔记

使用的是20MHz外部晶振,为取200MHz系统时钟,倍频设为20,分频设为2,这样sysclock = 20MHz * 20 / 2,正好200MHz。注意:SPISTE配置成普通的GPIO端口,是为了更好控制芯片,配置芯片的时序。FMULT_0:小数点位数,小数只能有0,0.25,0.5,0.75四个选择。XTAL_OSC:表示使用外部晶振。GPIO_MUX_CPU1:复用类型。GPIO_MUX_CPU1:复用类型。PLLCLK_BY_2:表示2分频。IMULT_20:表示倍频数。

小柚子的博客 806

一篇文章带你认识 SpringBoot

文章目录一、原有 Spring 优缺点分析二、SpringBoot 的概述 一、原有 Spring 优缺点分析 (1)Spring 的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了EJB的功能。

南淮北安的博客 766

B站大模型指令微调入门实战(完整代码),一键打造你的数字分身

通过个人微信聊天记录,来微调大模型,快速入门大模型指令微调

u010522887的专栏 2273

国科大学习资料--VLSI测试与可测试设计--2020期末考试试题

国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 一、概念题 1简述可测试性测度与两个主要的测度指标的含义; 2以March C-算法为例,说明March算法的构成,以及March C-算法的故障覆盖率; 3“效果-原因”诊断法和“原因效果诊断法”的不同; 4列举四条扫描设计时出现的问 题及解决办法; 5最少写出1149.1与1500的五点不同; = = = = =

无名何许人的博客 1150

用Swift框架的lora微调Qwen-7B大模型

官方有提供使用自定义数据集的几种方式:我捣鼓第二种方式,即修改dataset_info.json的方式没捣鼓明白,最后还是用第一种最方便了。直接在命令行修改,这里要注意格式必须是swift指定的格式类型,数据文件地址不要写错。CUDA_VISIBLE_DEVICES=0,1,2,3 \ # 我用了4张卡--dataset /home/zhangsan/my_dataset/data.csv \ # 这个就是我的数据地址。

m0_52965099的博客 2080

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

DeepSeek LoRA微调+Ollama,微调模型本地部署终极指南!

最近deepseek非常火爆,在学习对deepseek进行微调训练后,尝试把模型部署到本地。以下记录下怎么保存模型以及怎么载入Ollama的过程。

HUANGXIN9898的博客 2421

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

在昇腾服务器上使用llama-factory对baichuan2-13b模型进行lora微调

LoRA 提出在预训练模型的参数矩阵上添加低秩分解矩阵来近似每层的参数更新,从而减少适配下游任务所需要训练的参数。

yuanlulu的博客 3444

Hello ROCm|AMD 云一键跑通 Gemma4 LoRA 情绪微调学习记录

本次参与 Datawhale 联合 AMD 推出的 Hello ROCm 学习活动 Day3-7 任务,全程不需要手动编写复杂命令,仅通过运行官方 Notebook ,搭配内置科普卡片完成大模型微调全流程学习。

weixin_64205535的博客 192

小显存也能玩转大模型:Qwen2.5-0.5B微调实战全记录

本文介绍了基于星图GPU平台,如何自动化部署Qwen2.5-0.5B-Instruct镜像,实现低资源环境下的大模型微调。通过LoRA技术,用户可在小显存设备上高效训练定制化AI角色,适用于本地化AI应用开发与教学实践,显著降低大模型使用门槛。

weixin_33582089的博客 591

微调LLaMA只需三步?Llama-Factory WebUI操作全记录

本文详解如何通过Llama-Factory WebUI实现无需代码的大模型微调,涵盖QLoRA、LoRA技术原理与实操要点,揭示其背后模块化调度与配置驱动的设计机制,降低大模型定制门槛。

weixin_42527665的博客 1002

灵感画廊快速部署:SDXL LoRA微调模型无缝加载实操记录

本文介绍了如何在星图GPU平台上一键自动化部署“📜 灵感画廊 · Atelier of Light and Shadow”镜像,快速搭建基于SDXL的艺术创作环境。该镜像支持LoRA模型无缝加载,用户可轻松生成个性化风格的AI图片,适用于艺术创作、设计灵感激发等场景,提升创作效率与体验。

weixin_32535825的博客 92

大模型微调、量化、部署记录

本文记录了在RTX 4090D服务器上使用LLaMA-Factory微调qwen2.5-1.5B-Instruct模型的全过程。主要内容包括:1)通过WebUI界面完成模型微调,训练甄嬛风格对话机器人;2)使用llama.cpp工具进行模型量化和格式转换;3)通过Ollama实现本地模型部署。文中详细介绍了环境配置、数据处理、训练参数设置等技术细节,并提供了量化前后模型大小对比(从5.8G压缩到3.0G)和最终对话效果展示。该流程适用于需要快速实现大模型轻量化部署的场景。

Alice8113的博客 1045

学习记录|使用 LLaMA Factory 微调 Qwen3-4B-Instruct 全流程

这篇文章记录了使用LLaMA Factory微调Qwen3-4B-Instruct模型的全过程。主要包括环境配置(Python 3.11、Hugging Face镜像加速)、模型下载、依赖安装(PyTorch适配CUDA 12.1)、LoRA微调训练、推理测试以及模型合并等步骤。通过命令行操作完成了从训练到部署的全流程,解决了版本兼容问题并验证了合并后模型的独立运行能力。文章提供了详细的操作命令和配置示例,为类似的大模型微调任务提供了实用参考。

BrianLBR的博客 292

软件测试工程师的三个月大模型微调实战全记录

摘要:本文探讨了测试工程师在AI时代掌握大模型微调技术的必要性及实践路径。通过三个月实战,团队开发出测试专用微调方案,涵盖数据准备、模型选择、微调技术三大核心环节。微调后的模型在测试用例生成、缺陷预测、日志分析等场景展现显著优势,如用例设计时间缩短90%,缺陷逃逸率降低80%。文章提出测试专用评估体系,强调微调技术将推动测试工程师向智能质量架构师转型,建议从业者从小场景入手培养AI测试能力。掌握微调技术正成为测试人员的核心竞争力,也是通往高阶职位的必经之路。

2501_94261392的博客 903

非遗手工艺复兴:lora-scripts记录并再现传统纹样制作工艺

借助LoRA微调与lora-scripts工具,仅需少量图像即可数字化复现传统手工艺纹样。从苏绣到苗银,AI不仅保存技艺精髓,还能生成符合传统美学的新设计,让非遗在现代焕发新生。

weixin_33670640的博客 1014

LoRA大模型微调笔记-HuggingFace+魔塔

微调步骤可以简单概括为:(加载数据集 --> 数据预处理) --> 加载模型 --> 配置LoRA --> 配置训练参数 --> 模型训练 --> 模型验证,其中模型训练前的步骤顺序不唯一。完成了微调训练数据的加载和预训练模型的加载后,就可以着手进行LoRA和微调训练参数的配置了,LoRA配置使用peft库中的LoraConfig进行设置,这里作为演示,只是简单的对模型的线性层进行微调。最终结果如下图,在当前任务中,模型性能得到了显著的提升,验证了微调的有效性。

gimme5的博客 197

helloROCm-Day2-体验模型微调

安装依赖时vllm、triton、torch下载速度比较慢,打开新的终端窗口从魔搭同步下载模型。下载后替换原本下载模型的步骤,直接给 LOCAL_MODEL_DIR 赋值。可以打开新的终端手动安装,然后直接从下面开始执行.使用Notebook执行显示的信息有缩减。使用命令行执行有更丰富的输出内容。

BerryRoad的博客 46
上一篇: 知识图谱大模型(KG-LLM)用于链接预测
下一篇: Agent:人机交互新范式,大小模型端云协同
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值