当前位置:   article > 正文

ChatGPT时代LLM大模型技术入门全攻略!顶会论文与实践干货一网打尽

current best practices for training llms from scratch

前言:最近 LLM 大火,相关领域熟人都想往这个方向靠,好几个朋友咨询了这块,也有帮做模拟面试。最近有个哥们让我推荐对这个领域整体快速了解的资料。于是我就花了些时间整理资料,希望可以俯瞰当前 LLM 领域,能够给个整体的印象,如若对某个细分板块感兴趣,读者也可以找更深入的资料。

本文假设读者有一定相关领域的知识,至少是机器学习,深度学习,或者数据科学的经验。

公众号回复 llm,获取 pdf 资料包,各个资料链接可以点看原文看知乎的文章(没出来就在审核)。

491ef0f8d114d0abb3d45ad16fbf8a93.jpeg

Overview 概观

  • 首先 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/)

Tokenization

  • 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

SFT(Supervised FineTuning)/Instruction Tuning

就是搜集到指令数据,然后直接 finetune 训练,难点在于在于怎么收集到较好的SFT数据。

主要可分成下面几种方法:

  • 人工标注写

  • 基于模板

  • 基于开源共享数据

  • 网上相似数据爬取

  • OpenAI API接口通过 Prompt 工程构建

SFT 模型

  • 基于模板:

    • 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

RLHF 部分

建议给 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

Prompt Engineering

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)

其他

Tools (API 调用)

有些能力调外部接口会容易很多,包括最新信息获取

  • 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)

Code Related

  • CodeX:Evaluating Large Language Models Trained on Code:Code相关必读,现在普遍认为Code对推理能力会有一定提升

    ‍http://arxiv.org/abs/2107.03374

Math Related

因为数学涉及到模型的推理能力,所以一般认为较重要

  • Training Verifiers to Solve Math Word Problems:让模型解数学题,提出了 Verifier 的思路,就是对多条打分选最高。

    ‍https://arxiv.org/pdf/2110.14168.pdf

[可选] GPT API相关应用

  • 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微调接口!国内厂商压力山大!|附详细微调操作指南

中国AI软件出海第一名,竟然是这个团队

AIGC产业梳理

解锁人工智能项目开发的关键:Python 基础库详解与进阶学习

MM-Vet的多模态评估标准如何评估大型多模态模型(LMM)在复杂任务上的表现

$100亿模型的扩张有望2年内实现通用人工智能—与 Claude 创始人Dario Amodei 访谈录

深度解析 Llama 2 的资源汇总:不容错过

拥抱未来,学习 AI 技能!关注我,免费领取 AI 学习资源。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/315732?site
推荐阅读
相关标签
  

闽ICP备14008679号