前言
在之前的两个任务中,我们已经学会了如何使用魔搭社区和使用api实现任务。现在我们开始学习如何进行对baseline的微调。
本次微调采用qwen2-72b模型,使用LoRA(Low-Rank Adaptation)的模型微调技术,利用vLLM(大规模语言模型高速推理框架来)加速推理,采用多路LLM投票的方式实现模型调整。
一、LoRA
1. LoRA介绍
LoRA(Low-Rank Adaptation)微调是一种高效的模型微调技术,特别适用于大型预训练语言模型的适应性调整。LoRA的核心思想是通过引入低秩矩阵来调整模型的权重,从而在不显著增加模型参数数量的情况下,实现对模型的微调。
2.LoRA微调原理
LoRA(Low-Rank Adaptation)微调冻结了预训练的模型权重,并将可训练的秩分解矩阵注入到 Transformer 架构的每一层,极大地减少了下游任务的可训练参数的数量。
基于LoRA的微调产生保存了新的权重,可以将生成的LoRA权重认为是一个原来预训练模型的补丁 。所以LoRA模型无法单独使用,需要搭配原模型,两者进行合并即可获得微调后的完整权重。
二、vLLM
1.vLLM介绍
vLLM是一个由伯克利大学LMSYS组织开源的大规模语言模型高速推理框架。它的设计目标是在实时应用场景中大幅提升语言模型服务的吞吐量和内存使用效率。核心是 PagedAttention
算法,官网为:vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention | vLLM Blog
2.vLLM特点
1.易于使用 2.与Hugging Face等流行工具无缝集成 3.支持并行采样、beam search 等解码算法的高吞吐量服务,支持分布式推理的张量并行 4.兼容 OpenAI 的接口服务
三、多路LLM投票
这里采用“多路召回策略”实现baseline的优化, 所谓的“多路召回策略”就是指采用不同的策略、特征或者简单模型,分别召回一部分候选集,然后再把这些候选集混合在一起后供后续排序模型使用的策略。
设计步骤:1.在baseline中,创建一个字典来存储每个字符的出现次数,找到出现次数最多的字符,将选择答案最多的结果作为最终结果。
2.多线程任务启动,调用多次大模型对结果进行抽取,通过字典和投票函数获得最终结果并 返回值。