一文学会 Qwen2-0.5B+Lora+alpaca_zh 微调实战,附完整可运行源代码

预训练大模型在训练过程中,虽然学到了很多通用知识,但是很多时候,大模型本身并不能在专业领域表现得非常好。

比如你让 Qwen 模型回答“量子力学中的叠加态是什么”,它可能会给出一个笼统的解释,但要是让模型严格按照某一格式(比如论文格式)回答时,可能就不太行。

除非你在上下文聊天中给他一些例子让他先自我学习。这也被称为“上下文学习能力 + Few-shot”的方式,但这并不改变模型的本质。

一旦你切换了与模型聊天的上下文,模型又会恢复到它原来的样子。

因此,对这种需要改变模型回答模式的需求,我们一般对预训练模型进行微调。

这是因为微调“真正的”会改变模型的参数。

大模型微调的方法有很多,比如“全参数微调”、Lora及各种Lora的变种、P-Tuning 等等。但大部分情况下我们都会使用 LoRA 的技术方法对模型进行微调。

这是因为 Lora 只会改变模型原有参数的“一部分”,并且改变的是比较对模型表现比较重要的部分,并且取得非常不错的结果。

如下图,微调只会修改全部参数中的部分参数。

这样做的好处之一,就是节省资源。

和全参数微调(事实上类似于从中间某个检查点(checkpoint) 进行训练)那种模型的所有参数都要更新不同的是,LoRA 只会更新模型中一小部分参数(比如原本0.5亿参数的模型,Lora 微调时可能只需要更新几千个)。

这样就会是的微调过程中对显存的依赖非常低,即使是普通开发者也能玩一玩 Lora 微调。

这篇文章,我假定你对 Lora 微调的技术背景有了一定的认识,如果你还不懂 Lora 的技术细节,欢迎关注📌AI 学习路线图:从小白到大神的爬天梯之路 中的“微调小课”,另外在这个路线图中,还有完整的 Transformer 架构的原理解析和《4、从零手写大模型(炸裂实战)》,都会帮助你更好的学习和理解微调技术。

这篇文章我将带你从头开始,以代码实战的方式,使用 Qwen2-0.5B 模型和中文指令数据集 alpaca_zh,手把手教你如何微调模型。

希望阅读完本文后,你可以了解微调的原理,并且真正能自己动手完成实战!(PS:本文代码实操时最好有一块可用的GPU卡,不然如果用CPU的话,要等多久可能只有天知道了。)

下面我将边讲解相关知识,边展示关键代码并对其进行解释。

第一步:准备环境,加载模型

首先,我们需要加载Qwen2-0.5B模型,并准备好后续要用的工具。代码如下:

from transformers import AutoModelForCausalLM, AutoTokenizer  
from peft import LoraConfig, get_peft_model  

# 检测设备(优先用GPU加速)  
device = "cuda" if torch.cuda.is_available() else "cpu"  

# 加载本地模型ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值