LLMs九层妖塔

DayNightStudy

共 14569字,需浏览 30分钟

 ·

2024-05-07 08:00

【LLMs九层妖塔】分享 LLMs在自然语言处理(ChatGLM、Chinese-LLaMA-Alpaca、小羊驼 Vicuna、LLaMA、GPT4ALL等)、信息检索(langchain)、语言合成、语言识别、多模态等领域(Stable Diffusion、MiniGPT-4、VisualGLM-6B、Ziya-Visual等)等 实战与经验。


Github 地址:https://github.com/km1994/LLMsNineStoryDemonTower

!! LLMs九层妖塔 交流群 (注:人满 可 添加 小编wx:yzyykm666 加群!)

第一层 LLMs to Natural Language Processing (NLP)

第一重 ChatGLM-6B 系列

ChatGLM-6B
  1. 【ChatGLM-6B入门-一】清华大学开源中文版ChatGLM-6B模型学习与实战

    1. 介绍:ChatGLM-6B 环境配置 和 部署

  2. 【ChatGLM-6B入门-二】清华大学开源中文版ChatGLM-6B模型微调实战

    1. ChatGLM-6B P-Tuning V2 微调:Fine-tuning the prefix encoder of the model.

  3. 【ChatGLM-6B入门-三】ChatGLM 特定任务微调实战

  4. 【ChatGLM-6B入门-四】ChatGLM + LoRA 进行finetune

    1. 介绍:ChatGLM-6B LoRA 微调:Fine-tuning the low-rank adapters of the model.

  5. ChatGLM-6B 小编填坑记

    1. 介绍:ChatGLM-6B 在 部署和微调 过程中 会遇到很多坑,小编掉坑了很多次,为防止 后人和小编一样继续掉坑,小编索性把遇到的坑都填了。

  6. 【LLMs学习】关于大模型实践的一些总结

  7. ...


ChatGLM2-6B


第十一重 Llama2

  • 【LLMs 入门实战】Chinese-Llama-2-7b 模型学习与实战

    • https://huggingface.co/ziqingyang/chinese-llama-2-7b

    • https://huggingface.co/LinkSoul/Chinese-Llama-2-7b-4bit

    • 官网:https://ai.meta.com/llama/

    • 论文名称:《Llama 2: Open Foundation and Fine-Tuned Chat Models》

    • 论文地址:https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/

    • 演示平台:https://huggingface.co/spaces/LinkSoul/Chinese-Llama-2-7b

    • Github 代码:https://github.com/LinkSoul-AI/Chinese-Llama-2-7b

    • 模型下载地址:

    • 介绍:自打 LLama-2 发布后就一直在等大佬们发布 LLama-2 的适配中文版,也是这几天蹲到了一版由 LinkSoul 发布的 Chinese-Llama-2-7b,其共发布了一个常规版本和一个 4-bit 的量化版本,今天我们主要体验下 Llama-2 的中文逻辑顺便看下其训练样本的样式,后续有机会把训练和微调跑起来。

第十重 Baichuan

Baichuan-13B
  • 【LLMs 入门实战 】 Baichuan-13B 模型学习与实战

    • 更大尺寸、更多数据:Baichuan-13B 在 Baichuan-7B 的基础上进一步扩大参数量到 130 亿,并且在高质量的语料上训练了 1.4 万亿 tokens,超过 LLaMA-13B 40%,是当前开源 13B 尺寸下训练数据量最多的模型。支持中英双语,使用 ALiBi 位置编码,上下文窗口长度为 4096。

    • 同时开源预训练和对齐模型:预训练模型是适用开发者的“基座”,而广大普通用户对有对话功能的对齐模型具有更强的需求。因此本次开源同时发布了对齐模型(Baichuan-13B-Chat),具有很强的对话能力,开箱即用,几行代码即可简单的部署。

    • 更高效的推理:为了支持更广大用户的使用,本次同时开源了 int8 和 int4 的量化版本,相对非量化版本在几乎没有效果损失的情况下大大降低了部署的机器资源门槛,可以部署在如 Nvidia 3090 这样的消费级显卡上。

    • 开源免费可商用:Baichuan-13B 不仅对学术研究完全开放,开发者也仅需邮件申请并获得官方商用许可后,即可以免费商用。

    • 官方微调过(指令对齐):https://huggingface.co/baichuan-inc/Baichuan-13B-Chat

    • 预训练大模型(未经过微调):https://huggingface.co/baichuan-inc/Baichuan-13B-Base

    • baichuan-inc/Baichuan-13B:https://github.com/baichuan-inc/Baichuan-13B

    • Baichuan-13B 大模型:

    • 介绍:Baichuan-13B 是由百川智能继 Baichuan-7B 之后开发的包含 130 亿参数的开源可商用的大规模语言模型,在权威的中文和英文 benchmark 上均取得同尺寸最好的效果。Baichuan-13B 有如下几个特点:


baichuan-7B
  • 【LLMs 入门实战 】 baichuan-7B 学习与实战

    • 论文名称:

    • 论文地址:

    • Github 代码: https://github.com/baichuan-inc/baichuan-7B

    • 模型:

    • 介绍:由百川智能开发的一个开源可商用的大规模预训练语言模型。基于Transformer结构,在大约1.2万亿tokens上训练的70亿参数模型,支持中英双语,上下文窗口长度为4096。在标准的中文和英文权威benchmark(C-EVAL/MMLU)上均取得同尺寸最好的效果。


第二重 Stanford Alpaca 7B

  • 【LLMs 入门实战 —— 五 】Stanford Alpaca 7B 模型学习与实战

    • 介绍:本教程提供了对LLaMA模型进行微调的廉价亲民 LLMs 学习和微调 方式,主要介绍对于 Stanford Alpaca 7B 模型在特定任务上 的 微调实验,所用的数据为OpenAI提供的GPT模型API生成质量较高的指令数据(仅52k)。


第三重 Chinese-LLaMA-Alpaca

  • 【LLMs 入门实战 —— 六 】Chinese-LLaMA-Alpaca 模型学习与实战

    • 介绍:本教程主要介绍了 Chinese-ChatLLaMA,提供中文对话模型 ChatLLama 、中文基础模型 LLaMA-zh 及其训练数据。 模型基于 TencentPretrain 多模态预训练框架构建


第四重 小羊驼 Vicuna

  • 【LLMs 入门实战 —— 七 】小羊驼 Vicuna模型学习与实战

    • 介绍:UC伯克利学者联手CMU、斯坦福等,再次推出一个全新模型70亿/130亿参数的Vicuna,俗称「小羊驼」(骆马)。小羊驼号称能达到GPT-4的90%性能


第五重 MOSS

  • 【LLMs 入门实战 —— 十三 】MOSS 模型学习与实战

    • 介绍:MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码单词上预训练得到,后续经过对话指令微调、插件增强学习和人类偏好训练具备多轮对话能力及使用多种插件的能力。

    • 局限性:由于模型参数量较小和自回归生成范式,MOSS仍然可能生成包含事实性错误的误导性回复或包含偏见/歧视的有害内容,请谨慎鉴别和使用MOSS生成的内容,请勿将MOSS生成的有害内容传播至互联网。若产生不良后果,由传播者自负。


第六重 BLOOMz

  • 【LLMs 入门实战 —— 十四 】 BLOOMz 模型学习与实战

    • 介绍:大型语言模型(LLMs)已被证明能够根据一些演示或自然语言指令执行新的任务。虽然这些能力已经导致了广泛的采用,但大多数LLM是由资源丰富的组织开发的,而且经常不对公众开放。作为使这一强大技术民主化的一步,我们提出了BLOOM,一个176B参数的开放性语言模型,它的设计和建立要感谢数百名研究人员的合作。BLOOM是一个仅有解码器的Transformer语言模型,它是在ROOTS语料库上训练出来的,该数据集包括46种自然语言和13种编程语言(共59种)的数百个来源。我们发现,BLOOM在各种基准上取得了有竞争力的性能,在经历了多任务提示的微调后,其结果更加强大。

    • 模型地址:https://huggingface.co/bigscience/bloomz


第七重 BELLE

  • 【LLMs 入门实战 —— 十五 】 BELLE 模型学习与实战

    • 介绍:相比如何做好大语言模型的预训练,BELLE更关注如何在开源预训练大语言模型的基础上,帮助每一个人都能够得到一个属于自己的、效果尽可能好的具有指令表现能力的语言模型,降低大语言模型、特别是中文大语言模型的研究和应用门槛。为此,BELLE项目会持续开放指令训练数据、相关模型、训练代码、应用场景等,也会持续评估不同训练数据、训练算法等对模型表现的影响。BELLE针对中文做了优化,模型调优仅使用由ChatGPT生产的数据(不包含任何其他数据)。

    • github 地址: https://github.com/LianjiaTech/BELLE


第八重 ChatRWKV

  • 【LLMs 入门实战 —— 十八 】 ChatRWKV 模型学习与实战

    • Raven 模型:适合直接聊天,适合 +i 指令。有很多种语言的版本,看清楚用哪个。适合聊天、完成任务、写代码。可以作为任务去写文稿、大纲、故事、诗歌等等,但文笔不如 testNovel 系列模型。

    • Novel-ChnEng 模型:中英文小说模型,可以用 +gen 生成世界设定(如果会写 prompt,可以控制下文剧情和人物),可以写科幻奇幻。不适合聊天,不适合 +i 指令。

    • Novel-Chn 模型:纯中文网文模型,只能用 +gen 续写网文(不能生成世界设定等等),但是写网文写得更好(也更小白文,适合写男频女频)。不适合聊天,不适合 +i 指令。

    • Novel-ChnEng-ChnPro 模型:将 Novel-ChnEng 在高质量作品微调(名著,科幻,奇幻,古典,翻译,等等)。

    • 目前 RWKV 有大量模型,对应各种场景,各种语言,请选择合适的模型:

    • github: https://github.com/BlinkDL/ChatRWKV

    • 模型文件:https://huggingface.co/BlinkDL


第九重 ChatGPT

  • 《ChatGPT Prompt Engineering for Developers》 学习 之 如何 编写 Prompt?

    • 第一个方面:编写清晰、具体的指令

    • 第二个方面:给模型些时间思考

    • 吴恩达老师与OpenAI合作推出《ChatGPT Prompt Engineering for Developers》

    • 动机:吴恩达老师与OpenAI合作推出《ChatGPT Prompt Engineering for Developers》课程

    • 介绍:如何编写 Prompt:

  • 《ChatGPT Prompt Engineering for Developers》 学习 之 如何 优化 Prompt?

    • 吴恩达老师与OpenAI合作推出《ChatGPT Prompt Engineering for Developers》

    • 动机:吴恩达老师与OpenAI合作推出《ChatGPT Prompt Engineering for Developers》课程

    • 介绍:优化编写好 Prompt

  • 《ChatGPT Prompt Engineering for Developers》 学习 之 如何使用 Prompt 处理 NLP特定任务?

    • 吴恩达老师与OpenAI合作推出《ChatGPT Prompt Engineering for Developers》

    • 动机:吴恩达老师与OpenAI合作推出《ChatGPT Prompt Engineering for Developers》课程

    • 介绍:如何构建ChatGPT Prompt以处理文本摘要、推断和转换(翻译、纠错、风格转换、格式转换等)这些常见的NLP任务


第九层 LLMs to interview

  • LLMs 降龙十八掌

    • 为什么 LLMs 不容易出现 灾难性遗忘问题?

    • LLMs to NLP 下游任务 经验贴

    • 训练数据如何构建?

    • 如何 融入 之前对话信息

    • 如果只跑一个私有大模型,但是很多用户同时访问。这些针对不同用户的chat history怎么存取比较高效?

    • chatglm微调完针对相同的问题输出都是一样的,有办法让他随机一点吗?

    • 使用fastllm加速推理

    • 如何解决大模型遗忘问题#ChatGPT# #LLM (大型语言模型)

    • Fine-Tuning max_length 选择 问题

    • Fine-Tuning Learning rate 选择 问题

    • 如何 向GPT/LLM模型添加额外知识?

    • 如何解决LLM大模型fine-tune过拟合问题?

    • 英文模型需要做词表扩充吗?

    • 全参finetune,数据配比?

    • 百川13b强化学习时遇到参数不更新的问题?

    • 使用lion优化器节省显存?

    • 使用lora训练的参数配置?

    • ...

    • LLMs Fine-Tuning 经验贴

    • LLMs 推理 经验贴

    • LLMs 部署 经验贴

    • LLMs 多轮对话 经验贴

    • 数据构建篇

    • LLMs 胡思乱想

  • 【LLMs】大模型 千面郎君

    • 大模型【LLMs】提示工程 是什么?

    • 提示工程 如何添加进 大模型【LLMs】?

    • 微调(FineTuning) vs 提示工程?

    • 微调(FineTuning) vs 提示工程 在应用场景中关系雨联系?

    • 大模型【LLMs】Few-shot提示方法 是什么?

    • 大模型【LLMs】中有一种 涌现现象,你知道么?

    • 大模型【LLMs】涌现现象主要体现在哪些方面?

    • 大模型【LLMs】涌现现象主激活方式?

    • 大模型【LLMs】思维链问题?

    • 大模型【LLMs】思维链本质是什么?

    • 大模型【LLMs】思维链优点是什么?

    • 大模型【LLMs】思维链类型和策略?

    • 大模型【LLMs】逐步Zero-shot 介绍?

    • 大模型【LLMs】Zero-shot-CoT提示策略定义?

    • 大模型【LLMs】Zero-shot-CoT提示策略应用方法?

    • 大模型【LLMs】Few-shot-CoT提示策略定义?

    • 大模型【LLMs】Few-shot-CoT提示策略核心思想是什么?

    • 大模型【LLMs】Few-shot-CoT提示策略应用方法是什么?

    • 大模型【LLMs】泛化问题?

    • 大模型【LLMs】微调问题?

    • 大模型【LLMs】微调有哪些优点?

    • 大模型【LLMs】指令微调问题?

    • 简单介绍强化学习?

    • 简单介绍一下 RLHF?

    • 简单 介绍一下 大模型【LLMs】?

    • 大模型【LLMs】后面跟的 175B、60B、540B等 指什么?

    • 大模型【LLMs】具有什么优点?

    • 大模型【LLMs】具有什么缺点?

    • 大模型常识面

    • 大模型强化学习面

    • 大模型【LLMs】微调篇

    • 大模型【LLMs】思维链篇

    • 大模型【LLMs】涌现现象篇

    • 大模型【LLMs】提示工程篇

  • 大模型的重复生成现象如何缓解?

    • 为何会出现重复生成现象?

    • 如何减少大模型重复生成?

  • LoRA这种微调方法和全参数比起来有什么劣势吗?

    • 什么是 LoRA?

    • LoRA 优点是什么?

    • LoRA 缺点是什么?

    • LoRA这种微调方法和全参数比起来有什么劣势吗?

    • LoRA这种微调方法和全参数 如何选择?

  • LLaMa-1 从原理到实践分析

    • LLaMa-1 理论介绍

    • LLaMa 模型架构介绍

    • LLaMa 优化器介绍

    • LLaMa-1 实践介绍

  • LLaMa-2 从原理到实践分析

    • LLaMa-2 理论介绍

    • LLaMa-2 实践介绍

  • 基于PyTorch来优化大模型训练的内存(显存)

    • 为什么需要 使用梯度累积创建微批次(Using Gradient Accumulation to Create Microbatches)?

    • 什么是 使用梯度累积创建微批次(Using Gradient Accumulation to Create Microbatches)?

    • ...

    • 为什么需要 降低训练批处理大小(Reducing the Batchsize)?

    • 什么是 降低训练批处理大小(Reducing the Batchsize)?

    • ...

    • 为什么需要 低精度训练(Lower-Precision Training)?

    • 什么是 低精度训练(Lower-Precision Training)?

    • ...

    • 为什么需要 混合精度训练(Mixed-Precision Training)?

    • 什么是 混合精度训练(Mixed-Precision Training)?

    • 混合精度训练(Mixed-Precision Training)实现步骤?

    • ...

    • LLMs Fine-Tuning 框架依赖问题?

    • LLMs Fine-Tuning 显存问题?

    • 如何解决大模型遗忘问题#ChatGPT# #LLM (大型语言模型)?

    • ...

    • 动机:峰值内存(显存)的消耗直接决定了 机器 是否 支撑大模型训练

    • LLMs Fine-Tuning 经验贴

    • 混合精度训练(Mixed-Precision Training)

    • 低精度训练(Lower-Precision Training)

    • 降低训练批处理大小(Reducing the Batchsize)

    • 使用梯度累积创建微批次(Using Gradient Accumulation to Create Microbatches)

  • 如何缓解大模型幻觉?

    • 为什么 会 出现 大模型幻觉?

    • 如何 缓解 大模型幻觉?


第八层 LLMs to Inference acceleration

  • LLM(大语言模型)部署加速方法——PagedAttention

    • 什么是 PagedAttention?

    • PagedAttention 如何存储 连续的key和value?

    • PagedAttention 技术细节?

    • PagedAttention 如何 实现安全共享?

    • PagedAttention 源码介绍?

  • LLM(大语言模型)部署加速方法——Faster Transformer

    • 为什么需要 Faster Transformer?

    • 什么是 FasterTransformer?

    • FasterTransformer 核心?

    • FasterTransformer 优化?

  • 纯Python超轻量高性能LLM推理框架 —— LightLLM

    • TGI由于显存碎片化严重,所以很难达到较高的吞吐量;

    • vLLM因引入了PageAttention,但是由于整体实现细节更利于小模型推理,所以在大模型上的并发性能并不是十分理想(使用的默认配置);

    • 相比之下,LightLLM则可以在各种大小的模型下都保持稳健的性能,在大模型上(LLaMA-65B)相对TGI和vLLM实现了3倍左右的2提升。

    • 显存碎片化严重

    • 请求调度效率低

    • kernel定制化难度高

    • 为什么 需要 LightLLM ?

    • 介绍:基于纯Python语言的大模型推理部署框架LightLLM,方便研究员进行轻量级的本地部署和定制修改,用于快速扩展对不同模型的支持,吸纳层出不穷的优秀开源特性,探索最优服务架构。

    • LightLLM 性能表现

  • 大模型推理加速工具 —— vLLM

    • 最先进的服务吞吐量;

    • PagedAttention 可以有效的管理注意力的键和值;

    • 动态批处理请求;

    • 优化好的 CUDA 内核;

    • 介绍:vLLM是一个开源的LLM推理和服务引擎。它利用了全新的注意力算法「PagedAttention」,有效地管理注意力键和值。

    • vLLM 具有哪些特点 ?


第二层 LLMs to Parameter Efficient Fine-Tuning (PEFT)


第一重 分布式训练神器

  • 分布式训练神器 之 ZeRO 学习

    • 动机:虽然 DataParallel (DP) 因为简单易实现,所以目前应用相比于其他两种 广泛,但是 由于 DataParallel (DP) 需要 每张卡都存储一个模型,导致 显存大小 成为 制约模型规模 的 主要因素。

    • 核心思路:去除数据并行中的冗余参数,使每张卡只存储一部分模型状态,从而减少显存占用。

  • 图解分布式训练(一) —— 流水线并行(Pipeline Parallelism)

    • 回顾ChatGPT的发展历程,我们可以总结出大语言模型(LLM)取得惊艳效果的要点(重要性从高到低排序):

    • 愿意烧钱,且接受“烧钱 != 好模型”的现实

    • 高质量的训练语料

    • 高效的分布式训练框架充沛优质的硬件资源

    • 算法的迭代创新

    • 动机:

    • 介绍:在大模型训练这个系列里,我们将一起探索学习几种经典的分布式并行范式,包括流水线并行(Pipeline Parallelism)数据并行(Data Parallelism)张量并行(Tensor Parallesim)

  • 图解分布式训练(二) —— nn.DataParallel

    • 计算如何协同?因为每个GPU都需要计算模型参数的梯度并将其发送给其他GPU,因此需要使用同步机制来保证计算正确性。一般有两种同步方式:

    • 数据同步:在每个GPU上计算模型参数的梯度,然后将梯度发送到其他GPU上进行汇总,最终更新模型参数。

    • 模型同步:在每个GPU上计算模型参数的梯度,然后将模型参数广播到其他GPU上进行汇总,最终更新模型参数。

    • 多GPU并行训练的原理就是将模型参数和数据分布到多个GPU上,同时利用多个GPU计算加速训练过程。具体实现需要考虑以下两个问题:

    • 数据如何划分?因为模型需要处理的数据通常很大,将所有数据放入单个GPU内存中可能会导致内存不足,因此我们需要将数据划分到多个GPU上。

    • 动机:

    • 介绍:

  • 图解分布式训练(三) —— nn.parallel.DistributedDataParallel

    • **数据如何划分?**因为模型需要处理的数据通常很大,将所有数据放入单个GPU内存中可能会导致内存不足,因此我们需要将数据划分到多个GPU上。一般有两种划分方式:

    • **计算如何协同?**因为每个GPU都需要计算模型参数的梯度并将其发送给其他GPU,因此需要使用同步机制来保证计算正确性。一般有两种同步方式:

    • DP 只支持 单机多卡场景,在 多机多卡 场景 下,DP 的 通讯问题将被放大:

    • 数据并行:将数据分割成多个小批次,每个GPU处理其中的一个小批次,然后将梯度汇总后更新模型参数。

    • 模型并行:将模型分解成多个部分,每个GPU处理其中一个部分,并将处理结果传递给其他GPU以获得最终结果。

    • 数据同步:在每个GPU上计算模型参数的梯度,然后将梯度发送到其他GPU上进行汇总,最终更新模型参数。

    • 模型同步:在每个GPU上计算模型参数的梯度,然后将模型参数广播到其他GPU上进行汇总,最终更新模型参数。

    • DDP首先要解决的就是通讯问题:将Server上的通讯压力均衡转到各个Worker上。实现这一点后,可以进一步去Server,留Worker。

    • 动机:

    • 介绍:上节讲到 DP 只支持 单机多卡场景,主要原因是 DP 无法数据并行中通讯负载不均的问题, 而 DDP 能够解决 该问题 的 核心在于 Ring-AllReduce。它由百度最先提出,非常有效地解决了数据并行中通讯负载不均的问题,使得DDP得以实现。

  • 图解分布式训练(四) —— torch.multiprocessing 详细解析

    • 介绍:torch.multiprocessing是本机multiprocessing模块的封装。封装了multiprocessing模块。它注册自定义的reducer,它使用共享内存为不同进程中的相同数据提供视图共享。一旦张量/存储被移动到shared_memory(参见sharememory()),就可以将其发送到其他进程而不进行其它任何操作。

  • 图解分布式训练(五) —— AMP混合精度训练 详细解析

    • 动机:PyTorch 1.6版本今天发布了,带来的最大更新就是自动混合精度。

    • 介绍:在某些上下文中torch.FloatTensor有优势,在某些上下文中torch.HalfTensor有优势呗。答案进一步可以转化为,相比于之前的默认的torch.FloatTensor,torch.HalfTensor有时具有优势,有时劣势不可忽视。

  • 图解分布式训练(六) —— Pytorch的 DeepSpeed 详细解析

    • 最常见的深度学习框架应该是TensorFlow、Pytorch、Keras,但是这些框架在面向大规模模型的时候都不是很方便。

    • 比如Pytorch的分布式并行计算框架(Distributed Data Parallel,简称DDP),它也仅仅是能将数据并行,放到各个GPU的模型上进行训练。

    • 也就是说,DDP的应用场景在你的模型大小大于显卡显存大小时,它就很难继续使用了,除非你自己再将模型参数拆散分散到各个GPU上。

    • 动机:

    • 介绍:在分布式计算环境中,需要理解几个非常基础的概念:节点编号、全局进程编号、局部进程编号、全局总进程数和主节点。其中,主节点负责协调所有其他节点和进程的工作,因此是整个系统的关键部分。

  • 图解分布式训练(七) —— accelerate 分布式训练 详细解析

    • 介绍:PyTorch Accelerate 是一个 PyTorch 的加速工具包,旨在简化 PyTorch 训练和推断的开发过程,并提高性能。它是由 Hugging Face、NVIDIA、AWS 和 Microsoft 等公司联合开发的,是一个开源项目。


第二重 LLMs Trick

  • LLMs Trick


第三重 LLMTune

  • 【LLMs 入门实战 —— 十六 】 LLMTune 模型学习与实战

    • 动机:大语言模型虽然能力很强,目前开源生态也很丰富,但是在特定领域微调大模型依然需要大规格的显卡。例如,清华大学发布的ChatGLM-6B,参数规模60亿,在没有量化的情况下微调需要14GB显存(parameter-efficient fine-tuning,PEFT)。在没有任何优化的前提下,每10亿参数的全精度(32bit)模型载入到显存中就需要4GB,而int8量化后也需要1GB显存。而目前开源最强的模型LLaMA,其最高参数维650亿规模,全精度模型载入就需要260GB,显然已经超出了大部分人的硬件水平。更不要说对模型进行微调(微调需要训练更新参数,推理只需要前向计算即可,因此,微调需要更多的显存才能支持)。

    • 介绍:Cornell Tech开源的LLMTune就是为了降低大模型微调难度所提出的一种解决方案。对于650亿参数的LLaMA模型微调仅需要40GB显存即可。

    • github 地址: https://github.com/kuleshov-group/llmtune


第四重 QLoRA

  • 【LLMs 入门实战 —— 二十 】 QLoRA 模型学习与实战

    • 特点:

    • (a)4位NormalFloat(NF4),这是一种对于正态分布权重来说在信息论上是最优的数据类型;

    • (b)双量化,通过量化量化常数来减少平均内存占用;

    • (c)分页优化器,用于管理内存峰值。

    • 在Vicuna基准测试中表现优于所有先前公开发布的模型,达到ChatGPT性能水平的99.3%,仅需要单个GPU上的24小时微调时间;

    • QLORA引入了一些创新来节省内存而不牺牲性能:

    • https://huggingface.co/BlinkDL

    • artidoro/qlora

    • 模型:timdettmers (Tim Dettmers)

    • 量化代码:TimDettmers/bitsandbytes

    • BLOG : Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRA

    • Demo环境:Guanaco Playground Tgi - a Hugging Face Space by uwnlp

    • 介绍:5月24日华盛顿大学的研究者发布了QLoRA技术及用其生成的Guanaco大模型。

  • 【LLMs 入门实战 —— 二十七 】【QLoRA实战】使用单卡高效微调bloom-7b1

    • https://huggingface.co/BlinkDL

    • artidoro/qlora

    • 模型:timdettmers (Tim Dettmers)

    • 量化代码:TimDettmers/bitsandbytes

    • BLOG : Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRA

  • 【LLMs 入门实战 】Anima 学习与实战

    • Github 代码:https://github.com/lyogavin/Anima

    • 模型:https://huggingface.co/lyogavin/Anima33B

    • 动机:之前大部分开源可finetune的模型大都是比较小的模型7B或者13B,虽然可以在一些简单的chatbot评测集上,通过finetune训练有不错的表现。但是由于这些模型规模还是有限,LLM核心的reasoning的能力还是相对比较弱。这就是为什么很多这种小规模的模型在实际应用的场景表现像是个玩具。chatbot评测集比较简单,真正比较考验模型能力的复杂逻辑推理及数学问题上小模型和大模型差距还是很明显的。

    • 介绍:QLoRA的优化方法,第一次让33B规模的模型可以比较民主化的,比较低成本的finetune训练,让33B模型的普及使用成为了可能。我们认为33B模型既可以发挥大规模模型的比较强的推理能力,又可以针对私有业务领域数据进行灵活的finetune训练提升对于LLM的控制力。


点击原文查看【所有内容】


浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报