提升LLM效果时最具挑战性的问题和值得研究的方向
DayNightStudy
共 3292字,需浏览 7分钟
·
2024-04-11 20:59
提升LLM效果时最具挑战性的问题和值得研究的方向
作者:swtheking
原文地址:https://zhuanlan.zhihu.com/p/682824684
AGI的本质还是期待能获得一个无所不能的大语言模型,在这一年里我也是在这个领域探索和成长。在真实的环境中发现持续提升大模型的效果并不是一件很简单的事情,其中有很多关键的挑战和值得持续研究的方向,在此给大家分享一下。
Pretraining部分
Data Collection
整个pretrain阶段最重要的部分就是数据收集,尽管OpenAI已经给我们了一套标准化的数据收集流程并也有很多开源机构给予了预训练数据(例如common crawl,starcoder等网络数据),但是
-
如何持续获取最新的互联网数据来更新模型的预训练知识,这是一个值得研究的重要问题。 -
模型如何针对新的互联网数据,主动发现和判断哪些数据是已经掌握的,哪些数据是新的知识,并进行自动地持续学习,这也是一个衍生出来的可能方向。 -
模型依据新获取的知识,如何更新相关一系列问题的答案,这也是一个比较有挑战的问题,举个例子,美国总统现在是谁,这个问题就是一直动态变化的,而2024年的答案也许和2018年的答案是冲突的,那么怎么依据2024年的新数据更新这个问题答案,也是一个non trivial的问题。 -
丰富的高质量数据获取是也是预训练阶段数据收集的一个重要研究方向。在Deepseek-math论文中,他们通过反复对common crawl数据进行清洗,提取丰富的高质量预训练数据,大大提升了其7B模型在math类bench mark的效果。这个实验也说明了,对于一个尺寸偏小的模型(7B以下)丰富的高质量的预训练数据是非常重要的,因为更小的模型容噪能力是偏低的,那么一个更加干净且丰富的数据集就显得尤为重要。
Data Organization
整个预训练数据收集完毕后,如何组织成为结构化的预训练数据供给模型训练是现阶段很多科研机构研究的方向。
-
如何通过数据的依赖关系组织预训练数据可以最大限度地让模型学习到存储在预训练数据的知识,这是现阶段大家最关注的方向。其中构造更长依赖的文本数据似乎是现阶段的一个突破口,更长的文本依赖可以激活模型更丰富的attention模式,以及可以激活模型更强的reasoning的能力。例如,In context pretraining文章通过将相关的文本构建在一起,来提升模型的reasoning能力,还有Deepseek Coder也将多个code文件组合在一起成为repo-level的code文本,以获得模型更强的code能力。 -
如何组织高质量文本进入预训练阶段,最大化发挥这些高质量数据也是数据组织的一个比较重要的方向。比如minicpm公司在预训练的第二阶段,也就是lr退火阶段加入了高质量的数据(包括sft数据,高质量code数据等),在benchmark上获取了非常大的提升。但是否该仅在退火阶段加入高质量数据,以及高质量数据的比例如何和低质量数据进行混合也是比较值得研究的方向之一。 -
数据组织的组织格式的一些小的技巧。尽管这个问题听上去很trivial,是一些工程上的事情,但从实际提升效果的角度,也许这是尤其重要的环节。比如训练code里的python代码,选四个空格还是TAB作为你的缩进token,比如数学中的公式应该是用latex表示还是其它形式。这些选择里一定有更利于模型学习的形式,而且很可能某个trick对小模型的智能提升会有很大作用。期待有一篇可以和李牧老师的imagenet training trick媲美的论文揭露这些trick。
Synthetic Data Generation
合成数据的生成现在是一个业界和学界重点关注的问题,这个方向其实和知识蒸馏,知识编辑以及数据飞轮都有一定关系。
-
如何通过合成数据的方式蒸馏一个大模型的知识(比如GPT4),是现阶段大家比较关注的点。由于很多著名机构会在预训练数据阶段购买很多高价值的数据,在对齐阶段引入大量人工标注,使得包括GPT4在内的很多模型的能力很强。但是对于没有这么多资源的公司或者开源机构,如何通过明文的方式蒸馏GPT4的能力,补充自己的大模型能力,这是一个非常重要的方向。现在大量的工作都是利用sft阶段来引入GPT4的能力,比如metamath,wizardcoder等工作。但是我认为这个问题可能比想象得困难,因为对于不同预训练数据的底座模型,蒸馏的困难程度会非常高,你需要从对齐后的模型去想办法还原出pretrain模型在某一方面的能力。(比如你很难在对齐后的模型还原模型在长文本上的续写能力)。 -
如何通过合成数据的方式蒸馏一个大模型的知识进入一个小模型,这也是个很有趣的问题。这个问题和8的区别可能在于模型的预训练数据是否一致。对于预训练数据一致的模型,其实这种明文蒸馏也许效率和效果上可能可以媲美soft的方式的蒸馏,类似于GPT4(3.5)-turbo应该都是采取了这种方式蒸馏。当然在蒸馏过程中,如何选择合适的prompt,来作为传输手段把大模型的所有知识蒸馏到小模型上,这是一个比较重要的点。 -
如何通过纯合成数据进行预训练,对齐来获得某个子方向的专精模型,这是一个最近很多公司在做的任务。微软的phi系列在这个方向上做的比较深入,他们模型从pretrain到sft,甚至是rm都是合成数据做出来的。但是这样的做法的短板也很明显,模型对于prompt的鲁棒性比较低。
Scaling Law & 超参数选择
听说当年Open-AI就是靠着Scaling-Law来说服投资者相信AGI的,尽管Open-AI的论文以及后续一系列论文已经把这个方向探索得比较清楚,但Scaling law这个方向仍然有一些值得探索的地方。
-
每个子方向(code,math,通用等)的loss收敛和benchmark预测都是符合一套公式么?在star-coder-v2中,他们在小模型上训练了接近4million token数得到最好的benchmark效果,这个数字远超了Chinchilla给予的最佳训练量,这个也说明了不同类型的数据的超参数选择也许是不一样的,不同方向也许存在specific得scaling law。 -
loss曲线的变化和超参数选择以及优化器的选择的关系。比如面壁智能在自己的分享中介绍了training loss会在lr退火阶段迅速下降,并设计了新的变化lr机制,方便进行post-pretrain。
在这部分我主要介绍了pretraining相关业界比较关心的能提升模型效果的问题和可能的方向。希望大家有任何想法和有趣的问题也可以提出来分享。
致谢
-
提升LLM效果时最具挑战性的问题和值得研究的方向 https://zhuanlan.zhihu.com/p/682824684
评论