赞
踩
前言:最近 LLM 大火,相关领域熟人都想往这个方向靠,好几个朋友咨询了这块,也有帮做模拟面试。最近有个哥们让我推荐对这个领域整体快速了解的资料。于是我就花了些时间整理资料,希望可以俯瞰当前 LLM 领域,能够给个整体的印象,如若对某个细分板块感兴趣,读者也可以找更深入的资料。
本文假设读者有一定相关领域的知识,至少是机器学习,深度学习,或者数据科学的经验。
公众号回复 llm,获取 pdf 资料包,各个资料链接可以点看原文看知乎的文章(没出来就在审核)。
首先 Andrej 的 State of GPT 是必看的:对整个 LLM 的全景讲的很清晰,不亏是我辈 CS231n 的好老师,高屋建瓴。
https://www.youtube.com/watch?v=bZQun8Y4L2A
W&B 关于 LLM 的 Tutorial 干货不少:Current Best Practices for Training LLMs from Scratch
https://uploads-ssl.webflow.com/5ac6b7f2924c656f2b13a88c/6435aabdc0a041194b243eef_Current%20Best%20Practices%20for%20Training%20LLMs%20from%20Scratch%20-%20Final.pdf
两篇比较好的综述:
An Overview on Language Models: Recent Developments and Outlook:偏训练技巧
http://arxiv.org/abs/2303.05759
Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond:偏应用
http://arxiv.org/abs/2304.13712
GPT4 Technical Report:GPT4技术报告
https://cdn.openai.com/papers/gpt-4.pdf
Spark of AGI[视频]:对 GPT4 的详细测评
http://arxiv.org/abs/2303.12712
https://www.youtube.com/watch?v=qbIk7-JPB2c
PALM2 Technical Report:PALM2技术报告
https://ai.google/static/documents/palm2techreport.pdf
大概看看现在最好能做到什么程度,虽然细节干货少。
接着按不同模块分别推荐些我能想到的比较重要入门论文和资料,精力有限,肯定是挂一漏万,欢迎指正完善。
预训练可先看一些经典基座模型训练流程:
GPT3 论文:语言模型是少样本学习器(https://arxiv.org/abs/2005.14165)
LLAMA:经历各种检验最靠谱英文模型,很多训练细节值得参考(https://arxiv.org/abs/2302.13971)
BloombergGPT:虽是金融领域模型,但各种思想都类似,很踏实,在训练模型领域有很好借鉴作用(https://blog.eleuther.ai/transformer-math/)
Transformer Math 101:很干的一篇关于训练中各种计算的博客,扎实(https://blog.eleuther.ai/transformer-math/)
[可选] 谷歌系的:PaLM(https://arxiv.org/abs/2204.02311),Flan-PaLM(https://arxiv.org/pdf/2210.11416.pdf):一个预训练,一个指令微调,大公司还是挺多insight可学习
[可选] BLOOM(https://arxiv.org/abs/2211.05100),BLOOMZ(https://arxiv.org/pdf/2211.01786.pdf):可以大概看看,比较糙,特别是和大公司几篇对比
W&B 关于预训练数据处理较全面博客:Processing Data for Large Language Models
https://wandb.ai/wandb_gen/llm-data-processing/reports/Processing-Data-for-Large-Language-Models--VmlldzozMDg4MTM2#de-duplication
实际数据集参考,会有各种细节:
ROOTS:BigScience 开源数据集(https://arxiv.org/abs/2303.03915)
The RefinedWeb Dataset:最近模型 Falcon 的数据集(http://arxiv.org/abs/2306.01116)
[可选] RedPajama:号称复刻 LLAMA,没有报告,更多都在源代码里面,可以简单看看有时间看代码(https://www.together.xyz/blog/redpajama)
[可选] The Stack:代码领域的数据集,感兴趣也值得一看(http://arxiv.org/abs/2211.15533)
近期一些关于数据推荐论文:
Scaling Data-Constrained Language Models
http://arxiv.org/abs/2305.16264
A Pretrainer's Guide to Training Data: Measuring the Effects of Data Age, Domain Coverage, Quality, & Toxicity
http://arxiv.org/abs/2305.13169
Megatron-DeepSpeed:现在基本都基于这套框架训,有必要浏览下原论文(https://arxiv.org/pdf/2201.11990.pdf)
DeepSpeed 相关:ZeRO(https://arxiv.org/abs/1910.02054)优化器必看,可能看视频(https://youtu.be/zqsOEzKZX2Y?t=1698)会更好理解些
混合精度及其他相关训练技巧:
Performance and Scalability:How To Fit a Bigger Model and Train It Faster Hugging face相关博客
https://huggingface.co/docs/transformers/v4.15.0/performance
更多关于混合精度的讨论,Nvidia 相关文档(https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#mptrain),看2和3就行,关于 BF16 的讨论(结论能上BF16就上)https://www.reddit.com/r/MachineLearning/comments/vndtn8/d_mixed_precision_training_difference_between/
lilian写的关于大规模分布式训练相关的综述:How to Train Really Large Models on Many GPUs?(https://lilianweng.github.io/posts/2021-09-25-train-large/)
Huggingface 的 Tokenizers 的相关 Tutorial:看下面这几节就行
Normalization and pre-tokenization
https://huggingface.co/learn/nlp-course/chapter6/4?fw=pt
Byte-Pair Encoding tokenization
https://huggingface.co/learn/nlp-course/chapter6/5?fw=pt
[感兴趣看] WordPiece tokenization
https://huggingface.co/learn/nlp-course/chapter6/6?fw=pt
[感兴趣看] Unigram tokenization
https://huggingface.co/learn/nlp-course/chapter6/7?fw=pt
Building a tokenizer, block by block
https://huggingface.co/learn/nlp-course/chapter6/8?fw=pt
[可选] SentencePiece 的 Readme,就是另一个训练词表的库
https://github.com/google/sentencepiece
就是搜集到指令数据,然后直接 finetune 训练,难点在于在于怎么收集到较好的SFT数据。
主要可分成下面几种方法:
人工标注写
基于模板
基于开源共享数据
网上相似数据爬取
OpenAI API接口通过 Prompt 工程构建
基于模板:
FLAN 模型:前 ChatGPT 时代,可以看看如何基于模板构建一些传统指令数据,还出了v2(https://arxiv.org/pdf/2109.01652.pdf)
基于 OpenAI API 和开源共享数据(后 ChatGPT 时代):
Exploring the Impact of Instruction Data Scaling on Large Language Models
Towards Better Instruction Following Language Models for Chinese
直接从 ChatGPT 和 GPT4 抓数据来训SFT:Alpaca(https://crfm.stanford.edu/2023/03/13/alpaca.html),Vicuna(https://lmsys.org/blog/2023-03-30-vicuna/),GPT4ALL(https://arxiv.org/pdf/2304.03277.pdf)
中文这块:Belle (https://github.com/LianjiaTech/BELLE/tree/main)的两篇论文也可以简单看看,看怎么构建数据(比如Self-Instruct https://arxiv.org/abs/2212.10560)
基于网络爬取数据及人工标注
LIMA: Less Is More for Alignment:怎么构建一个多样化的SFT数据集
http://arxiv.org/abs/2305.11206
建议给 OpenAI 在这块的努力都刷一遍,会有很清晰了解,各种细节。现在大多引 22 年 InstructGPT,但 OpenAI 这整套流程也都是一步步完善出来的。最早期在 GPT2 就探索用 Human Preference,中间如何尝试、遇到什么问题、以及怎么解决都写得挺清楚,甚至还专门写了怎么培训标注人员,当时 OpenAI 是真的挺 Open:
Fine-Tuning GPT-2 from Human Preference(http://arxiv.org/abs/1909.08593, Blog - https://openai.com/research/fine-tuning-gpt-2):做 SFT 来获得人类偏好,但 SFT 数据都是模型采样后人标出来的
Learning to summarize from human feedback(https://arxiv.org/pdf/2009.01325.pdf, Blog - https://openai.com/research/learning-to-summarize-with-human-feedback):基本这套 SFT、Reward Model、RLHF 流程齐全了,用在 Summarization 任务,只标了 Pair-wise 的数据,而不是后面的 Rank
Summarizing Books with Human Feedback(https://arxiv.org/pdf/2109.10862.pdf,Blog - https://openai.com/blog/summarizing-books/):当摸清楚这套流程之后,OpenAI 开始对 RLHF 增大规模,也开始发现生成这块的评估难,引入模型辅助的评估
WebGPT: Improving the Factual Accuracy of Language Models through Web Browsing(https://arxiv.org/pdf/2112.09332.pdf,Blog -https://openai.com/blog/webgpt/):OpenAI 想用强化来训练模型浏览网络,然后做检索增强
InstructGPT:Training language models to follow instructions with human feedback(https://arxiv.org/abs/2203.02155,Blog - https://openai.com/research/instruction-following#guide):最后才到 InstructGPT,罗马不是一天建成,能看到 OpenAI 在 RLHF 上是积累了很长时间的,到 InstructGPT 可能是 API 用户反馈有类似需求,当时没引起太大反响,直到加入了对话数据,并且给模型放出来给大家用,也就是 ChatGPT.
关于 Search 和 Sample,还有 Topp Topk 讨论:献丑了
https://zhuanlan.zhihu.com/p/80211911
Zero-shot 和 Few-Shot 给 GPT3 那篇看完就差不多懂了,这里列些较经典方法
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models:思维链,开山之作,本质上给LLM模型更多 token 来用来思考,增加结果准确性(https://arxiv.org/pdf/2201.11903.pdf)
Self-Consistency Improves Chain of Thought Reasoning in Language Models:思维链后续,其实就是类似search算法给搜索空间扩大,比如beam从1改成多个,然后最后结果 ensemble 一下(http://arxiv.org/abs/2203.11171)
Tree of Thoughts: Deliberate Problem Solving with Large Language Models:给链扩展成树,进行检索和集成,上面两种都变成树的某个特例(https://arxiv.org/abs/2305.10601)
[可选] ChatGPT Prompt Engineering for Developers:吴教授 DeepLearning AI 关于 ChatGPT prompt 相关(https://learn.deeplearning.ai/chatgpt-building-system/lesson/1/introduction)
Reflexion: Language Agents with Verbal Reinforcement Learning:提出反思系统,模型能对自己之前的结果进行反思,之后再做出修改(http://arxiv.org/abs/2303.11366)
AutoGPT介绍:基于 GPT API 非常酷的应用,通过设计维护几个GPT角色,还有Memory系统,给AutoGPT一个目标和初始任务,就能让它成为一个无情的做任务机器人,完成任务,创造新任务,排好优先级,继续做任务(https://cointelegraph.com/explained/what-is-auto-gpt-and-why-does-it-matter)
[可选] Generative Agents: Interactive Simulacra of Human Behavior:写 AutoGPT 的时候莫名让我想起这篇,虽然是讲用GPT做游戏任务的思考机器,但是本身里面就涉及到大量应用相关的设计(https://arxiv.org/abs/2304.03442)
[可选] Large Language Models as Tool Makers:idea 也很酷,维护几个GPT角色,让一个做工具,一个使用工具解决问题,还有个判断什么时候需要做新工具,也是系统的设计(http://arxiv.org/abs/2305.17126)
有些能力调外部接口会容易很多,包括最新信息获取
Toolformer: Language Models Can Teach Themselves to Use Tools:占坑之作,方法较 naive(http://arxiv.org/abs/2302.04761)
TaskMatrix.AI: Completing Tasks by Connecting Foundation Models with Millions of APIs:给 Tools 理念推到更大的框架(https://arxiv.org/pdf/2303.16434.pdf)
[可选]对这个领域兴趣,还可以看Gorilla(https://arxiv.org/pdf/2305.15334.pdf),HuggingGPT(https://arxiv.org/pdf/2303.17580.pdf)
搜索增强LLM(虽然我认为检索也只是一个工具):REPLUG: Retrieval-Augmented Black-Box Language Models(https://arxiv.org/abs/2301.12652)
CodeX:Evaluating Large Language Models Trained on Code:Code相关必读,现在普遍认为Code对推理能力会有一定提升
http://arxiv.org/abs/2107.03374
因为数学涉及到模型的推理能力,所以一般认为较重要
Training Verifiers to Solve Math Word Problems:让模型解数学题,提出了 Verifier 的思路,就是对多条打分选最高。
https://arxiv.org/pdf/2110.14168.pdf
Building Systems with the ChatGPT API:吴教授关于 OpenAI API应用的课程
https://learn.deeplearning.ai/chatgpt-building-system/lesson/1/introduction
[可选] OpenAI CookBook:OpenAI 官方的 API 使用说明,里面很多特别实用的建议
https://github.com/openai/openai-cookbook
Efficient Training of Language Models to Fill in the Middle:无损 FIM 损失,增加模型中间填充能力
http://arxiv.org/abs/2207.14255
UL2: Unifying Language Learning Paradigms:对T5的损失进行改进,兼容考虑了GPT单向生成损失,PALM2声称用的是它的变种
https://arxiv.org/pdf/2205.05131.pdf
阅读推荐:
5分钟玩转PDF聊天机器人!超简单的Langchain+ChatGPT实现攻略
OpenAI放开ChatGPT微调接口!国内厂商压力山大!|附详细微调操作指南
解锁人工智能项目开发的关键:Python 基础库详解与进阶学习
MM-Vet的多模态评估标准如何评估大型多模态模型(LMM)在复杂任务上的表现
$100亿模型的扩张有望2年内实现通用人工智能—与 Claude 创始人Dario Amodei 访谈录
拥抱未来,学习 AI 技能!关注我,免费领取 AI 学习资源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。