选择你的道路:LLM 时代指南

2023-08-31 11:59 469 阅读 ID:1384
机器学习算法与自然语言处理
机器学习算法与自然语言处理

年初 ChatGPT 刚开始火的时候,最开心和最伤心的都莫过于 NLP 人,开心的是,等这么多年,NLP 领域的大杀器终于来了;伤心的是,之前做的东西还有价值吗,感觉都要没价值了,而且大模型时代看上去高昂的入场券,很令人绝望。

上半年还能看到不少文章谈类似感受,比如《Choose Your Weapon: Survival Strategies for Depressed AI Academics》,《A PhD Student’s Perspective on Research in NLP in the Era of Very Large Language Models》,都给了在 LLM 时代研究的建议。

那么现在都到下半年了,真实情况又如何呢。

中间层消亡史 Missing Middle

中间层首先包括各种中间任务,年初大家悲观也因为,感觉中间任务都没做的价值了,ChatGPT 模型直接端到端搞定,效果还很好。

很多中间任务本身是为了服务下游高级任务,被拆解出来的,结果 ChatGPT 直接解决高级任务,中间任务自然也就不需要了。过去那一套,POS、句法树、依存都不用做了,现在都没看太多人提了,甚至乔姆斯基体系最近又被喷了。

中间层还不光是中间任务,还包括 LLM 中间训练部分的,比如模型结构、损失函数、优化器啊。

有段时间,各种魔改 Transformer、优化器、损失函数。但到现在常用模型结构和 Attention Is All Your Need 中也没差太多,小改了LN、activation,而优化器则主要就修复了 Adam 实现的 bug,成了 AdamW. 结构方面出于推理效率考量的用一用 MQA 和 GQA

提出这么多改进为什么都不用呢,论文不也展示了优越性吗?

因为实际发现效果并不理想,特别论文都在小参数量下做的实验,一旦 Scaling 到大参数量很多结论就不 work 了,反而原始 Transformer 本身的 Scaling 性就很好,经典款最好用。

那怎么不去做大参数量实验呢,当然是成本太高了。一定要证明的话就会变成,民那我这有一个很好的 idea,现在就差某人资助几千张 H100 帮我验证一下。前阵看到 Scaling TransNormer to 175 Billion Parameters 时,想不会真有人在完全新结构上训了个 175B 吧,找来论文一看才发现原来就验证了下吞吐,也在等某位慈善家资助卡。

最近论文 No Train No Gain 也发现,很多数据、模型结构、优化器参数的改进,声称提高了效率效果,但对齐好所有条件一对比发现并没声称那么好,该用的算力还得用,该过的数据还得过,所以是 No Train No Gain。还是经典款最香。

既然中间层消亡了,那该往哪里去呢?开头提到两篇论文都指出了路线。

比如 Choose Your Weapon 大概分出这几个派:

  • 躺平派:别卷了,拿了终身教职的话,直接躺吧,低影响力地方发发就行
  • 加入大力神教:圣火昭昭,圣光耀耀,凡我弟子,越大越好。Scaling 这么强,砸锅卖铁也要跟进,搞算力,从大公司搞算力
  • 分析派:砸锅卖铁都搞不到算力,那搞搞分析总行吧,不吃肉就求大佬们赏口汤喝
  • 反潮流派:做别人不做的,大公司做不了的,反潮流做小模型啥的
  • 玩火派:做大公司出于法律各种考量不敢做的,游走法律边缘,反正横竖一条命,出事也不怕

而让我来分的话,会分三条,简曰:”上下求索“:

  • 向下走:去搞基模型预训练、部署、或者去做大模型基建;
  • 向上走:去做对齐工作,做 Agents,做应用;
  • 艰难之路:去搞大模型理论研究,可解释性,短期基本看不到回报,但这块成果对前两个都会有帮助。

这里划分充其量笔者个人意见,而且这些方向也都有交叉地方,还没列出的也有,比如 Evaluation,觉得还没很明显的方法论

向下:Capability & Deployment & Infrastructure

Capability

Capability 可理解为如何训练出性能足够强大的基模型。关注点包括:

  • 数据:怎么获得更好数据,比如做好数据清洗、数据配比、数据训练次序等;
  • Tokenizer:针对手上的数据设计出更好的 Tokenizer
  • 训练:预训练过程中的吞吐、效率、稳定性等等
  • 其他:怎么获得长文能力,加入新知识,适配到某个域

整体来说就是怎么又好又快又便宜地获得一个性能强大的基座模型。Capability 方向,适合有算力资源同学进入,最大门槛就是 GPU 算力了。我算一直这方向,之前经常自嘲学的屠龙之术,小地方还养不起。

这个方向也会偏向底层工程,比如大规模数据处理,分布式训练,精度问题。最早有这体验是复现 GPT3 时,在 V100 卡上要用 DeepSpeed 才能训,之前都FP16混合精度 + 数据并行直接跑,没想到用 DeepSpeed 各种麻烦,要配置环境,训练细节分析,调很多底层参数,那段时间和算力平台侧和 NV 同学开始有密切交流,才体会到训大模型已经不是单纯中间层改改的事了,得往底层走。

举个例子 GLM 130B 模型整篇论文很大篇幅都因为硬件问题,只能用 FP16,所以用各种技巧来稳定训练。

Deployment

Deployment 可理解为怎么给获得的模型部署和高效用起来。拿到了一个大模型,不管是预训练的、SFT的,或 RLHF 的,给模型部署成服务,同时高效地满足使用者的请求。关注点有:

  • 降低推理参数量:大模型慢主要因为每生成一个 token 都要过所有参数,可以想办法降低模型参数量,比如剪枝或蒸馏,剪枝实际应用较少。还有稀疏模型,比如 GPT4 中用到的 MoE
  • 降低实际计算量:全精度参数计算量大,可以通过降低精度来减少推理计算量,用低精度推理,或量化
  • Memory 相关技巧:因为 Memory Wall,可通过减少内存访问来提速,也可以通过降低内存增大 batch 提效,像 Flash Attention,MQA 都算此类技巧。Paged Attention 也是对 Memory 操作的技巧,借鉴了操作系统的知识
  • 解码技巧:比如 Speculative Decoding 这样,从解码算法侧来提高效率

Deployment 这块,因为不涉及到训练用的庞大算力,进入门槛不是很高,同时应用广。所以 LLaMA 一开源就有很多人开始优化部署,直接笔记本上就能跑,速度也不慢。要加入的话,之前做中间层的可以用对结构和推理过程的理解来进行部署推理优化,当然因为很多速度制约在底层硬件工程相关,所以工程的也比较好进入,CS 基础架构知识扎实的同学也可以进入,很多以前的方案可以借鉴过来。

Infrastructure

Infrastructure,大模型基建。怎么给训练同学提供好用的软件硬件训练框架。会直接对接上硬件层。主要关注点就是:

  • 软件层面:支持训练框架,能承接大模型需要的各种分布式训练算法,不断跟进前沿相关算法
  • 硬件层面:内存、计算、网络交互相关优化,提高硬件利用率。和供应商沟通了解更多底层配置,一起解决问题
  • 管理和测试:这么多卡怎么管理好,还有做各种测试,测软件框架,测硬件性能

这块也比较吃资源,只在小集群上做过管理和支持,和在超大集群上做过完全不同。这块前沿论文会少些,也都英伟达、微软、谷歌这样有大量卡的狗大户能搞。适合进入的人首先就是工程运维相关同学,算法同学也可以先从软件层面切入。

向上:Alignment & Agents & Applications

说向上,是因为这部分建立在已经有一个模型基础上,而且可能还得是个足够强大的模型。

Alignment

Alignment 这块是有一个强大的基模型,怎么让其对齐人类的意图和价值观。这块往大了说很大,可以简单看我之前解释 Superalignment 这篇。关注点:

  • 首先当然 SFT 和 RLHF(Constitutional AI):大家耳熟能详的 Alignment
  • Scalable Oversight:当模型强大到一定程度,搞 agent 来辅助提供人类信号
  • 还有测试模型的哪里会出现 misalignment,刻意对抗攻击,然后如何避免产生

本身做算法的挺适合进入,涉及到训练。之前做安全,对抗性攻击相关也可以进入。想做 Agent 的也可以从 Scalable Oversight 介入,不过感觉国内现在这块整体还没受到太大重视。

Agents

Agents 最近炒得比较火,因为 Lilian 的博文,当然还有一些 agent 库 AutoGPT  和 GPTenterprise 的出现,最近 Generative Agents 也开源了。不过我觉得这块火是因为,门槛并没那么高,没训练门槛,更多是怎么调 Prompt,以及对整个 Agent 系统的设计。这块关注点:

  • Prompt Engineering:是这块的基础,怎么指挥好 GPT,开源的几个库都是模仿范本
  • Agent 系统架构能力:Agent 系统架构和设计能力,怎么设计不同 part,怎么组合交互起来
  • 外部能力接入:用其他工具来组成更好系统,所以 retrieval based 和 tool 都可以放这块

这块之前中间层可以直接进入,也看到一些做不了预训练相关做 Agent 的,做 Prompt Engineering 的也很好进入。同时这块对非 CS 领域进入也还是比较友好,因为 Agent 的构建需要的代码能力并不会太高,而还会涉及到一些其他领域知识。

Application

LLM 在各个领域的应用。各种领域,各种应用方式,甚至可以像之前做心理学研究的,直接用 LLM 来做测试。这块感觉主要关注点是:

  • 领域知识:本身对各个领域的理解和洞见,认识到什么环节可以需要 LLM
  • LLM:然后才是对 LLM 各部分功能的了解,是否能填进上面的环节
  • 包含领域洞见的 Prompt:这块是看了 Ethan Mollick 昨天推文意识到的,总结相关 prompt,然后分享给大家

这块是本身在某些领域就有一定积累,再了解一些 LLM 知识就能试着开始做了;而如果是本身只做算法的,想用于某个领域,需要先深入理解领域知识,然后再给 LLM 流程结合进去。

艰难之路:Theory & interpretability

感觉比较难的两条路,关系挺密切的,还都是需要长时间投入才能出成果。

Theory

Theory 基于底层理论数学推导,获得一套理论公式后,接着去指导实际实验。可以一开始基于简单条件,再加入更多的条件,比如一开始基于 MLP+SGD 分析,之后推广到 Transformer + Adam.

现在这块比较有名的是 xAI 联合创始人 Greg Yang 的 Tensor Program,前两天还出了篇相关系列 Tensor Programs IVb: Adaptive Optimization in the ∞-Width Limit,啃得非常艰难,感觉智商受到了暴击。Tensor Program 已经搞差不多四年多了。

这块适合本身搞理论研究,如数学物理领域,基础扎实的同学吧。没这些基础,太难了,理论门槛较高,想挑战的同学可以参考 Greg 的书单。  

Interpretability

Interpretability 自然是希望解释大模型的行为,从而达到可控性,才能真正放心应用在某些领域。

模型过大导致难以解释,解释其中某个神经元,或小部分神经元,如盲人摸象,只是获得局部了解,对整体还是一头雾水。

解释性有段时间挺火,但回过头看很多没带来太大帮助,有些甚至还起到了误导作用。

这块感觉大模型解释做得比较好还是 OpenAI 和 Anthropic,一个通过用 LLM Agent 来辅助解释,一个通过 Circuits 理论来解释。

这块进入,做算法能直接进入,但因为拿不到模型解释不了最好的模型,但也能在开源的模型上做吧,但感觉 OpenAI 和 Anthropic 的都不太好 follow。

免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
反馈
to-top--btn