摘要:

2024-03-26 AIGC-大模型学习路线

大模型学习路线

建议先从主流的Llama开始,然后选用中文的Qwen/Baichuan/ChatGLM,先快速上手体验prompt工程,然后再学习其架构,跑微调脚本

如果要深入学习,建议再按以下步骤,从更基础的GPT和BERT学起,因为底层是相通的,而且实际落地到一个系统中,应该也是大模型结合小模型(大模型在做判别性的任务上,比BERT优势不是特别大)

可以参考如下方案,按需学习。

一、简述

按个人偏好总结了学习目标与路径,后续将陆续整理相应学习资料,并输出学习笔记。

内容将同步更新在我的博客园文章https://www.cnblogs.com/justLittleStar以及Github仓库:DayDreamChaser/LLMLanding: Learning LLM Implementaion and Theory for Practical Landing (github.com)

学习思路: 快速应用Transformer等轮子来微调和使用LLM,同时深入学习NLP预训练模型原理和推理部署(因为偏底层的东西变化不大)

学习目标

熟悉主流LLM(Llama, ChatGLM, Qwen)的技术架构和技术细节;有实际应用RAG、PEFT和SFT的项目经验较强的NLP基础,熟悉BERT、GPT、Transformer、T5等预训练语言模型的实现,有对话系统相关研发经验掌握TensorRT-LLM、vLLM等主流推理加速框架,熟悉模型量化、FlashAttention等推理加速技术方案,对分布式训练DeepSpeed框架有实战经验熟悉Pytorch,具备扎实的深度学习和机器学习基础,基本掌握C/C++、Cuda和计算机系统原理

参考项目

torchkeras

llm-action

参考书籍

大规模语言模型:从理论到实践ChatGPT原理与实战

Alt text

参考课程

面向开发者的LLM入门课程(吴恩达课程-中文版)github.com/datawhalechi普林斯顿-COS 597G (Fall 2022): Understanding Large Language Modelscs.princeton.edu/course斯坦福-CS324 - Large Language Modelsstanford-cs324.github.io

教程

Huggingface Transformers官方课程 huggingface.co/learn/nlTransformers快速入门(快速调包BERT系列)transformers.run/

学习方式

力求快速应用 (先调包,再深入学习)在实践中动手学习,力求搞懂每个关键点【原理学习】+【代码实践】 + 【输出总结】

基础知识

视频课程

吴恩达机器学习入门:coursera.org/learn/mach李沐讲AI:space.bilibili.com/1567台大李宏毅-机器学习: speech.ee.ntu.edu.tw/~h斯坦福NLP cs224n: web.stanford.edu/class/书籍

深度学习入门:基于Python的理论与实践, numpy实现MLP、卷积的训练《深度学习进阶:自然语言处理》:numpy实现Transformers、word2vec、RNN的训练Dive In Deep Learning(动手学深度学习): d2l.ai/《神经网络与深度学习》:nndl.github.io/《机器学习方法》:李航的NLP相关的机器学习 + 深度学习知识(按需选学)强化学习

强化学习教程-蘑菇书EasyRL(李宏毅强化学习+强化学习纲要): datawhalechina.github.io动手学强化学习: github.com/boyu-ai/Hand博客

苏剑林科学空间:信息时代下的文章 - Scientific Spaces

学习纲要

应用:

1、Zero Shot / Few Shot 快速开箱即用

Prompt调优:

上下文学习In-Context Learning, ICL思维链 Chain of Thought, COTRAG (Retrieval Augmented Generation)

基于文档分块、向量索引和LLM生成,如Langchain文档问答

2、领域数据-指令微调LLM

PEFT (Parameter-Efficient Fine-Tuning):

LORA (Low-Rank Adaption of LLMs)QLORASLORAP-Tuning v2

参数高效的微调,适合用于纠正模型输出格式(PEFT上限不高,并向LLM输入的知识有限)

SFT (Supervised Fintuning):

全参数监督微调,使用prompt指令样本全量微调LLM(可以注入新的领域知识)需要控制样本配比(领域数据 + 通用数据)

3、对齐

对齐人类偏好 (RLHF):

RewardModel 奖励模型 (排序标注,判断答案价值)RL (PPO, 更新SFT模型)

专注基于强化学习的大语言模型对齐,有前景的方向是SuperhumanAI AutoALign

4、预训练

小模型预训练 (GPT2, TinyLlama)不考虑训练参数规模较大的语言模型

5、训练推理优化

模型量化推理加速蒸馏推理框架(vLLM、TensorRT-LLM、Llama.cpp)

二、学习目录

第1章 技术与需求分析

1.1 技术分析

LLM的发展历程与趋势开源LLM生态

Llama系列Mistral / Mixtral-8X7B-MOE :mistral.ai/news/mixtralChatGLM / Baichuan / Qwen

1.2 市场需求分析

需求和就业市场分析

预训练、对齐微调、应用推理加速商业落地分析(2C、2B应用场景)

第2章 ChatGPT背景与原理

2.1 ChatGPT的工作原理

预训练与提示学习阶段结果评价与奖励建模阶段强化学习阶段

2.2 算法细节

标注数据建模思路

第3章 预训练语言模型

3.1 Transformer

论文

《Attention Is All Your Need》解析:

图解Transformer:jalammar.github.io/illu详解Transformer原理:cnblogs.com/justLittleS实战

Torch代码详解和训练实战:cnblogs.com/justLittleS

3.2 GPT

GPT论文

GPT-1:Improving Language Understanding by Generative Pre-TrainingGPT-2: Language Models are Unsupervised Multitask LearnersGPT-3:Language Models are Few-Shot LearnersGPT-4:GPT-4 Technical Report(openai.com)解析

GPT2图解:jalammar.github.io/illuGPT2图解(中文):cnblogs.com/zhongzhaoxiGPT3分析:How GPT3 Works - Visualizations and AnimationsGPT原理分析:cnblogs.com/justLittleS推理

GPT2模型源码阅读系列一GPT2LMHeadModel60行代码实现GPT推理(PicoGPT):cnblogs.com/justLittleS动手用C++实现GPT:ToDo, 参考:CPP实现Transformer训练

训练GPT2语言模型:基于Transformers库-Colab预训练GPT2Transformers库GPT实现分析:ToDoMiniGPT项目详解-实现双数加法:blog.csdn.net/wxc971231NanoGPT项目详解

代码分析:zhuanlan.zhihu.com/p/60训练实战:莎士比亚数据训练, ToDoGPT2微调-文本摘要实战

数据预处理模块GPT-2模型模块模型训练和推理模块

3.3 BERT

原理

BERT可视化:A Visual Guide to Using BERT for the First TimeBERT原理:cnblogs.com/justLittleS实战

BERT结构和预训练代码实现:ToDoBERT预训练实战:动手学深度学习-BERT预训练 Colab基于HuggingFace的BERT预训练:BERT微调:

文本分类BERT-CRF NERBERT+指针网络(UIE)信息抽取文本摘要/问答相似性检索: SimCSE-BERT衍生系列

RoBERTa / ALBERT / DistillBERT

3.4 T5系列

T5-Pegasus对话摘要微调PromptClue关键词抽取微调

3.5 UniLM

UniLM模型介绍基于夸夸闲聊数据的UniLM模型实战

第4章 提示学习与大型语言模型

4.1 提示学习PromptLearning

提示学习介绍提示模板设计答案空间映射设计

4.2 上下文学习 ContextLearning

上下文学习介绍预训练阶段提升上下文推理阶段优化上下文

4.3 指令数据构建

手动和自动构建指令开源指令数据集基于提示的文本情感分析实战: github.com/liucongg/Cha

第5章 开源大型语言模型

5.1 Mistral

Mistral 7B Tutorial: datacamp.com/tutorial/mMistral-8X7B-MOE的模型结构Mistral -8X7B-MOE源码解析Mistral-7B微调

5.2 Llama

Llama1

Llama1源码深入解析: zhuanlan.zhihu.com/p/64Llama2

Llama2的优化Llama2源码解析llama 2详解: zhuanlan.zhihu.com/p/64Llama2-6B微调

5.3 ChatGLM

ChatGLM简介ChatGLM-6B微调

ChatGLM2微调保姆级教程: zhuanlan.zhihu.com/p/64

第6章 LLM微调

6.1 全量指令微调SFT

6.2 高效微调PEFT

LORA系列

LoRA(Low Rank Adapter)

ChatGLM-6B: zhuanlan.zhihu.com/p/62ChatGLM2微调保姆级教程: zhuanlan.zhihu.com/p/64ChatGLM3-6B微调QLoRA

用bitsandbytes、4比特量化和QLoRA打造亲民的LLM:cnblogs.com/huggingfaceAdaLoRaSLoRA

其他

P-Tuning V2介绍P-Tuning v2微调实战

实战

HuggingFace PEFT库详解Deepspeed-Chat SFT 实践

第7章 大型语言模型预训练

7.1 预训练模型中的分词器

BPE详解WordPiece详解Unigram详解SentencePiece详解MinBPE实战和分析:github.com/karpathy/min

7.2 分布式训练

分布式训练概述分布式训练并行策略分布式训练的集群架构分布式深度学习框架

Megatron-LM详解DeepSpeed详解实践

基于DeepSpeed的GLM预训练实战基于DeepSpeed的LLaMA 分布式训练实践

7.3 MOE混合专家模型

基础概念Mixstral-8X7B-MOE-介绍相关论文

第8章 LLM应用

8.1 推理规划

思维链提示(Chain-of-Thought Prompting)

论文实战由少至多提示(Least-to-Most Prompting)

8.2 综合应用框架

LangChain框架核心模块

9个范例带你入门langchain: zhuanlan.zhihu.com/p/65知识库问答实践

8.3 智能代理AI Agent

智能代理介绍

LLM Powered Autonomous Agents: lilianweng.github.io/po智能代理的应用实例

第9章 LLM加速

9.1 注意力优化

FlashAttention系列PagedAttention

深入理解 BigBird 的块稀疏注意力: cnblogs.com/huggingfacehf.co/blog/big-bird

9.2 CPU推理加速

Llama.c应用与代码详解Llama.cpp应用与代码详解ChatGLM.cpp应用与代码详解

9.3 推理优化框架

vLLM推理框架实践TensorRT-LLM应用与代码详解

9.4 训练加速

第10章 强化学习

10.1 强化学习概述

10.2 强化学习环境

10.3 强化学习算法

Q-learning算法DQN算法Policy Gradient算法Actor-Critic算法

第11章 PPO算法与RLHF理论实战

11.1 近端策略优化算法PPO

PPO:Proximal Policy Optimization Algorithms 论文PPO介绍

广义优势估计PPO算法原理剖析PPO算法对比与评价使用PPO算法进行RLHF的N步实现细节: cnblogs.com/huggingfacePPO实战

基于PPO的正向情感倾向性 github.com/liucongg/Cha

11.2 基于人类反馈的强化学习RLHF

InstructGPT模型分析

InstructGPT:Training language models to follow instructions with human feedback论文RLHF:Augmenting Reinforcement Learning with Human FeedbackRLHF的流程

RLHF内部剖析

详解大模型RLHF过程(配代码解读) zhuanlan.zhihu.com/p/62RLHF价值分析RLHF问题分析数据收集与模型训练RLHF实践

数据预处理模块模型训练\生成\评估zhuanlan.zhihu.com/p/63MOSS-RLHF 实践

奖励模型训练PPO 微调

第12章 类ChatGPT实战

12.1 任务设计

12.2 数据准备

基于文档生成问题任务的类 github.com/liucongg/Cha

SFT阶段RM阶段RL阶段

第13章 语言模型训练数据

13.1 数据来源

通用数据专业数据

13.2 数据处理

低质过滤冗余去除隐私消除

13.3 数据影响分析

数据规模影响数据质量影响数据多样性影响

13.4 开源数据集合

PileROOTSRefinedWebSlimPajama

第14章 大语言模型评估

14.1 模型评估概述

14.2 大语言模型评估体系

知识与能力伦理与安全垂直领域评估

14.3 大语言模型评估方法

评估指标评估方法

14.4 大语言模型评估实践

基础模型评估SFT/RL 模型评估

第15章 多模态大模型

多模态大模型调研实战

第16章 大模型原生应用

16.1 落地调研

应用分析

提供大模型基础服务:ChatGPT、Gemini、文心一言和GLM4等,主要面向ToC/ToB提供chat能力(内容创作、代码开发等),通过会员收费或按Token计费ToB提供成套解决方案集成现有接口二次开发,应用开发开源模型增量预训练、全量微调、高效微调,行业内落地

模型最终还需落地解决实际问题,创造价值:优化现有问题、满足、甚至创造用户需求。

总的来说,就是规模化、自动化人的工作,替代人工,批量化、大规模生成或提供服务。

16.2 应用分析

一些思考

在企业里面做7B、13B量级的微调,主要就是在搞数据、样本,技术壁垒不高。预训练壁垒高,因为需要烧钱堆经验。

在这个日新月异的时代,如何紧跟行业主流发展,并具备不可替代性是个难题:

稀缺(不可替代性)稳定(业务和表层技术天天变,但底层的理论变化不大)需求持续(最好是类似衣食住行的刚需,否则技术 过时/热度褪去/不达预期,泡沫崩溃)不能越老越吃香(放到绝大多数行业都适用:不能经验积累,持续长期创造价值)壁垒(技术、业务、资本上有垄断)

尽量往底层和工程化上靠,学习相对不变的技术(理论上变化很难),迁移到稳定或有前景的行业,不断提升自己的学习效率:

计算机系统知识(训练、推理、开发,模型推理部署工程化)数学(深入学习并实践)

参考:

想学习大语言模型(LLM),应该从哪个开源模型开始? - 知乎

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: