大家好,我是 Jack。 AI 领域的技术,真是隔一段时间就有一个新突破! 全民都能训练大模型的时代,指日可待了! LoRA在讲解新突破之前,先简单科普下 LoRA。 LoRA,英文全称 Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。 后来,LoRA 不仅被应用于大语言模型,还适配应用到了 Stable Diffusion。 LoRA 的使用,大幅节省了微调的成本。比如 GPT-3 有 1750 亿参数,为了让它能干特定领域的活儿,需要做微调,但是如果直接对 GPT-3 做微调,成本太高太麻烦了。 LoRA 的做法是,冻结预训练好的模型权重参数,然后在每个 Transformer 块里注入可训练的层,由于不需要对模型的权重参数重新计算梯度,这样就大大减少了需要训练的计算量。 LoRA 就好比是一个插件,可以帮助我们低成本的定制各种效果。 今天的主角,则是在 LoRA 基础上再进一步,加上了深度的量化过程,名为 QLoRA。 QLoRAQLoRA 其实是核心就是在 LoRA 的技术加上深度的量化过程。核心优化思想包括以下三点:
只能说,太厉害了,这 GPU 的的成本大大大大缩减。EleutherAI/pythia-12b 推理只需 12G, finetune 也只需 23G. 单个 3090 就能搞定了。 QLoRA 技术让 65B 参数训练从 780G 降到 48G,再结合一些新的优化器,比如 Sophia,可以让模型训练 adma 提速 2 倍。 两者一结合,咱们也能训练大模型的日子,指日可待了!
有位某乎网友,对 QLoRA 进行了实测。 我们知道 120 亿参数量的 pythia-12b,想要运行起来,需要至少 48G 显存,但是使用 QLoRA 之后,只需要 12.8G 显存。 以下是实测记录: 1、环境准备 git clone https://github.com/artidoro/qlora.git 2、推理就是直接 跑sh scripts/generate.sh。这里建议先下载好模型和数据。避免老断带来的心情烦躁。网络好的下载顺畅的可跳过此部分。 EleutherAI/pythia-12b(需要24G存储)模型介绍: EleutherAI 是一个非营利性的人工智能研究实验室,专注于大型模型的可解释性和对齐性。pythia 是 EleutherAI 为了促进 LLM 的研究开源的一系列 LLM(70M, 160M, 410M, 1B, 1.4B, 2.8B, 6.9B, and 12B)。
3、前面的环境和数据都没问题了,运行scripts/generate.sh。 显存大小:EleutherAI/pythia-12b 推理只需要显存12.8G. 好强,我跑的第一个10B以上模型. 使用 QLoRA 在 3090 显卡上跑 12B 模型的 finetune。 以上内容整理自: 52AI:https://zhuanlan.zhihu.com/p/632398047 奉孝翼德:https://zhuanlan.zhihu.com/p/610031713 总结QLoRA 的出现进一步节省了训练成本,再结合能够指导网络更快收敛的优化器,训练成本大幅降低。 全民都能训大模型的时代,指日可待,就像现在训练分类、检测、分割网络一样。 好了,今天就聊这么多吧,我是 Jack,我们下期见! |
|