您的位置: 首页> 业界 > 正文

QLoRa:在消费级GPU上微调大型语言模型-每日讯息

2023-06-02 19:07:29 来源:DeepHub IMBA

大多数大型语言模型(LLM)都无法在消费者硬件上进行微调。例如,650亿个参数模型需要超过780 Gb的GPU内存。这相当于10个A100 80gb的gpu。就算我们使用云服务器,花费的开销也不是所有人都能够承担的。

而QLoRa (Dettmers et al., 2023),只需使用一个A100即可完成此操作。


(资料图)

在这篇文章中将介绍QLoRa。包括描述它是如何工作的,以及如何使用它在GPU上微调具有200亿个参数的GPT模型。

为了进行演示,本文使用nVidia RTX 3060 12 GB来运行本文中的所有命令。这样可以保证小显存的要求,并且也保证可以使用免费的Google Colab实例来实现相同的结果。但是,如果你只有较小内存的GPU,则必须使用较小的LLM。

QLoRa: Quantized LLMs with Low-Rank Adapters

2021年6月,发布的LoRa让我们的微调变得简单,我也在以前的文章中也有过介绍。

LoRa为LLM的每一层添加了少量的可训练参数(适配器),并冻结了所有原始参数。这样对于微调,只需要更新适配器权重,这可以显著减少内存占用。

而QLoRa更进一步,引入了4位量化、双量化和利用nVidia统一内存进行分页。

简而言之,QLoRa工作原理如下:

4位NormalFloat量化:这是一种改进量化的方法。它确保每个量化仓中有相同数量的值。这避免了计算问题和异常值的错误。双量化:QLoRa的作者将其定义如下“对量化常量再次量化以节省额外内存的过程。”统一内存分页:它依赖于NVIDIA统一内存管理,自动处理CPU和GPU之间的页到页传输。它可以保证GPU处理无错,特别是在GPU可能耗尽内存的情况下。

所有这些步骤都大大减少了微调所需的内存,同时性能几乎与标准微调相当。

使用QLoRa对GPT模型进行微调硬件要求:

下面的演示工作在具有12gb VRAM的GPU上,用于参数少于200亿个模型,例如GPT-J。

如果你有一个更大的卡,比如24gb的VRAM,则可以用一个200亿个参数的模型,例如GPT-NeoX-20b。

内存建议至少6 Gb,这个条件现在都能满足对吧。

GPT-J和GPT-NeoX-20b都是非常大的模型。所以硬盘议至少有100gb的可用空间。

如果你的机器不满足这些要求,可以使用Google Colab的免费实例,因为它就足够使用了。

软件要求:

必须要CUDA。这是肯定的。然后还需要一些依赖:

bitsandbytes:包含量化LLM所需的所有库。Hugging Face的Transformers和Accelerate:这些是标准库,用于训练模型。PEFT:提供了各种微调方法的实现,我们只需要里面的LoRa。数据集:自己的数据集,这里安装了Hugging Face的datasets,这个是备选,装不装无所谓,因为这玩意挺难用的

PIP安装命令如下:

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 pip install -q datasets

下面就是Python代码

1、GPT模型的加载与量化

我们需要以下导入来加载和量化LLM。

import torch from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

我们将对EleutherAI预训练的GPT NeoX模型进行微调。这是一个有200亿个参数的模型。注意:GPT NeoX具有允许商业使用的宽松许可证(Apache 2.0)。

可以从hug Face Hub获得这个模型和相关的标记器:

model_name = "EleutherAI/gpt-neox-20b"  #Tokenizer tokenizer = AutoTokenizer.from_pretrained(model_name)

然后配置量化器,如下所示:

quant_config = BitsAndBytesConfig(    load_in_4bit=True,    bnb_4bit_use_double_quant=True,    bnb_4bit_quant_type="nf4",    bnb_4bit_compute_dtype=torch.bfloat16 )
load_in_4bit:模型将以4位精度加载到内存中。bnb_4bit_use_double_quant:QLoRa提出的双量化。bnb_4bit_quant_type:这是量化的类型。“nf4”代表4位的NormalFloat。bnb_4bit_compute_dtype:当以4位加载和存储模型时,在需要时对其进行部分量化,并以16位精度(bfloat16)进行所有计算。

然后就可以加载4位模型:

model = AutoModelForCausalLM.from_pretrained(model_name, quantization_cnotallow=quant_config, device_map={"":0})

下一步启用梯度检查点,这样可以减少内存占用,但是速度会稍微降低一些:

model.gradient_checkpointing_enable()
2、LoRa的GPT模型预处理

为LoRa准备模型,为每一层添加可训练的适配器。

from peft import prepare_model_for_kbit_training, LoraConfig, get_peft_model  model = prepare_model_for_kbit_training(model)  config = LoraConfig(    r=8,    lora_alpha=32,    target_modules=["query_key_value"],    lora_dropout=0.05,    bias="none",    task_type="CAUSAL_LM" )  model = get_peft_model(model, config)

在LoraConfig中,可以使用r、alpha和dropout来获得更好的任务结果。具体内容可以在PEFT文档中找到更多选项和详细信息。

使用LoRa,我们只添加了800万个参数。并且只训练这些参数,这样使得微调很快。

3、数据集

对于这个演示,我们使用“english_quotes”数据集。这是一个由名言组成的数据集,在CC BY 4.0许可下发布。我们为了方便使用datasets直接加载。

from datasets import load_dataset data = load_dataset("Abirate/english_quotes") data = data.map(lambda samples: tokenizer(samples["quote"]), batched=True)
4、微调

微调的代码非常标准

import transformers  tokenizer.pad_token = tokenizer.eos_token  trainer = transformers.Trainer(    model=model,    train_dataset=data["train"],    args=transformers.TrainingArguments(        per_device_train_batch_size=1,        gradient_accumulation_steps=8,        warmup_steps=2,        max_steps=20,        learning_rate=2e-4,        fp16=True,        logging_steps=1,        output_dir="outputs",        optim="paged_adamw_8bit"    ),    data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False), ) trainer.train()

要记住optim=”paged_adamw_8bit”。它将使用分页实现更好的内存管理。没有它可能会出现内存不足错误。

在Google Colab上运行这个微调只需要5分钟。VRAM消耗的峰值是15gb。

它有用吗?让我们试试推理。

基于QLoRa推理

微调的QLoRa模型可以直接与标准的Transformers的推理一起使用,如下所示:

text = "Ask not what your country" device = "cuda:0" inputs = tokenizer(text, return_tensors="pt").to(device)  outputs = model.generate(**inputs, max_new_tokens=20) print(tokenizer.decode(outputs[0], skip_special_tokens=True))

你应该得到这样的输出:

Ask not what your country can do for you, ask what you can do for your country.”  – John F.

5分钟的微调效果还可以吧。

总结

LoRa让我们的微调变得简单,而QLoRa可以让我们使用消费级的GPU对具有10亿个参数的模型进行微调,并且根据QLoRa论文,性能不会显著下降。

如果你对QLoRa感兴趣,看看他的代码吧:

https://github.com/artidoro/qlora

关键词:

资讯
业界
企业
骑闻
产品
唐山曹妃甸推动京津冀协同发展 产业协同转移全面提速
春暖渤海湾,书写新画卷。位于唐山曹妃甸的金隅天坛(唐山)木业科技有限公司的生产车间内一片繁忙景象——铺装、压机、翻板等工作正紧张有序
2022-03-19
石家庄海关共签发RCEP原产地证书864份 货值3.9亿元
自今年1月1日RCEP(《区域全面经济伙伴关系协定》)正式实施以来,截至3月14日,石家庄海关共签发RCEP原产地证书864份,货值3 9亿元。据介绍
2022-03-19
蚌埠海关累计签发RCEP原产地证书35份 涉及金额2583.09万元
在蚌埠海关报关大厅原产地证办理窗口,海关关员仔细核对着递交过来的材料。十分钟后,一份RCEP原产地证书打印盖章后交到了企业业务员手中。
2022-03-19
昆明西山区:“双招双引”推动人才链和产业链融合发展
为激励党员干部在营商环境建设中担当作为,昆明市西山区深入实施人才强区战略和人才领跑工程,建立健全招商引资和招才引资并轨新模式,以产
2022-03-19
绥化望奎以工业化思维为引领 推动肉类加工制造产业腾飞
望奎县以工业化思维为引领,推动全县以生猪为主的肉类加工制造产业一年全面开局、三年基本成势、五年产业腾飞,聚焦五化做强做优肉类加工制
2022-03-19
1-2月安徽省限上餐饮收入实现69.9亿元 同比增长17.4%
安徽省统计局近日发布信息,今年1-2月,全省限额以上消费品零售额1030 4亿元,同比增长10 4%,比2021年两年平均增速高0 9个百分点,比全国
2022-03-19
QLoRa:在消费级GPU上微调大型语言模型-每日讯息
大多数大型语言模型(LLM)都无法在消费者硬件上进行微调。例如,650亿个参数模型需要超过780Gb的GPU内存。这
2023-06-02
全球即时看!今年前四个月 我国服务贸易总体保持增长态势
央视网消息:商务部今天(6月1日)公布的数据显示,2023年1—4月,我国服务贸易总体保持增长态势。  数据显
2023-06-02
米堡需要对新赛季克服的两个问题|观察
EFL专家达雷尔·克拉克(DarrellClarke)和菲尔·布朗(PhilBrown)认为,米德尔斯堡会成为下赛季英冠联赛
2023-06-02
【全球时快讯】中信金属06月02日主力资金大幅流入
中信金属06月02日主力资金净流入6630 54万元,涨跌幅为6 79%,主力净量(dde大单净额 流通股)为1 42%,两市
2023-06-02
梦幻西游上古灵符奖励 梦幻西游手游交上古灵符有什么奖励
1、上古灵符有什么用  上古灵符是武神坛专用道具,玩家把它上交以后,可以加强对应的战神的能力、战神装
2023-06-02
利用超市自助结账,小额“漏扫”逃单?检察机关出手了!_世界新资讯
会上,与会人员对检察机关充分参与社会综合治理表示肯定,并对自助结账盗窃诉源治理提出意见建议:在超市监
2023-06-02
沧州:8个重大科技专项项目确定 引领经济社会高质量发展
为充分发挥科技在经济社会高质量发展中的引领和支撑作用,沧州市确定8个项目为2021年全市重大科技专项项目。这8个重大科技专项项目分别为:
2022-03-19
  中新网海口1月23日电(王子谦 符宇群)海南省高级人民法院院长陈凤超23日说,2021年海南法院为自贸港建设提供坚强司法保障,全年有效管
2022-01-24
  新华社武汉1月23日电(记者王贤)随着春节假期临近,从广州、深圳等地返回湖北的旅客较多。为此,23日,武汉站、汉口站、襄阳东站、十堰
2022-01-24
  1月22日0—24时,广东省新增本土确诊病例3例和本土无症状感染者1例,均为珠海报告。23日,珠海市疫情防控新闻发布会上,珠海市政府副秘
2022-01-24
青海海西州德令哈市发生3.7级地震
  据中国地震台网正式测定,1月23日11时58分在青海海西州德令哈市发生3 7级地震,震源深度9千米,震中位于北纬38 40度,东经97 35度。
2022-01-24
  北京2022年冬奥会和冬残奥会颁奖花束已于近期完成交付。与传统的鲜切花不同,这些花束全部采用上海市非物质文化遗产“海派绒线编结技艺
2022-01-24
  中新网宿迁1月23日电 (刘林 张华东)核酸检测是当下及时发现潜在感染者、阻断疫情传播的有效方法。23日,记者从宿迁市宿豫区警方获悉
2022-01-24
  记者从天津市人社局获悉,从明天(24日)起,天津2022年度第一期积分落户申报工作正式开始,这是新修订的《天津市居住证管理办法》《天津
2022-01-24
  中新社北京1月23日电 (记者 刘亮)记者23日从中国海关总署获悉,2021年,中国海关组织开展“国门绿盾”专项行动,在寄递、旅客携带物
2022-01-24
  记者从天津市疫情防控指挥部获悉,天津疫情第341—360例阳性感染者基本信息公布。  目前,这20例阳性感染者已转运至市定点医院做进一
2022-01-24
“最美基层民警”武文斌:案子破了最管用
  中新网吕梁1月23日电 题:“最美基层民警”武文斌:案子破了最管用  作者 高瑞峰  同事称他为“拼命三郎”。从警14年,武文斌破
2022-01-24
  据“西安发布”消息,截至2022年1月23日,雁塔区长延堡街道近14天内无新增本地病例和聚集性疫情。根据国务院联防联控机制关于分区分级
2022-01-24
  中新网西宁1月23日电 (记者 孙睿)据青海省地震台网测定,2022年1月23日10点21分(北京时间)在青海省海西州德令哈市(北纬38 44度,东经
2022-01-24
江西南昌:市民赏年画迎新年 书法家挥毫送春联
  (新春见闻)江西南昌:市民赏年画迎新年 书法家挥毫送春联  1月23日,“赏年画过大年”新年画作品联展江西南昌站活动在江西省文化馆
2022-01-24
  中新网成都1月23日电 (祝欢)成都市第十七届人民代表大会第六次会议23日在成都举行,成都市中级人民法院院长郭彦与成都市人民检察院检
2022-01-24
列车临时停车3分钟救旅客
  (新春见闻)列车临时停车3分钟救旅客  中新网广州1月23日电 (郭军 黄伟伟)“车长,车长,4号车厢有位旅客腹涨难忍,身体不舒服”…
2022-01-24
女子背负命案潜逃24年 因涉疫人员核查落网
  中新网湖州1月23日电(施紫楠 徐盛煜 赵学良)1998年7月,犯罪嫌疑人杜某因家庭琐事,用菜刀将自己的弟媳砍伤致死。案发后,她从老家河
2022-01-24
广东“00后”雄狮少年锤炼功夫迎新春
  (新春见闻)广东“00后”雄狮少年锤炼功夫迎新春  中新社广州1月23日电 题:广东“00后”雄狮少年锤炼功夫迎新春  作者 孙秋霞 
2022-01-24
03-19 2022岳阳国际旅游节开幕 特色农产品展销等系列活动目不暇接
2022岳阳国际旅游节开幕 特色农产品展销等系列活动目不暇接
今天,天下洞庭岳阳市君山区第九届良心堡油菜花节暨2022岳阳国际旅游节开幕,菊红、粉红、水红、桃红、紫色、白色等七色组成的4万亩花海在 [详细]
03-19 2022年郴州计划重点推进文旅项目101个 总投资354亿元
2022年郴州计划重点推进文旅项目101个 总投资354亿元
3月16日,我市举行全市文旅项目和城市大提质大融城项目集中开工仪式,市委书记吴巨培宣布项目开工。郴州嘉合欢乐世界、仙福路工地清风徐来 [详细]
03-19 宿州泗县深入推进文旅融合发展 擦亮城市品牌
宿州泗县深入推进文旅融合发展 擦亮城市品牌
近年来,泗县以争创安徽省文化旅游名县为目标,深入推进文旅融合发展,努力擦亮水韵泗州 运河名城城市品牌,全县文化旅游业实现高质量发展 [详细]
03-19 淡季不忘引流 京郊民宿市场有望迎来回暖
淡季不忘引流 京郊民宿市场有望迎来回暖
旅游淡季中的京郊民宿有望成为市场中最先复苏的板块。3月17日,北京商报记者调查发现,虽然正值旅游淡季,且受疫情变化的影响,不过各家民 [详细]
01-24 西安浐灞回应“社区领导怒怼咨询群众”:涉事社区主任已停职
西安浐灞回应“社区领导怒怼咨询群众”:涉事社区主任已停职
  西安浐灞回应“一社区领导在市民咨询离市政策时发生争执”事件 涉事社区主任已停职  西部网讯(记者 刘望)日前,网络上流传一条视频 [详细]
01-24 陕西:截至23日12时 西安56.5万大中专学生已离校返家
陕西:截至23日12时 西安56.5万大中专学生已离校返家
  1月23日,陕西省举行第45场疫情防控工作发布会,发布会上陕西省教育厅相关负责人通报,陕西全省疫情有效控制后,大中专学校能不能放假 [详细]
01-24 河北魏县发布北京一阳性人员在魏县的主要轨迹
河北魏县发布北京一阳性人员在魏县的主要轨迹
  魏县疾病预防控制中心关于紧急寻找丰台区新冠肺炎阳性检测者同时间同空间人员的公告  2022年01月22日,接到邯郸市疾控中心转北京市疾 [详细]