使用LLM的问题

当前大模型的低成本实现方案:

语言模型 + 指令微调数据 + 微调加速
llama + alpaca_data(Fine-tuning) + lora

语言模型:

...

指令微调数据:

在一组通过指示描述的数据集上对语言模型微调,大大提高了在未见过任务上的 Zero-Shot 能力。
通过对多种任务的糅合学习 Zero-Shot 能力。

当前开源大模型的Fine-tuning(Instruction Tuning,prompt Tuning)都是针对此处进行训练。

微调加速:

解决低资源下的训练问题

在完整微调过程中,模型使用预训练好的权重来初始化模型,然后通过最大化条件语言模型来更新参数。缺点是:对于每个下游任务都需要学习不同的参数更新,如果预训练模型很大,则参数更新的成本很高。

lora:
对于预训练权重矩阵:
\(W_{0}\)\(R^{d × k}\)
低秩分解为:
\(W_{0}+\Delta W=W_{0}+BA ,B∈R^{d×r},A∈R^{r×k}\),并且秩\(r\ll min(d,k)\)
在训练过程中,\(W_{0}\)被冻结不接受梯度更新,A和B是可训练的参数。当需要转换至另一个下游任务时,可以通过减去BA来恢复\(W_{0}\),然后添加不同的\(B^{'}A^{'}\)

问题

当前开源大模型的Fine-tuning都是针对指令微调数据进行训练,训练成本(使用lora技术能在单卡训练,7B的模型3090需要10小时左右)。

此训练只是把含有{instruction,input,output}的数据丢入训练,没有模型或技术上改变。

大模型没有之前(pre-train + fine-tuning)中fine-tuning的说法,所以如果需要技术上的改变,则需要修改语言模型,但这样需要的显存是不可计量的

posted @ 2023-04-11 17:40  ︶ㄣ演戲ㄣ  阅读(88)  评论(0编辑  收藏  举报