【转载】大语言模型微调与数据集观察

原文地址:LLM Tuning & Dataset Perspectives, by Sebastian Raschka, on 2023-06-3

大语言模型微调与数据集观察

近几个月来,我们看到众多个人与企业纷纷开源各类大语言模型(LLM)与数据集,这一趋势令人欣喜。
但从研究视角来看,这更像是一场“争先发布”的竞赛(这一点可以理解),而非严谨的系统性分析。
而本月,我们终于看到了几项深入探究LLM训练原理的研究,我很期待在本期通讯中介绍其中部分项目。

尽管几个关键问题终于得到了解答:

  • 对齐大语言模型是否必须采用基于人类反馈的强化学习?
  • 在ChatGPT模仿数据上训练的大语言模型性能究竟如何?
  • 大语言模型训练是否应该采用多轮次训练?
  • ……

但正如我们即将看到的,仍有大量问题悬而未决。因此,如果你正在寻找有价值的研究方向,这些论文或许也能带来一些启发。

注:如果本期通讯显示内容被截断,是因为部分邮件服务商可能会对长邮件进行裁剪。你可以访问以下链接阅读全文:https://magazine.sebastianraschka.com

文章与行业动态

在深入介绍近期几项有趣的研究项目之前,我想再次强调LLaMA的重要意义。https://github.com/facebookresearch/llama 一再证明了自己是LLM研究领域具有里程碑意义的试验平台,凸显了开源模型对学术研究的重要价值。作为一名不隶属于任何大型科技公司的研究者,我认为:尽管与微软/OpenAI、谷歌相比,Meta的声量常常被低估,但它对AI研究社区的贡献极具影响力。截至目前,LLaMA或许是2023年最具影响力的LLM模型。

针对业务需求微调任务专属大语言模型

我们来详细了解一下Goat模型——这是一个基于7B参数LLaMA微调得到的模型,在算术任务上的表现超过了GPT-4,相关研究发表在最新论文 https://arxiv.org/abs/2305.14201 中。

首先值得注意的是,在零样本场景下,7B参数的Goat模型性能超过了参数规模约为其75倍的540B参数PaLM模型以及GPT-4——正如论文标题所宣称的那样。

figure01
Goat模型在算术问题上表现优于GPT-4。资料来源:https://arxiv.org/abs/2305.14201

它为何如此出色?Goat是一款专用的微调LLM,针对特定任务进行了专项训练。通常来说,任务专属的微调模型性能会优于GPT-4这类通用对话机器人,这是不言而喻的。但我收到了很多从业者与企业的咨询,询问是否可以用GPT-4处理所有任务。在我看来,正如这篇论文所印证的,经过良好微调的模型始终会具备性能优势。(当然,这不是第一个也不是唯一一个针对特定任务微调的LLM,类似的模型数不胜数。例如FLAN,https://arxiv.org/abs/2109.01652,可能是应用最广泛的模型之一。)

Goat模型成功的两大核心要素是:

  1. 基于优质基础LLM(此处为LLaMA),针对目标任务进行有监督微调(区别于通用预训练或指令微调);
  2. LLaMA的数字分词机制(将每个数字拆分为独立的token)。

我们如何知道这两点的结合至关重要?第一点显而易见:7B参数的LLaMA基础模型本身性能显然不如GPT-4,因此微调是使其超越GPT-4的必要条件。

但在这个案例中,仅靠微调还不够。研究人员指出,在相同数据上微调的OPT、GPT-J、GPT-NeoX和Pythia模型,表现都远不及Goat。研究人员认为,LLaMA特有的分词方案是Goat取得成功的关键因素。我认为分词是一个非常有意思却常被忽略的研究点,期待未来能看到更多关于该方向的消融实验与对比研究。

这些算术任务与业务需求有何关联?

但我们也必须直面一个核心问题:既然我们有Wolfram Alpha或者普通计算器这类功能更强、更可靠的工具,为什么还要用LLM来处理简单的算术任务?

算术任务是很好的试验平台,因为很容易生成带有真实标签的合成训练集,并且生成的回复也易于评估(相比其他自由文本生成任务)。

从“山羊”到“大猩猩”

另一个近期通过微调提升LLM特定能力的案例是 https://arxiv.org/abs/2305.15334 项目。

Gorilla是一款专门针对生成API调用进行微调的LLM(这一点GPT-4或许可以做得更好)。研究人员以LLaMA-7B为基础模型,在来自Torch Hub、TensorFlow Hub和HuggingFace的1645条API调用数据上进行了微调。经过微调的Gorilla在API调用任务上的表现优于其他未经过专项微调的LLM。

figure02
标注图出自 https://arxiv.org/abs/2305.15334

提升微调效率

上文中介绍的Goat模型采用了 https://arxiv.org/abs/2106.09685 中的方法进行微调,以提升参数效率,使得仅用单张24GB显存的GPU即可完成7B参数LLaMA模型的微调。(注:如果你想使用LoRA微调LLaMA,我们在开源仓库 https://github.com/Lightning-AI/lit-llama 中实现了该方法。)

那么,能否在单张GPU上训练65B(而非7B)参数的LLaMA模型?与LoRA相关,一种名为QLoRA(量化低秩适配的缩写)的新方法于近日发布,正好可以实现这一点。

QLoRA(量化低秩适配)是参数高效型LLM微调领域的最新成果。它降低了65B LLaMA模型的显存需求,使其能够适配单张48GB显存的GPU(例如A100)。最终得到的65B参数Guanaco模型通过4位量化训练,保持了完整16位微调的任务性能,仅经过24小时微调,就达到了ChatGPT性能的99.3%。

figure03
标注图出自 https://arxiv.org/abs/2305.14314

微调大语言模型到底需要多少数据?

对于想要微调LLM的从业者和研究者来说,获取充足的数据是另一大挑战。

近期的 https://arxiv.org/abs/2305.11206 项目,对于想要开发高性能LLM的研究者和技术爱好者来说,可能具有颠覆性意义。

在LIMA论文中,研究人员证明:仅用1000个样本对65B LLaMA模型进行有监督微调,其性能与ChatGPT / GPT-3.5这类更大的模型差距并不大。我们来详细分析一下!

研究人员发现,在57%的场景下GPT-4表现更优,但在43%的场景中,LIMA的表现与GPT-4相当甚至更优,这一结果相当亮眼。或者换个角度看,约有一半的情况下,LIMA的表现优于GPT-4的前身ChatGPT/GPT-3.5(也称为DaVinci003)。

figure04
标注图出自 https://arxiv.org/abs/2305.11206

但一个有意思的问题是:为什么LIMA的表现能大幅领先Alpaca?两者都是经过有监督微调的LLaMA模型。

首先,LIMA基于65B参数的LLaMA模型,而原始Alpaca模型基于7B参数的LLaMA基础模型。为了让对比更公平,作者使用65B基础模型复现了Alpaca的训练过程,按照原始Alpaca项目的设置,在52000个样本上进行训练。

因此我们可以得出结论:两者的性能差异本质上来源于训练集的质量——作者为LIMA精心构建了数据集,它的表现超过了在52倍数据量上训练的同规格65B LLaMA基础模型(即Alpaca)。

这是一篇非常有价值的论文。但我认为还缺少一项基准与消融研究:如果用RLHF而非有监督学习对65B LLaMA基础模型进行微调,LIMA的表现与之相比如何?

figure05
LIMA论文的更多标注图,来源:https://arxiv.org/abs/2305.11206

理性看待LLaMA类模型

尽管上文提到的LIMA论文成果喜人且令人振奋,但在此背景下,有一篇论文值得一提:https://arxiv.org/abs/2305.15717

近几个月来,基于其他LLM(例如ChatGPT)生成的数据来微调LLM已经成为普遍做法。而在这项近期研究中,研究人员发现众包工作人员对这类所谓的“模仿模型”评价很高。但事实证明,这些模仿模型往往只是复刻了其训练数据来源的上游LLM的语言风格,而非事实准确性。

figure06
标注图出自 https://arxiv.org/abs/2305.15717

需要说明的是,LIMA论文并未使用模仿数据,而是采用了精心构建的数据集。但值得强调的是,评估方法有时可能会出现“好得不真实”的情况,因此我们亟需更多、更优质的基准测试。

基于人类反馈的强化学习的新替代方案

不久前,我们讨论过使用基于人类反馈的强化学习(RLHF)对齐大语言模型——例如ChatGPT就是采用这种方式训练的。如果你想了解更多解释与参考资料,还可以查看:
https://magazine.sebastianraschka.com/p/ahead-of-ai-6-train-differently

而近几个月,有监督微调成为了LLM微调的主流方式(比如上文提到的LIMA论文也采用了有监督微调)。

如今,https://arxiv.org/abs/2305.18290 提出了另一种替代基于人类反馈的强化学习(以及其中用于指令微调模型的近端策略优化PPO算法)的新方法。研究人员表明,RLHF中拟合奖励模型的交叉熵损失可以直接用于微调LLM。根据他们的基准测试,使用直接偏好优化(DPO)效率更高,并且在回复质量方面通常也优于RLHF/PPO。

figure07
标注图出自 https://arxiv.org/abs/2305.18290

我个人也很期待看到它在数据集效率方面与RLHF的对比,这会是一个很有意思的未来研究方向。

多轮预训练能否提升大语言模型基础模型的性能?

到目前为止,我们只讨论了微调。所有微调模型都依赖于预训练好的基础模型。因此,我们自然会问:如何才能打造更好的基础模型?

我经常自问的一个问题是:如果对大语言模型进行多轮次训练会怎样?(这里的“轮次”指完整遍历一遍训练数据集。)经典机器学习模型、深度神经网络,以及最新的视觉Transformer通常都会训练数百轮,那么通常只训练1轮的大语言模型,如果也采用多轮训练会发生什么?

这个问题终于在最新论文 https://arxiv.org/abs/2305.13230 中得到了解答。

但首先,考虑到数据量极其庞大,我们为什么要考虑对LLM进行多轮训练?事实证明,互联网上的高质量文本数据的增长速度跟不上需求。此外,如果未来受版权保护的内容被移除,数据集规模可能会进一步缩小。那么,为什么不对现有数据进行多轮训练呢?

研究结果是:多轮训练会导致过拟合。

figure08
标注图出自 https://arxiv.org/abs/2305.13230。注:该实验使用T5模型进行,以让多轮训练的计算具备可行性。

另一个有意思的结论是:随机失活(Dropout)有助于缓解过拟合(这并不意外),但根据作者的研究,权重衰减等其他技术则没有效果。顺带一提:LLaMA、Gopher、Chinchilla、GPT-3和PaLM等主流大模型都没有使用随机失活,因为它会减慢训练速度。

三个待解的开放问题

  1. 如果只重复使用像上文提到的LIMA那样的高质量数据,会怎么样?这是个很有意思的想法;直觉上这似乎合理,或许会有帮助。但坏消息是,效果可能并不明显。研究人员用维基百科数据(相对于C4数据集)做了相关实验,他们认为维基百科属于高质量数据(我也认同这一点)。但结果显示,重复使用维基百科数据进行多轮训练时,模型性能同样出现了类似的下降。
  2. 数据增强是否有帮助?目前已有多种文本增强方法,这是另一个值得未来研究的好问题。顺便说一句,这些技术包括回译、同义词替换、句子打乱,以及使用合成数据(例如由GPT-4生成),我在 https://leanpub.com/machine-learning-q-and-ai/ 中对此进行过总结。
  3. 最后,如果是微调(而非预训练)场景,情况会如何?同样的规律是否适用?(根据我的经验,进行少量轮次的微调,比如3-5轮,是有价值的,但我希望未来能看到针对这一点的严谨研究。)

更高效的视觉Transformer

这部分内容已经很长了,但计算机视觉领域也有一些有意思的进展,我想在下面简要分享。

EfficientViT:具备级联分组注意力的内存高效视觉Transformer(https://arxiv.org/abs/2305.07027,2023年5月11日)

EfficientViT是一种新型视觉Transformer,在速度与精度之间实现了极佳的平衡。它的性能超过了MobileNetV3、MobileViT等其他高效架构,同时速度大幅提升。研究人员通过级联分组注意力实现了这一点:通过向每个注意力头输入完整特征的不同分组(类似于分组卷积),减少了多头自注意力层中的冗余。

figure09
标注图出自 https://arxiv.org/abs/2305.07027

重塑视觉Transformer:计算最优模型设计的缩放定律(https://arxiv.org/abs/2305.13035,2023年5月22日)

此前的研究主要关注参数数量层面的最优数据集规模与模型规模。而在这项研究中,研究人员提出了推断计算最优模型形态(例如宽度与深度)的方法。最终得到的视觉Transformer,性能超过了两倍参数量的同类模型。此外,尽管这种计算最优的小模型使用相同的计算资源预算训练,但推理成本还不到大模型的一半。

figure10
标注图出自 https://arxiv.org/abs/2305.16317

用于序数回归的深度神经网络

最后,我想分享一篇我自己的论文,它于本周刚刚被接收:https://arxiv.org/abs/2111.08851

这篇论文提出了一种新的损失函数,可以将任意神经网络分类器(卷积网络、循环神经网络或Transformer)改造为处理序数数据的模型。什么是序数数据?例如亚马逊的星级评分,或者具有有序类别的疾病分级:无 < 轻微 < 中度 < 严重。

figure11
用于秩一致序数回归的深度神经网络,来源:https://arxiv.org/abs/2111.08851

当然,相关代码参见:https://github.com/Raschka-research-group/coral-pytorch/blob/main/docs/tutorials/pytorch_lightning/distilbert-corn-tripadvisor.ipynb

三句话以内的研究亮点

和往常一样,这个月我还接触到了很多其他有意思的论文。当然,在这篇已经很长的通讯里,我无法全部分享。所以和上次一样,下周我会单独整理一份更多研究亮点的清单。在此期间,如果你感兴趣,可以查看上一期的清单:
https://magazine.sebastianraschka.com/p/ai-research-highlights-in-3-sentences

人工智能风险与监管

讨论最新的AI风险与监管动态是绕不开的话题。当前的争论集中在几个热点议题上:AI是否存在生存性风险?AI是否会造成其他类型的伤害,是否应该被监管?应该如何监管AI以降低风险与伤害?在尊重版权数据的前提下,使用互联网数据训练AI应用的边界在哪里?

多位AI研究者与专家参与了AI风险相关的辩论。一些最顶尖、最有成就的AI研究者,比如杨立昆(Yann LeCun)、赵京炫(Kyunghyun Cho)以及Andrew Ng,对AI相关的担忧持否定态度:
https://venturebeat.com/ai/titans-of-ai-industry-andrew-ng-and-yann-lecun-oppose-call-for-pause-on-powerful-ai-systems/
https://venturebeat.com/ai/top-ai-researcher-dismisses-ai-extinction-fears-challenges-hero-scientist-narrative/

与此同时,另一些顶尖研究者,包括杰弗里·辛顿(Geoffrey Hinton)和约书亚·本吉奥(Yoshua Bengio),则表达了担忧:
https://apnews.com/article/ai-danger-superintelligent-chatgpt-hinton-google-6e4992e7a87d5bcae787ad45545757db
https://yoshuabengio.org/2023/05/22/how-rogue-ais-may-arise/

此外,https://www.axios.com/2023/05/17/ai-leaders-sam-altman-regulate-senate 报道了山姆·奥特曼在美国参议院听证会上的发言。而作为对欧盟监管计划的回应,https://www.theverge.com/2023/5/25/23737116/openai-ai-regulation-eu-ai-act-cease-operating 称OpenAI可能停止在欧盟运营(有夸张版本的评论称,奥特曼的表态是因为 https://www.reuters.com/technology/openai-may-leave-eu-if-regulations-bite-ceo-2023-05-24/ 。)

最后,https://technomancers.ai/japan-goes-all-in-copyright-doesnt-apply-to-ai-training/#more-642 指出,日本将不会对AI训练所用数据强制执行版权限制。

本月引语

“监管我们的力度要大到让其他人难以竞争。”
—— https://twitter.com/mmbronstein/status/1661654737488322560?s=20,OpenAI首席执行官山姆·奥特曼在出席 https://www.judiciary.senate.gov/committee-activity/hearings/oversight-of-ai-rules-for-artificial-intelligence 听证会之后的发言。

深度学习基础课程:提升训练性能与后续方向

我的 https://lightning.ai/pages/courses/deep-learning-fundamentals/ 课程的最后两个单元终于全部上线了!

例如,在这两个单元中,你将学习如何使用混合精度训练、分布式多GPU训练范式、模型编译等方法,更快地训练PyTorch模型。

figure12
第9单元截图,来源:https://lightning.ai/pages/courses/deep-learning-fundamentals/9.0-overview-techniques-for-speeding-up-model-training/

我开设这门课程的目标,是用开源库提供一套现代化的深度学习与AI学习路径。此外,我力求内容简洁,同时又超出大学课程的常规主题范围。

对我而言同样重要的是,课程纳入了很多在实践中极具价值的重要主题:学习率调度器、混合精度训练、分布式多GPU训练策略等等!

如果你一直在跟着学习,希望你享受这段从反向传播到用PyTorch实现计算机视觉模型与大语言模型的学习之旅!

制作这门课程付出了很多努力,但也充满乐趣!如果你喜欢这门课并从中有所收获,我会非常开心!欢迎在GitHub的 https://github.com/Lightning-AI/dl-fundamentals 仓库中提出任何问题。如果你能将它分享给你的同事,我会万分感激。

开源亮点

GPT4All —— 一款免费、本地运行、注重隐私的对话机器人

https://gpt4all.io/index.html 是一款可以在本地电脑上运行的类ChatGPT对话工具——无需GPU,也无需联网。根据 https://github.com/nomic-ai/gpt4all 中分享的技术报告,该模型是一个7B参数的LLaMA模型,通过低秩适配(LoRA)技术,在约100万条由GPT-3.5-Turbo OpenAI API生成的提示-回复对上微调得到。

对大多数用户来说,GPT4All程序本身可能是最大的亮点,但我也很欣赏下方详细的性能基准表,它整理了当前最主流的指令微调LLM,非常实用。

figure13
资料来源:GPT4All性能基准表,出自https://gpt4all.io/index.html

Falcon 40-B —— 一款引发许可争议的新型大语言模型

技术创新研究院(TII)开发并发布了 https://huggingface.co/tiiuae/falcon-40b ,根据 https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard 的排名,它的性能超过了StableLM、LLaMA和MPT。

起初,Falcon 40-B的许可证颇具争议:它要求用户向Falcon开发者披露财务信息,并且当收入超过100万美元时,需分享10%的收益。这一许可证在社交媒体上引发了激烈讨论,因此开发者改变了立场,最终在一周后将许可证更改为常规的Apache 2.0开源许可证。

在我看来,开发者要求自己的辛勤工作获得回报是完全合理的。但我认为,引发激烈讨论的原因在于它当初被贴上了“开源”的标签。

此外,该许可证过于复杂,而且要求向Falcon开发者披露财务信息,对大多数企业和用户来说都是无法接受的。在我看来,固定的一次性费用或者订阅费会是更友好的使用方式。当然,最终以Apache 2.0协议开源该模型就更好了,这绝对是个好消息!

注:Falcon-40B现在也已在 https://github.com/Lightning-AI/lit-parrot 中得到支持(lit-parrot是 https://github.com/Lightning-AI/lit-llama 仓库的姊妹仓库,用于支持非LLaMA架构的大语言模型。)

figure14
在128个样本上测试的Int-4量化Falcon模型,数据来源:https://huggingface.co/tiiuae/falcon-40bhttps://github.com/Lightning-AI/lit-parrot

支持上千种语言的新型语音转文字模型

你们中有些人可能知道,我很喜欢 https://github.com/openai/whisper 模型,我所有教学视频的字幕都是用它生成的。

现在Meta AI推出了一款替代方案,名为 https://github.com/facebookresearch/fairseq/tree/main/examples/mms 。令人惊叹的是,MMS支持约1100种语言(相比之下,OpenAI的Whisper模型支持99种)。根据 https://arxiv.org/abs/2305.13516 中的基准测试,在MMS与Whisper共同覆盖的54种语言的FLEURS基准测试中,MMS模型的表现全部优于Whisper。该模型采用宽松的CC-BY-NC 4.0许可证发布,项目地址:https://github.com/facebookresearch/fairseq/tree/main/examples/mms

figure15
MMS模型使用示例,来源:https://github.com/facebookresearch/fairseq/tree/main/examples/mms

Watermark 2.4现已支持GPU信息显示

https://github.com/rasbt/watermark 是我开发多年的一个小型开源库。我(以及很多其他人)在开发和分享Python脚本、Jupyter笔记本时,用它来打印计算环境与包版本信息,以保证可复现性。简而言之,最新的2.4版本新增了--gpu参数,可以显示GPU硬件信息。你可以通过以下命令安装或升级到最新版本:

pip install watermark --upgrade

figure16
Watermark 2.4的–gpu参数效果,来源:https://github.com/rasbt/watermark

这本通讯是我的个人兴趣项目,不提供直接报酬。不过,如果你愿意支持我,可以考虑购买一本 https://sebastianraschka.com/books 中的书籍。如果你觉得它们有深度、有帮助,也欢迎推荐给你的朋友和同事。

figure17
https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 http://mng.bz/M96o

你的支持对我意义重大!非常感谢!

Leave a Reply

Your email address will not be published. Required fields are marked *

*