微调Qwen模型(有图有真相版)

哈喽大家好,之前发的Qwen模型微调的博客阅读量创造了有史以来的最高数据,感动!!!

今天又去看了看发的内容,图片、代码都有缺失,可能是当时没复制过去,今天重新发一下完整的带脑子写博客版~

一、模型选择

由于硬件设备有限,选择Qwen-1.8B-Chat-Int4模型进行复现和微调

二、硬件条件

RTX 3080 Ti(12G显存)

三、GPU算力租借

  1. 尝试在自己笔记本部署模型
    本地笔记本GPU为GTX1050 Ti,所能够装的CUDA版本最高为10.2,而Qwen官方建议CUDA版本为11.4以上,因此选择租借GPU算力。
    在这里插入图片描述
  2. 算力租借
    平台:AutoDL算力云
    设备:RTX 3080 Ti(12G显存)
    在这里插入图片描述

四、环境配置

(1)基础配置
Ubuntu20.04 CUDA11.8 Python3.8 Pytorch2.0.0 (最好就按照这个来配置,其他配置版本可能不兼容,搞深度学习的应该多多少少会有体会)
(2)安装requirement.txt中的库
使用以下命令行安装requirement.txt中的库:

pip install -r requirement.txt 

(3)安装modelscope库
执行代码时,会出现以下报错,提示没有Modelscope模型,使用以下命令安装modelscope

pip install modelscope

在这里插入图片描述
在这里插入图片描述

五、复现模型

1.从以下github链接中下载代码至本地,并上传到服务器
https://github.com/QwenLM/Qwen/
2.执行以下代码复现模型(所有源码都可以在最后找到,基本都是从官网复制的)
在这里插入图片描述

六、微调模型

1.微调数据集准备
在这里插入图片描述
2.使用QLora进行微调
微调命令行:

bash finetune/finetune_qlora_single_gpu.sh -m /root/.cache/modelscope/hub/qwen/Qwen-1_8B-Chat-Int4 -d train.txt

在这里插入图片描述
3.加载微调的模型,并与原始模型合并(所有源码都可以在最后找到,基本都是从官网复制的)
在这里插入图片描述

4.测试模型
当没有微调大模型时,向模型输入“你好”,模型一般会输出“你好!有什么我可以帮助你的吗?”(所有源码都可以在最后找到,基本都是从官网复制的)
在这里插入图片描述
向微调5000轮后的模型输入“你好”,模型输出“我是智能AI哦,我能够使用猪八戒的语气说话!”(所有源码都可以在最后找到,基本都是从官网复制的)
在这里插入图片描述

七、代码

#从 ModelScope魔搭社区下载基础模型
from modelscope import snapshot_download
from transformers import AutoModelForCausalLM, AutoTokenizer

# Downloading model checkpoint to a local dir model_dir
# model_dir = snapshot_download('qwen/Qwen-7B')
# model_dir = snapshot_download('qwen/Qwen-7B-Chat')
# model_dir = snapshot_download('qwen/Qwen-14B')
model_dir = snapshot_download('qwen/Qwen-1_8B-Chat-Int4')

# Loading local checkpoints
# trust_remote_code is still set as True since we still load codes from local dir instead of transformers
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    device_map="auto",
    trust_remote_code=True
).eval()

#测试大模型,给定输入,大模型进行输出
response, history = model.chat(tokenizer, "你好", history=None)
print(response)

#加载微调后的模型
from peft import AutoPeftModelForCausalLM

model = AutoPeftModelForCausalLM.from_pretrained(
    'output_qwen', # path to the output directory
    device_map="auto",
    trust_remote_code=True
).eval()

#对微调后模型进行测试
response, history = model.chat(tokenizer, "你好", history=None)
print(response)

最后希望大家多多点赞收藏~ 你的点赞,我的动力~ 谢谢各位~

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值