一、前言
在经过了前两次作业的摸索之后,我们对魔搭notebook云电脑的操作、大模型API的调用以及机器学习相关的流程、调试有了一定程度的了解。因此,我们的第三项任务便来到了重头戏——与赛题要求相一致的,使用开源大模型与数据集进行逻辑推理。
二、微调方案介绍
我们在拿到开源的大模型时,原本的模型是针对各个领域的,其覆盖面虽广,但不一定能做到精通。尤其是处理像逻辑推理一样对思维的要求较高的任务时,原本的大模型不一定能够较好地完成我们的任务,因此,我们需要对大模型进行微调。
我们的微调教程参考了self-llm中Qwen2-7b的微调教程,链接如下:
https://github.com/datawhalechina/self-llm
跟前几次一样,我们的数据集仍然是‘round1_train_data.jsonl’。
1. 环境配置
Datawhale团队将这次的代码放置在了魔搭平台的仓库中,链接如下:
https://www.modelscope.cn/datasets/Datawhale/DW2024_Complex_reasoning_ability_assessment_qwen2-7b-lora
然后我们进入魔搭notebook,由于本次涉及到本地模型的搭建,所以我们采用搭载GPU的云电脑来完成我们的机器学习任务。根据教程,我们一定要选择‘ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.14.0’来作为预装镜像(版本不同的话可能会对我们的代码运行产生影响)。
启动的过程中可能会遇到如下图的情况,我们只需等待一两分钟后刷新界面,再次点击‘启动’即可进入云电脑。
![](https://i-blog.csdnimg.cn/direct/812ed7d56d2c4632a61e8b74182f1c15.png)
2. 数据准备
进入云电脑后,我们需要使用git将我们所需的数据克隆至云电脑即可。Terminal打开方式如下:
![](https://i-blog.csdnimg.cn/direct/368495c111c44533b466ad81aa10dcfe.png)
git clone https://www.modelscope.cn/datasets/Datawhale/DW2024_Complex_reasoning_ability_assessment_qwen2-7b-lora.git
运行上述指令,将仓库中的文件导入云电脑。
之后我们的文件栏中会出现名为‘DW2024_Complex_reasoning_ability_assessment_qwen2-7b-lora’的文件,双击进入文件夹。
三、LoRA微调
LoRA简介
LoRA,即Low-Rank Adaptation,是一种高效的模型微调技术,适用于大型预训练语言模型的适应性调整,我们的主要任务便是将原来的大语言模型向逻辑推理这个方向‘专精化’发展。
原理可以参考下述文档:
https://github.com/microsoft/LoRA?tab=readme-ov-file
https://arxiv.org/pdf/2106.09685
https://huggingface.co/docs/peft/quicktour
代码调试
我们只需打开lora.ipynb,根据文档中的提示一步步来即可,在有些环节需要我们重启notebook。注意:重启notebook并不是要我们关闭实例,只需点击refresh即可(如图)。
插句题外话,云电脑在下载大语言模型时的网速竟然达到了300+MB/s,如果换做我家这个网络的化,估计就连下载模型都得要大半天。
代码的模型训练的时间就达到了10分钟之多,加之安装库函数、数据集,以及合并数据等的时长,因此代码运行总时长大约为15分钟。
四、vLLM加速
vLLM,即Virtual Large Language Model,是一个开源的大规模语言模型高速推理框架,旨在提升语言模型服务的吞吐量和内存使用效率。
我们在本次任务中只需要打开‘start_vllm.ipynb’文件即可。
注意:文件会一直显示运行状态,在关闭实例前不要关闭该文件!!!
五、多路LLM投票
在本次实例中,多路LLM投票将通过三次结果推理,将选择答案最多的结果作为最终结果(即少数服从多数原则)。
假设大模型在推理的过程中大模型犯错的概率为p%,那么经过三路投票后,犯错的概率=,也就是说,经过了三路投票,大模型犯错的概率会大幅度下降!
我们在本次任务中,只需要运行‘baseline2_main.ipynb’文件即可,我们将会生成‘upload.jsonl’文件,之后将其上传至比赛官网即可。
六、提交结果与结果分析
同样,我们将结果提交至比赛的平台上进行打分。这次相比上次有了一大步跨越!
![](https://i-blog.csdnimg.cn/direct/02673fb2b17248fd8dd9e98d49be8640.png)
七、其他
这是一个本地的环境配置教程:
https://eco4rorm4y.feishu.cn/docx/UI5NdbqpIo4xZ7x63Bgch7xunEd?from=from_copylink
在运行‘baseline2_main.ipynb’文件时,最好是在ipynb中一步步运行代码。也不知为何,若是点击一键运行,在最后几个代码块总是一直显示在运行中,文件也是能够正常输出。
教程中提到了“以ana.json为微调模型提交结果,可能在运行 baseline2_main.ipynb时会出现一些小问题”但是我在运行时并未发现问题,可能唯一的问题就是输出文件中仍然存在一个缺失值吧。