宇宙免责声明:对B站博主”是花子呀_“的视频教程做的笔记总结
目录
下载资源
https://pan.baidu.com/s/1nHs1WEzbC64GiKbNqiWpJw?pwd=4pje
训练前的模型回答
在pycharm中,运行下面的代码(模型路径改成自己的)
from transformers import pipeline
# 指定模型所在路径
model_path = "E:\\BaiduNetdiskDownload\\just_train\\model\\Qwen2-0.5B-Instruct"
# 加载因果语言模型
pipe = pipeline("text-generation", model=model_path)
# 问题作为输入
question = "8.11和8.9谁更大,8.11还是8.9?"
# 使用该 pipeline 进行生成任务
result = pipe(
question,
max_length=100, # 设置生成的最大长度
num_return_sequences=1, # 返回的答案数量
truncation=True, # 显式启用截断
no_repeat_ngram_size=3, # 防止模型生成重复的句子
num_beams=5, # 使用 beam search 来生成更好的答案
do_sample=True, # 允许模型生成多个可能的答案
top_k=50, # 在每一步中只考虑最有可能的50个词
temperature=0.7 # 控制生成的多样性,较低的值会让输出更精确,较高的值会增加多样性
)
# 输出结果
print(result[0]['generated_text'])
运行结果
可以看到,回答效果并不好。
选择微调方法
微调模型的方法有很多种,其中一种方法是只会更新模型的部分参数,比如LoRA和QLoRA,这些方法通常在较低的硬件要求下实现模型微调。另一种常见的方法是全参数微调,这种方法会更新模型的所有参数,全参数微调通常对机器的要求较高,需要强大的硬件支持,所以使用云服务器会更方便。
模型选择
确定了微调方法之后,接下来要考虑选择哪个预训练模型,目前全世界的开源模型都会发布在huggingface上,我们可以从这个网站上下载各种各样的模型,这里选择阿里通义千问出品的Qwen2
进入网址:Qwen/Qwen2-72B-Instruct · Hugging Face
明确训练目标
选定了预训练模型之后,需要思考:想把模型调教出什么样子?记住一点:想要模型解决什么样的问题,就需要准备什么样的训练样本
制作训练样本
利用已有的大模型,来帮我们生成训练样本,直接对大模型提需求即可,例如
一个称职的提示语,必须清楚地告诉AI要干什么。
然后将样本复制,保存到文件中即可,
之后我们需要让训练脚本读取这个样本文件来训练模型。
关于训练样本
1.训练样本在train_data.json文件中,提供的资源已经帮我们写好了训练样本,我们不需要改,直接拿来用即可
2.如果要用自己的训练样本,首先文件的名字也要叫train_data.json,因为训练脚本里就是根据这个名字来读取训练样本的,位置也要放在这个目录中
开始训练
接下来开始准备训练模型,可以在本地训练,也可以在云服务器训练。这里推荐使用云服务器训练,因为在本地训练是需要使用wsl2来运行Linux的,关于wsl2,我目前没有了解过,而且个人计算机算力有限,用来训练大模型效率不高。
这里使用的是GPUEZ云服务器,GPUEZ智算云 | 弹性、好用、省钱。租GPU就上ZSCloud
首先,在算力市场里面租一台云服务器
这里可以选择一个比较便宜的
选择镜像后,点击创建
用jupyterLab打开
上传资源
等待进度条跑完,就代表上传完成,这里大概要花20多分钟
进入root目录
cd root
解压上传的资源
unzip just_train.zip
解压完成后,进入just_train文件夹,并开始训练模型
cd just_train
./train.sh
当看到下图的场景时,说明正在进行训练
当进度条到100%时,训练完成
验证模型
训练好的模型会保存到outputs文件夹中
输入./run.sh即可验证输入成果
!!!!操作完之后,记得将实例释放掉,避免继续产生费用