【惊叹】AI进步的速度太快,我们赶不上了?


前言

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。

二、QLoRA

QLoRA 其实是核心就是在 LoRA 的技术加上深度的量化过程。核心优化思想包括以下三点:

4bit NoramlFloat Quantization :一种新的数据类型,只用 4 字节表征参数并且保证整个模型的精度损失极小。(和我们之前的 int8, int4 量化方式不同, 原理这篇先不展开了)
Double Quantization :对第一次量化后的那些常量再进行一次量化,减少存储空间。
Paged optimizers : 使用 NVIDIA 统一内存功能,该功能在 CPU 和 GPU 之间进行自动 page 对 page 传输,以便在 GPU 偶尔 OOM 的情况下进行. 可以从现象上理解成出现训练过程中偶发 OOM 时能够自动处理,保证训练正常训练下去。
只能说,太厉害了,这 GPU 的的成本大大大大缩减。EleutherAI/pythia-12b 推理只需 12G, finetune 也只需 23G. 单个 3090 就能搞定了。

QLoRA 技术让 650B 参数训练从 780G 降到 48G,再结合一些新的优化器,比如 Sophia,可以让模型训练 adma 提速 2 倍。

两者一结合,咱们也能训练大模型的日子,指日可待了!

项目地址:

https://github.com/artidoro/qlora

有位某乎网友,对 QLoRA 进行了实测。

我们知道 120 亿参数量的 pythia-12b,想要运行起来,需要至少 48G 显存,但是使用 QLoRA 之后,只需要 12.8G 显存。

以下是实测记录:

1、环境准备

代码如下(示例):


git clone https://github.com/artidoro/qlora.git

conda create -n qenv python-3.8
conda activate qenv
cd qlora
pip install -r requirements.txt

#项目涉及到的新代码,都需要从源码进行安装才能保证。这里有同学网络不好的或者安装失败的可参见遇到的问题手动安装
pip install -q -U bitsandbytes
pip install -q -U git+https://github.com/huggingface/transformers.git
pip install -q -U git+https://github.com/huggingface/peft.git
pip install -q -U git+https://github.com/huggingface/accelerate.git

2、推理就是直接 跑shscripts/generate.sh。

这里建议先下载好模型和数据。避免老断带来的心情烦躁。网络好的下载顺畅的可跳过此部分。

EleutherAI/pythia-12b(需要24G存储)模型介绍:

EleutherAI 是一个非营利性的人工智能研究实验室,专注于大型模型的可解释性和对齐性。pythia 是 EleutherAI 为了促进 LLM 的研究开源的一系列 LLM(70M, 160M, 410M, 1B, 1.4B, 2.8B, 6.9B, and 12B)。

#单独起一个脚本就下载模型和数据。
# test.py 
#模型下载也可网上找那种不下到默认目录的。缓存目录: ll ~/.cache/huggingface/hub/models--EleutherAI--pythia-12b/
from transformers import (
    AutoModelForCausalLM, 
)
model = AutoModelForCausalLM.from_pretrained("EleutherAI/pythia-12b")

# download dataset. 
#这里联网下载不下来的,手动下载地址 https://huggingface.co/datasets/tatsu-lab/alpaca/tree/main/data
# 就把24M数据下载下来, mkdir -p tatsu-lab/alpaca , 然后下载好数据丢里面就行
from datasets import load_dataset
dataset = load_dataset("tatsu-lab/alpaca")

3、前面的环境和数据都没问题了,运行scripts/generate.sh。

显存大小:EleutherAI/pythia-12b 推理只需要显存12.8G. 好强,我跑的第一个10B以上模型.
在这里插入图片描述

以上内容整理自:

52AI:https://zhuanlan.zhihu.com/p/632398047

奉孝翼德:https://zhuanlan.zhihu.com/p/610031713

总结

QLoRA 的出现进一步节省了训练成本,再结合能够指导网络更快收敛的优化器,训练成本大幅降低。

全民都能训大模型的时代,指日可待,就像现在训练分类、检测、分割网络一样。

好了,今天就聊这么多吧,我是 徐浪,我们下期见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐浪老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值