一文学会 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"  

# 加载本地模型ÿ
### GTE-Qwen2-0.5B-Instruct 模型概述 GTE-Qwen2-0.5B-Instruct 是通义千问系列中的一个轻量级指令微调模型,基于 Qwen2-0.5B 构建。该模型经过优化,在较小规模参数的情况下仍能提供高质量的对话能力和其他自然语言处理任务的支持[^1]。 为了使用 GTE-Qwen2-0.5B-Instruct 模型,通常可以通过以下方式获取和部署: --- ### 下载与安装方法 #### 方法一:通过 Xinference 平台启动 如果计划在本地环境中运行 GTE-Qwen2-0.5B-Instruct 嵌入模型,可以按照以下流程操作: 1. **访问 Xinference 控制面板** 登录到已安装好的 Xinference 环境管理界面。 2. **选择 Embedding Models 类别** 在控制面板中导航至 `Embedding Models` 部分,并搜索目标模型名称 `gte-Qwen2`[^3]。 3. **配置模型实例** - 设置副本数量 (`Replica`) 为 1。 - 将设备选项设置为 GPU(如果有可用资源),或者 CPU(作为备选方案)。 4. **启动模型** 单击左侧底部按钮触发下载过程并加载模型。一旦完成初始化,即可查看其状态切换至 `Running Models` 页面。 注意:在此过程中可能会遇到依赖库缺失错误提示,例如缺少 Python 库 `sentence-transformers`。此时需手动执行命令来补充必要组件: ```bash pip install sentence-transformers ``` #### 方法二:直接从 Hugging Face Hub 获取预训练权重文件 另一种途径是从官方支持站点如 Hugging Face Model Repository 中检索对应条目 “Qwen/gte-qwen2-0.5b-instruct”。具体步骤如下: - 浏览至链接位置; - 利用 Git LFS 工具克隆整个存储库结构或将单个压缩包形式的数据集提取出来保存于指定目录路径之下;最后再依据个人需求编写适配脚本接入项目框架里头去运用它吧! --- ### 示例代码片段展示如何加载及测试该模型功能 以下是利用 Transformers 库加载上述提及版本号之一——即 gte-qwen2-0.5b-instruct 的简单例子供参考学习所用: ```python from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Qwen/gte-qwen2-0.5b-instruct") model = AutoModelForCausalLM.from_pretrained("Qwen/gte-qwen2-0.5b-instruct") input_text = "你好啊" inputs = tokenizer(input_text, return_tensors="pt").to(model.device) outputs = model.generate(**inputs, max_length=50) result = tokenizer.decode(outputs[0], skip_special_tokens=True) print(result) ``` 以上程序段展示了怎样快速上手这款特定大小级别的变体型号来进行基础交流互动演示效果呈现给用户看哦~ --- ### 注意事项 当尝试导入某些模块失败时,请务必确认所有必需软件包均已正确安装到位后再重新尝试一次完整的构建流程动作哈~比如刚才提到过的那个关于句子转换器方面的报错情况就需要先额外增加相应扩展才行啦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

董董灿是个攻城狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值