数据学习
登录
注册
原创博客
期刊会议
学术世界
期刊出版社
领域期刊
SCI/SCIE/SSCI/EI简介
期刊列表
会议列表
所有期刊分区
学术期刊信息检索
JCR期刊分区查询
CiteScore期刊分区查询
中科院期刊分区查询
领域期刊分区
管理 - UTD24期刊列表
管理 - AJG(ABS)期刊星级查询
管理 - FMS推荐期刊列表
计算机 - CCF推荐期刊会议列表
高校期刊分区
南大核心(CSSCI)
合工大小核心
合工大大核心
AI资源仓库
AI领域与任务
AI研究机构
AI学术期刊
AI论文快讯
AI数据集
AI开源工具
AI模型
AI模型概览图
AI模型月报
AI基础大模型
AI预训练大模型
数据推荐
网址导航
我的网址导航
程序员必备网站
康奈尔大学发布可以在一张消费级显卡上微调650亿参数规模大模型的框架:LLMTune
标签:
#PEFT#
#大模型微调#
时间:2023/05/14 23:42:57
作者:小木
尽管大模型的研究十分火热,开源模型也很丰富。但是对于很多研究团队来说,基于开源模型进行特定领域的模型微调依然是一项成本高昂的活动。因此,大模型的小型化、低成本训练等方法一直在快速演进。前天,Cornell Tech开源了LLMTune,这是一个可以在消费级显卡上微调大模型的框架,经过测试,可以在48G显存的显卡上微调4bit的650亿参数的LLaMA模型!

[TOC] #### LLMTune简介 大语言模型虽然能力很强,目前开源生态也很丰富,但是在特定领域微调大模型依然需要大规格的显卡。例如,清华大学发布的ChatGLM-6B,参数规模60亿,在没有量化的情况下微调需要14GB显存(parameter-efficient fine-tuning,PEFT)。 在没有任何优化的前提下,每10亿参数的全精度(32bit)模型载入到显存中就需要4GB,而int8量化后也需要1GB显存。而目前开源最强的模型LLaMA,其最高参数维650亿规模,全精度模型载入就需要260GB,显然已经超出了大部分人的硬件水平。更不要说对模型进行微调(微调需要训练更新参数,推理只需要前向计算即可,因此,微调需要更多的显存才能支持)。 本次,Cornell Tech开源的LLMTune就是为了降低大模型微调难度所提出的一种解决方案。对于650亿参数的LLaMA模型微调仅需要40GB显存即可。 LLMTune在底层实现了LoRA算法,该算法使用GPTQ压缩LLM,需要实现量化版本LLM的反向传递。LLMTune的功能包括: 1. 对多个LLM的模块化支持(目前支持MetaAI开源的2个模型,LLaMA和OPT) 2. 支持广泛的消费级NVIDIA的GPU显卡(包括RTX系列、A系列、GTX系列等) 3. 代码库微小且易于使用(整个源代码仅64k大小) Cornell Tech开源LLMTune的最终目的是为了提供一个可以简单微调大模型的平台,并促进LLM相关的研究。 #### LLMTune的使用方法 LLMTune底层实现了LoRA算法,它依赖的库也很少,主要包括: | 库名称 | 简介 | | ------------ | ------------ | | PyTorch | Meta开源的深度学习框架 | | sentencepiece |Google开源的无监督tokenizer工具 | | transformers | HuggingFace开源的NLP预训练模型框架 | | peft | HuggingFace开源的支持各种LLM高效微调的库 | | datasets | HuggingFace开源的数据集库 | 注意,LLMTune目前仅支持在NVIDIA显卡上的微调,所以上述PyTorch也需要cuda版本才可以使用。具体的LLMTune要求如下: | 配置项 | 具体配置结果 | | ------------ | ------------ | | 操作系统 | UNIX | | Python | 3.8以上 | | PyTorch | 1.13.1+cu116版本测试没问题 | | 显卡 | NVIDIA系列,支持cuda | 使用方法也很简单,首先从官方GitHub下载LLMTune代码,然后运行如下2个命令安装: ##### 1、安装LLMTune ``` pip install -r requirements.txt # 安装LLMTune依赖的库 pip setup.py install # 安装LLMTune ``` ##### 2、下载预训练结果文件 注意,LLMTune目前支持量化版本的模型微调,可以按照如下命令下载LLaMA的4bit版本预训练结果。 ``` wget https://huggingface.co/kuleshov/llama-65b-4bit/resolve/main/llama-65b-4bit.pt ``` ##### 3、下载数据集 ``` wget https://huggingface.co/datasets/kuleshov/alpaca-data/resolve/main/dataset.json ``` ##### 4、微调模型 ``` # 先创建一个微调结果目录 mkdir alpaca-adapter-folder-65b-4bit # 然后运行如下命令进行微调 llmtune finetune --model llama-65b-4bit --weights llama-65b-4bit.pt --adapter alpaca-adapter-folder-65b-4bit --dataset dataset.json ``` 接下来等待微调结束即可~你也可以写一个py文件来微调模型: ```python import llmtune.executor as llmtune llm, llm_config = llmtune.load_llm('llama-7b-4bit', '/path/to/llama-7b-4bit.pt') output = llmtune.generate( llm, llm_config, prompt="the pyramids were built by", min_length=10, max_length=50, top_p=0.95, temperature=0.8, ) print(output) ``` #### LLMTune微调总结 目前,项目给出了LLMTune支持的模型规模和所需要的显存大小: | Model大小 | 最低GPU显存| 兼容的显卡 | | ----- | -------------------- | --------------- | | 7b-4bit | 6GB | RTX 2060, 3050, 3060 | | 13b-4bit | 10GB | GTX 1080, RTX 2060, 3060, 3080 | | 30b-4bit | 20GB | RTX 3080, A5000, 3090, 4090, V100 | | 65b-4bit | 40GB | A100, 2x3090, 2x4090, A40, A6000 | 未来,LLMTune还将陆续增加如下功能: - 支持直接从HuggingFace hub中直接载入模型 - 开箱即用地支持更多的LLM - 接口优化,如自动停止等 - 自动量化脚本 #### 大模型高效微调总结 LLMTune的出现让我们看到了在消费级显卡上进行大模型微调的可能。除了它以外也有一些大模型的微调工作在进行中。其中比较值得期待的是华盛顿大学的博士生Tim Dettmers正在进行的工作。与LLMTune类似,他们即将发表的大模型微调技术,QLoRA正在招募测试,可以用48GB显存微调650亿参数规模大模型。按照他的描述,他们做的工作包括三部分: 1. 4-bit Normal Float:一个信的用于压缩的数据类型 2. Paged优化器:内存优化技术 3. 双量化:量化后再量化 不过,具体的技术细节还未公布,目前只是招募测试人员提前测试技术,我们保持密切关注。 从近期的发展看,大模型的微调成本继续在下降,未来单张显卡训练650亿参数模型应该是可以达到的。我们后续将测试这种微调技术的效果。
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
相关博客
最热博客