十一前洛阳自驾游记
趁着十一前的假期,去神都洛阳逛逛。作为一个河南人,河南的景点却基本没怎么去过,这种感觉有点类似住的最近的人常常会迟到一样。
没有太多规划,原计划是龙门石窟、白马寺和少林寺,不过后来因为一直下雨和略感疲倦,逛完白马寺直接回家。自驾往返共400公里整,大部分是高速,剩下几十公里国道。
趁着十一前的假期,去神都洛阳逛逛。作为一个河南人,河南的景点却基本没怎么去过,这种感觉有点类似住的最近的人常常会迟到一样。
没有太多规划,原计划是龙门石窟、白马寺和少林寺,不过后来因为一直下雨和略感疲倦,逛完白马寺直接回家。自驾往返共400公里整,大部分是高速,剩下几十公里国道。
LIMA是五月份的一篇网红文,发表后引起了广泛的讨论。它用极致简约的SFT方案训练了一个不错的模型,希望证实表面对齐假设 (Superficial Alignment Hypothesis):
大模型中几乎所有知识都是在预训练中学习的,指令微调只是一个很简单的过程,让模型学到与用户交互的形式。
为证明上述假设,作者们推测仅需要少量的指令微调数据(1000条)就可以教会模型产生高质量输出。此外,1000条SFT数据就达到了很好的指令微调效果,也说明了高质量数据对于模型的重要性,这一点与 Textbooks Are All You Need 有异曲同工之妙。
手动上弦的问题并未解决,保养后不久,问题更加严重,仅能上弦约10圈(走时约10小时),便开始不断打滑,同时发出“咔咔”的异响。如小心继续上弦,发条会突然弹松,直接停表。针对此问题搜了许多国内外论坛,都没找到合适的解决方案,此处记录以飨后人。
前后花了约一个月,买了一根发条,两个发条盒总成件,捏断两根发条内钩,最终购买一套立轮和离合轮(合轮)彻底解决问题。
先买了一根新发条,换上之后问题依然存在。
由于出现突然弹松的现象,怀疑发条轴与发条内钩打滑所致,感觉是上链时二者一直打滑,出现“咔咔”的异响。打开看了看发条轴,似乎有一些磨损(它的凸起不太明显,不是非常有经验的老师傅不太容易看出是否磨损),干脆买了一个新的原装发条盒。换上之后问题依旧。
之前写过 # Nucleus Sampling与文本生成中的不同解码策略比较,不过文中缺乏图例,对于解码过程解释不够清晰,本文作为2.0版加以补充。
对于文本生成任务,语言模型如何做到对同一个输入生成不同的输出?问题的关键在于解码策略。无论是自编码模型还是自回归模型,都是在解码阶段的每个时间步逐个生成最终文本。所谓解码,就是按照某种策略从候选词表中选择合适的词输出。除了对于模型本身的改进,不同解码策略也对文本生成质量起到重要作用。
大模型可以仅凭指令或几个示例就能解决各种新任务,但在一些看似简单的算术或搜索任务上却表现欠佳。俗话说得好,人和动物的区别就是人可以更好地使用工具。于是,Meta
AI提出了Toolformer
,让LLM善假于物
,通过自学使用外部工具。
Toolformer
可以决定调用什么API、何时调用它们、传递什么参数及如何将API返回值融合。Toolformer
以自监督方式训练,每个API仅需要几个示例。它在各种下游任务中显著提升了零样本性能,而不牺牲其核心语言模型能力。
# Toolformer: Language Models Can Teach Themselves to Use Tools
MSR使用“教科书”级的高质量数据训练了仅 1.3B
的面向代码任务的phi-1
模型,在 HumanEval 和 MBPP
上取得了很高的准确率。
根据模型扩展法则,为提升模型性能,需要从增大算量和模型规模入手。这里则另辟蹊径:从数据质量出发。之前的研究证实:提升数据质量会大幅改变扩展法则趋势,能让小模型达到大模型的效果。本文则在此结论上更进一步,打破了已有的模型扩展法则,证明高质量的数据甚至可以在使用更少的数据和算量条件下超越大模型的SOTA。
具体来说,用约 7B token 训练8轮,然后在少于 200M
token的数据上微调得到 1.3B 的模型 phi-1
。
开源的通用能力大模型越来越多,但真正有用和落地的是在某个领域专精的垂类模型。初看上去,似乎大模型仅需要少量prompt工作就可以很好地在垂类工作,可事实并非如此。不进行领域微调的通用模型可以很快地构建80分的应用,可是大部分的实用场景,需要95甚至98分的模型效果。这也是为什么在各个领域(如金融、车载、虚拟人)大家都在训练或微调自己大模型的原因。
微调这件事看上去不难,但却有很多未解问题:
上面的每个问题都有很多种不同的方案,但限于时间和成本,逐一实验是不可行的,AB测试也会带来额外的成本。所以有趣的事情出现了,各个玩家对自己训练时的细节都讳莫如深,自己训练的时候也都遇到过各种各样奇怪的坑。更有意思的是,即使别人提供了一些细节参考,自己在训练时未必能够复现 :-( 。
代码库:# Lawyer LLaMA
Lawyer LLaMA
技术报告:# Lawyer LLaMA Technical
Report
思维链采用逐步推理的方式得到最终结果,如果模型在某一步出现幻想 (Hallucination),则差之毫厘,谬以千里,后面的错误会被放大,导致错误结果。
OpenAI最近提出使用过程监督 (Process Supervision) 减少大模型幻想并提升大模型的数学推理能力,所以什么是过程监督?
过程监督 (Process Supervision) 是相对于之前的结果监督 (Outcome Supervison) 而言。众所周知,大模型基于人工反馈的强化学习部分需要用到奖励模型 (Reward Model, RM),数学推理能力是基于思维链 (Chain of Thought)。传统的奖励模型采用的是结果监督的方式,仅使用思维链的最终结果进行判别与反馈,而过程监督则是对思维链的每步推理都进行反馈。因此,过程监督是针对思维链和奖励模型的一种改进方案。
OpenAI开源了过程监督的数据集 PRM800K。论文的核心思想很直观,主要关注在实验设计。
OpenAI 博客:# Improving mathematical reasoning with process supervision
$ pip install torch==1.12.0
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement torch==1.12.0 (from versions: 1.0.0, 1.0.1, 1.0.1.post2, 1.1.0, 1.2.0, 1.3.0, 1.3.1, 1.4.0, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.8.1, 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.10.2)
ERROR: No matching distribution found for torch==1.12.0
The root cause is that python version is too low (3.6
).
We need to upgrade python to a new version.