# 热门搜索 #
搜索
Hugging Face:2023开源LLM大爆发,数据竞赛已开启!
9608点击    2023-12-31 14:34


2023年的大语言模型(LLM),让几乎所有人都燃起了热情。


现在大多数人都知道LLM是什么,以及可以做什么。


人们讨论着它的优缺点,畅想着它的未来,


向往着真正的AGI,又有点担忧自己的命运。


围绕开源与闭源的公开辩论也吸引了广泛的受众。


2023年的LLM开源社区都发生了什么?




下面,让我们跟随Hugging Face的研究员Clémentine Fourrier一起,


回顾一下开源LLM这跌宕起伏的一年。


如何训练大语言模型?


LLM的模型架构描述了具体实现和数学形状。模型是所有参数的列表,以及参数如何与输入交互。


目前,大多数高性能的LLM都是Transformer架构的变体。




LLM的训练数据集,包含训练模型所需的所有示例和文档。


大多数情况下是文本数据(自然语言、编程语言、或者其他可表达为文本的结构化数据)。


分词器(tokenizer)定义如何将训练数据集中的文本转换为数字(因为模型本质上是一个数学函数)。


文本被切分成称为tokens的子单元(可以是单词、子单词或字符)。



分词器的词汇量通常在32k到200k之间,而数据集的大小通常以它包含的tokens数量来衡量,当今的数据集可以达到几千亿到几万亿个tokens。


然后,使用超参数定义如何训练模型——每次迭代,参数应该改变多少?模型的更新速度应该有多快?


搞定这些后,剩下的就只需要:大量的算力,以及训练过程中进行监控。


训练的过程包括实例化架构(在硬件上创建矩阵),并使用超参数在训练数据集上运行训练算法。


最终得到的结果是一组模型权重,——大家讨论的大模型就是这个东西。


这组权重可以用来推理,对新的输入预测输出、生成文本等。


上面训练好的LLM也可以在之后通过微调(fine-tuning)来适应特定任务(尤其是对于开源模型)。



微调的过程是在不同的数据集(通常更专业、更小)上对模型进行额外的训练步骤,以针对特定应用程序进行优化。


比起从头开始训练一个大模型,微调的成本显然低得多——这也是开源LLM受到大家欢迎的原因之一。


从规模竞赛到数据竞赛


直到2022年初,机器学习的趋势是模型越大,性能就越好。


而且似乎模型的大小在超过某个阈值之后,能力会得到飞跃——有两个词语用来描述这个现象:emergent abilities和scaling laws 。



2022年发布的预训练开源模型大多遵循这种范式,下面举几个例子。


BLOOM(BigScience Large Open-science Open-access Multilingual Language Model)是BigScience发布的一系列模型,由Hugging Face与法国组织GENCI和IDRIS合作,涉及来自60个国家和250个机构的1000名研究人员。这些模型使用decoder-only transformers,并进行了微小的修改。


系列中最大的模型有176B参数,使用350B的训练数据集,包括46种人类语言和13种编程语言,是迄今为止最大的开源多语言模型。


OPT(Open Pre-trained Transformer)系列模型由Meta发布,遵循GPT-3论文的技巧(特定权重初始化、预归一化),对注意力机制(交替密集和局部带状注意力层)进行了一些更改。



这个系列中最大的模型为175B,在180B的数据上进行训练,数据主要来自书籍、社交、新闻、维基百科和互联网上的其他信息。


OPT的性能与GPT-3相当,使用编码优化来降低计算密集度。


GLM-130B(通用语言模型)由清华大学和Zhipu.AI发布。它使用完整的transformer架构,并进行了一些更改(使用DeepNorm进行层后归一化、旋转嵌入)。


GLM-130B是在400B个中英文互联网数据(The Pile、Wudao Corpora和其他中文语料库)的标记上训练的,它的性能也与GPT-3相当。



此外,还有一些更小或更专业的开源LLM,主要用于研究目的。


比如Meta发布的Galactica系列;EleutherAI发布的GPT-NeoX-20B等。


尽管看起来越大的模型效果越好,但运行起来也越昂贵。


在执行推理时,模型需要加载到内存中,而100B参数的模型通常需要220GB的内存。


在2022年3月,DeepMind发表了一篇论文,研究了在给定计算预算下,用于训练的数据量与模型参数的最佳比率是多少。


换句话说,如果你只有固定的一笔钱可以花在模型训练上,那么模型大小和训练数据量应该是多少?


作者发现,总体而言,应该把更多的资源分配给训练数据。


他们自己的例子是一个叫做Chinchilla的70B模型,使用1.4T的训练数据。


2023的开源LLM


模型爆发


2023年开始,一大波模型涌现出来,每个月、每周、甚至每天都会有新的模型发布:


2月的LLaMA(Meta)、4月的Pythia(Eleuther AI)、MPT(MosaicML)、 5月的X-GEN(Salesforce)和Falcon(TIIUAE)、7月的Llama 2(Meta)、9月的Qwen(阿里巴巴)和Mistral(Mistral.AI),11月的Yi(01-ai),12月的DeciLM(Deci)、Phi-2(微软) 和SOLAR(Upstage)。


在Meta AI的LLaMA系列中,研究人员的目标是训练一组不同大小的模型,能够在给定的预算下具有最佳性能。


他们首次明确提出不仅要考虑训练预算,还要考虑推理成本,从而在更小的模型大小上达到更高的性能(权衡是训练计算效率)。


Llama 1系列中最大的模型是在1.4T数据上训练的65B参数模型,而较小的模型(6 B和13B)是在1T数据上训练的。



小型13B LLaMA模型在大多数基准测试中都优于GPT-3,而最大的LLaMA模型到达了当时的SOTA。不过,LLaMA是以非商业许可发布的,限制了社区的应用。


之后,MosaicML发布了MPT模型,具有允许商业用途的许可证,以及训练组合的细节。第一个MPT模型为7B ,随后是6月份的30B版本,均使用1T英语和代码数据进行训练。


在此之前,模型的训练数据是公开的,不过之后的模型就不再提供任何关于训练的信息,——不过最起码权重是开源的。


无处不在的对话模型


与2022年相比,2023年发布的几乎所有预训练模型都带有预训练版本和对话微调版本。


公众越来越多地使用这些聊天模型,并进行各种评估,还可以通过聊天的方式对模型进行微调。


指令微调(IFT)使用指令数据集,其中包含一组查询的提示和答案。这些数据集教会模型如何遵循指令,可以是人类的,也可以是LLM生成的。


使用LLM输出合成数据集,是完成指令和聊天微调的方法之一,通常被称为distillation ,表示从高性能模型中获取知识,来训练或微调较小的模型。



这两种方法都相对容易实现:只需要查找或生成相关数据集,然后使用与训练时相同的技术微调模型。


来自人类反馈的强化学习 (RLHF) 是一种特定方法,旨在调整模型预测的内容,与人类的喜好保持一致。


根据给定的提示,模型会生成几个可能的答案,人类对这些答案进行排名,排名用于训练所谓的偏好模型,然后使用偏好模型通过强化学习对语言模型进行微调。



这是一种成本高昂的方法,主要用于调整模型以实现安全目标。


人们之后开发了一种成本较低的变体,使用高质量的LLM对模型输出进行排名,称为来自AI反馈的强化学习 (RLAIF)。


直接偏好优化 (DPO) 是RLHF的另一种变体,但不需要训练和使用单独的偏好模型。


DPO利用人类或AI给出的排名数据集,通过查看其原始策略和最佳策略之间的差异,来直接更新模型。


这使得优化过程变得简单很多,同时实现了差不多的最终性能。


社区在做什么?


在2023年初,已经发布了一些用于教学或聊天微调的数据集。


比如在人类偏好方面,OpenAI的WebGPT数据集、Anthropic的HH-RLHF数据集和OpenAI的Summarize。


指令数据集的例子包括BigScience的Public Pool of Prompts、Google的FLAN 1和2、AllenAI的Natural Instructions、Self Instruct(由不同隶属关系的研究人员生成自动指令的框架)、SuperNatural指令(微调数据的专家创建的指令基准)、Unnatural指令等。



今年1月,中国研究人员发布了人类ChatGPT指令语料库 (HC3),包含各种问题的人类与模型答案。


3月,斯坦福大学开放了Alpaca模型,是第一个遵循指令的LLaMA模型 (7B),还包括相关的数据集(使用LLM生成的52K指令)。


LAION(一个非营利性开源实验室)发布了开放指令通才(OIG)数据集,该数据集有43M条指令,既有数据增强创建,也有从其他预先存在的数据源编译而来的指令。


同月,LMSYS组织(加州大学伯克利分校)发布了Vicuna,也是一个LLaMA微调(13B),这次使用的是聊天数据——用户与ChatGPT之间的对话,由用户自己在ShareGPT上公开分享。


4月,BAIR(伯克利人工智能研究实验室)发布了Koala,一个聊天微调的LLaMA模型,使用了之前的几个数据集(Alpaca、HH-RLHF、WebGPT、ShareGPT),


DataBricks发布了Dolly数据集,包含15K手动生成指令。


5月,清华大学发布了UltraChat,一个包含指令的1.5M对话数据集,以及UltraLLaMA,一个对该数据集的微调。


Microsoft随后发布了GPT4-LLM数据集,用于使用GPT4生成指令,


6月,Microsoft研究分享了一种新方法Orca,通过使用大型模型的推理痕迹来构建指令数据集(解释它们的分步推理),


——社区用这种方法创建了Open Orca数据集,有数百万个条目, 并被用于微调许多模型(Llama、Mistral等)。


8月,中国非营利组织OpenBMB发布了UltraLM(LLaMA的高性能聊天微调),


9月,他们发布了相关的偏好数据集UltraFeedback,这是一个由GPT4比较的输入反馈数据集(带有注释)。


另外,清华大学的一个学生团队发布了OpenChat,一个使用新的RL微调策略的LLaMA微调模型。


10月,Hugging Face发布了Zephyr,这是一款在UltraChat和UltraFeedback上使用DPO和AIF的Mistral微调,Lmsys发布了LMSYS-Chat-1M,是与25个LLM的真实用户对话。


11月,NVIDIA发布了HelpSteer,一个对齐微调数据集,根据几个标准提供提示、相关模型响应和所述答案的等级,而Microsoft Research发布了Orca-2模型,是一个在新的合成推理数据集上微调的Llama 2。


开发方式


合并:极致定制


在典型的开源方式中,社区的里程碑之一是模型或数据合并。


模型合并是一种将不同模型的权重融合到单个模型中的方法,以将每个模型的各自优势组合在一个统一的单个模型中。


最简单的方法之一,是对一组共享通用架构的模型的参数进行平均,——不过需要考虑更复杂的参数组合,例如确定哪些参数对给定任务的影响最大(加权平均),或者在合并时考虑模型之间的参数干扰(并列合并)。


这些技术允许任何人轻松生成模型组合,并且由于现在大多数模型都是同一架构的变体,因此变得特别容易。


这就是为什么一些 LLM 排行榜上的模型会有奇怪的名字(比如llama2-zephyr-orca-ultra——表示llama2和zephyr 模型的合并,在orca和ultra数据集上进行了微调) 。


PEFT:指尖的个性化

有时,你可能没有足够的内存加载整个模型,以对其进行微调。但事实上,微调时可以不需要使用整个模型。


采用参数高效微调(PEFT),首先固定住一部分的预训练模型的参数,然后在其上添加许多新参数,称为适配器。


然后,对任务进行微调的只是(轻量级)适配器权重,比原始模型要小得多。


量化:模型无处不在


性能良好的大模型在运行时需要大量的内存,比如一个30B参数的模型可能需要超过66G的RAM才能加载,大多数个人开发者都未必拥有足够的硬件资源。


一个解决方案就是量化,通过改变模型参数的精度来减小模型的大小。




在计算机中,数字以给定的精度(如float32、float16、int8等)存储。


精度既指示数字类型(是浮点数还是整数)又指示数字的存储量:float32将浮点数存储在32位的内存空间中。精度越高,数字占用的物理内存就越多。


因此,如果降低精度,则会减少每个模型参数占用的内存,从而减小模型大小,这也意味着可以减少计算的实际精度。


而这种精度的损失带来的性能下降,实际上非常有限。


从一种精度到另一种精度的方法有很多种,每种方案都有自己的优点和缺点。常用的方法包括bitsandbytes、GPTQ和AWQ。



参考资料:

https://huggingface.co/blog/2023-in-llms



文章来自微信公众号 “ 新智元 ”






关键词: Hugging Face , 模型社区 , LLM
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
AI数据分析

【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。

项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file

本地安装:https://www.deepbi.com/

【开源免费airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。

项目地址:https://github.com/hitsz-ids/airda

2
微调

【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。

项目地址:https://github.com/InternLM/xtuner

3
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0