从0到1训练私有大模型技能与应用实现

1.背景

近期,GPT大模型的发布给自然语言处理(NLP)领域带来了令人震撼的体验。随着这一事件的发生,一系列开源大模型也迅速崛起。依据一些评估机构的评估,这些开源模型大模型的表现也相当不错。一些大模型的评测情况可以去这里查询:Huggingface的Open LLM排行榜,UC伯克利发布大语言模型排行榜等。

随着大模型的发展,大模型的训练与部署技术变的非常重要了。我们调研了LORA与QLORA等微调训练技术,以及GPTQ量化部署技术。在跑通最小Demo并验证效果后,把这些技术集成到KubeAI平台(得物AI平台),提供给大家去快速上手。

本篇主要分为技术理论与技术实战两个部分去讲解。

技术理论主要讲解微调训练与量化推理的理论部分,微调训练包括LoRA,QLoRA, 部署包括GPTQ量化推理等,并针对关键代码进行走读,针对部署进行性能测试。

技术实战部分我们把这些技术集成到KubeAI平台上,供大家可以快速上手实战。依据前面同学的反馈情况,大约一天内可以完成大模型训练并部署推理上线。
在这里插入图片描述

2.LoRA与QLoRA训练技术

2.1 LoRA技术介绍

LoRA,英文全称 Low-Rank Adaptation of Large Language Models(中文为大语言模型的低阶适应)。

这是微软的研究人员为了解决大语言模型微调而开发的一项技术,

其 github 地址为 https://github.com/microsoft/LoRA ,

当前已经得到HuggingFace 的 PEFT库 https://github.com/huggingface/peft 的支持。

对于大语音模型来说,其参数量非常多。GPT3有1750亿参数,而且LLAMA系列模型包括 7B,13B,33B,65B,而其中最小的7B都有70亿参数。要让这些模型去适应特定的业务场景,需要对他们进行微调。如果直接对这些模型进行微调,由于参数量巨大,需要的GPU成本就会非常高。LoRA就是用来解决对这些大语言模型进行低成本微调的技术。

LoRA的做法是对这些预训练好的大模型参数进行冻结,也就是在微调训练的时候,这些模型的参数设置为不可训练。然后往模型中加入额外的网络层,并只训练这些新增的网络层参数。这样可训练的参数就会变的非常少,可以以低成本的GPU微调大语言模型。

参照 https://arxiv.org/abs/2106.09685

LoRA在Transformer架构的每一层注入可训练的秩分解矩阵,与使用Adam微调的GPT-3 175B相比,LoRA可以将可训练参数数量减少10000倍,GPU内存需求减少3倍,并且在效果上相比于传统微调技术表现的相当或更好。

下面以Transformer的线性层为例,讲解下LoRA具体是如何操作的。

在Transformer模型中的线性层,通常进行矩阵乘法操作,如Y = XW,其中X是输入矩阵,W是权重矩阵,也是模型训练求解的参数。

对于LoRA方法在Transformer的线性层中的操作步骤:

在每个线性层旁边增加一个"旁路",由降维矩阵A和升维矩阵B构成。低秩分解在这里发挥作用,例如我们有一个100x100的矩阵C,我们可以通过低秩分解将其分解为A和B(假设秩设置为1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值