简述

按个人偏好和目标总结了学习目标和路径(可按需学习),后续将陆续整理出相应学习资料和资源。

学习目标

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

参考项目

参考书籍

参考课程

教程

学习方式

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

基础知识

后续路径

应用

Zero Shot / Few Shot 快速开箱即用

  • Prompt调优:

    • 上下文学习In-Context Learning, ICL
    • 思维链 Chain of Thought, COT
  • RAG (Retrive Augment Generate)

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

领域数据-指令微调LLM

  • PEFT (Parameter Efficient Fintuning):

    • LORA (Low-Rank Adaption of LLMs)
    • QLORA
    • SLORA
    • P-Tuning v2

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

  • SFT (Supervised Fintuning):

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

对齐

  • 对齐人类偏好 (RLHF):

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

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

预训练

  • 小模型预训练 (GPT2, TinyLlama)

    不考虑训练参数规模较大的语言模型

训练推理优化

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

学习目录

第1章 技术与需求分析

1.1 技术分析

1.1.1 LLM的发展历程与趋势

1.1.2 开源LLM生态

1.2 市场需求分析

1.2.1 需求和就业市场分析

  • 预训练、对齐
  • 微调、应用
  • 推理加速

1.2.2、商业落地分析(2C、2B应用场景)

第2章 ChatGPT背景与原理

2.1 ChatGPT的背景知识

2.1.1 ChatGPT发展趋势

2.1.2 ChatGPT的能力

2.2 ChatGPT的工作原理

2.2.1 预训练与提示学习阶段

2.2.2 结果评价与奖励建模阶段

2.2.3 强化学习与自我进化阶段

2.3 算法细节

2.3.1 标注数据

2.3.2 建模思路

2.3.3 存在问题

第3章 预训练语言模型

3.1 Transformer

3.1.1 Transformer结构

详解Transformer原理:https://www.cnblogs.com/justLittleStar/p/17322172.html

3.1.2 Transformer实战

Torch代码详解和训练实战:https://www.cnblogs.com/justLittleStar/p/17786071.html

3.2 生成式预训练语言模型GPT

3.2.1 GPT详解

论文

  • GPT-1:Improving Language Understanding by Generative Pre-Training
  • GPT-2: Language Models are Unsupervised Multitask Learners
  • GPT-3:Language Models are Few-Shot Learners
  • GPT-3衍生模型CodeX: Evaluating Large Language Models Trained on Code
  • GPT-4:GPT-4 Technical Report(openai.com)

博客

GPT原理分析:https://www.cnblogs.com/justLittleStar/p/17322259.html

3.2.2 GPT实现

3.2.2.1 动手用Numpy实现GPT

60行代码实现GPT,可加载GPT2 128M进行推理:https://www.cnblogs.com/justLittleStar/p/17925108.html

3.2.2.3 动手用C++实现GPT

ToDo

参考:CPP实现Transformer

3.2.3 GPT训练和微调

3.2.3.1 训练GPT2语言模型
3.2.3.2 GPT2微调-文本摘要实战
  • 数据预处理模块
  • GPT-2模型模块
  • 模型训练和推理模块
3.2.3.3 MiniGPT项目详解

双数加法:https://blog.csdn.net/wxc971231/article/details/132000182

3.2.3.4 NanoGPT项目详解

3.3 Mask语言模型

3.3.1 BERT

原理

实战

  • BERT结构和预训练代码实现:ToDo
  • BERT预训练实战:动手学深度学习-BERT预训练 Colab
  • 基于HuggingFace的BERT预训练
  • BERT微调:文本分类实战、BERT-CRF实体识别实战、BERT+指针网络(UIE)信息抽取实战

3.3.2 BERT衍生系列

  • RoBERTa
  • ALBERT
  • SimBERT

3.4 其他

3.4.1 T5

3.4.1.1 T5模型介绍

3.4.2 UniLM

3.4.2.1 UniLM模型介绍
3.4.2.2 基于夸夸闲聊数据的UniLM模型实战
  • 数据预处理
  • UniLM模型
  • 模型训练与推理

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

4.1 提示学习PromptLearning

4.1.1 提示学习介绍

4.1.2 提示模板设计

4.1.3 答案空间映射设计

4.2 上下文学习

4.2.1 上下文学习介绍

4.2.2 预训练阶段提升上下文

4.2.3 推理阶段优化上下文

4.3 指令数据构建

4.3.1 手动和自动构建指令

4.3.2 开源指令数据集

4.3.3 基于提示的文本情感分析实战

https://github.com/liucongg/ChatGPTBook/tree/main/PromptProj

  • 数据预处理
  • 模型结构与训练模块

第5章 开源大型语言模型

5.1 Mistral

Mistral 7B Tutorial: https://www.datacamp.com/tutorial/mistral-7b-tutorial

5.1.1 Mistral的模型结构

5.1.3 Mistral 源码解析

5.1.4 Mistral-6B微调

5.2 Llama源码

5.2.1 Llama1

Llama1源码深入解析: https://zhuanlan.zhihu.com/p/648365207

5.2.2 Llama2

  • Llama2的优化
  • Llama2源码解析

llama 2详解: https://zhuanlan.zhihu.com/p/649756898

  • Llama2-6B微调

5.3 ChatGLM

5.2.1 ChatGLM简介

5.2.2 ChatGLM-6B微调

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

5.4 CodeLlama

5.2.1 CodeLlama简介

5.2.2 CodeLlama微调

第6章 LLM微调

6.1 全量指令微调

6.2 高效模型微调PEFT简介

6.3 LORA系列

6.3.1 LoRA(Low Rank Adapter)

ChatGLM-6B: https://zhuanlan.zhihu.com/p/625468667

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

6.3.2 QLoRA

用bitsandbytes、4比特量化和QLoRA打造亲民的LLM:https://www.cnblogs.com/huggingface/p/17816374.html

6.3.3 AdaLoRa

6.3.4 SLoRA

6.4 P-Tuning系列

6.4.1 P-Tuning V1

6.4.2 P-Tuning V2

6.5 基于LLM微调的信息抽取实战

6.5.1 ChatGLM项目简介

6.5.2 数据预处理模块

6.5.3 Freeze微调模块

6.5.4 LoRA微调模块

6.5.5 P-Tuning v2微调模块

6.6 Deepspeed-Chat SFT 实践

6.6.1 代码结构

6.6.2 数据预处理

6.6.3 自定义模型

6.6.4 模型训练

6.6.5 模型推理

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

7.1 大型预训练模型简介

7.2 预训练模型中的分词器

7.2.1 BPE详解

7.2.2 WordPiece

7.2.3 Unigram

7.2.4 SentencePiece详解

7.3 分布式训练

7.3.1 分布式训练概述

7.3.2 分布式训练并行策略

7.3.3 分布式训练的集群架构

7.3.4 分布式深度学习框架

7.3.4.1 Megatron-LM详解
7.3.4.2 DeepSpeed详解
7.3.4.3 Colossal-AI

7.4 基于DeepSpeed的LLM预训练实战

7.4.1 GLM项目简介

7.4.2 数据预处理模块

7.4.3 执行模型训练

7.5 DeepSpeed实践

7.5.1 基础概念

7.5.2 LLaMA 分布式训练实践

7.6 MOE

7.6.1 基础概念

7.6.2 Mixstral-8X7B-MOE-介绍

第8章 LLM应用

8.1 推理规划

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

8.1.2 由少至多提示(Least-to-Most Prompting)

8.2 综合应用框架

8.2.1 LangChain框架核心模块

9个范例带你入门langchain: https://zhuanlan.zhihu.com/p/654052645

8.2.2 知识库问答实践

8.3 智能代理AI Agent

LLM Powered Autonomous Agents: https://lilianweng.github.io/posts/2023-06-23-agent/

8.3.1 智能代理的组成

8.3.2 智能代理的应用实例

第9章 LLM推理加速

9.1 注意力优化

9.1.1 FlashAttention系列

9.1.2 PagedAttention

深入理解 BigBird 的块稀疏注意力: https://www.cnblogs.com/huggingface/p/17852870.html

https://hf.co/blog/big-bird

9.2 CPU推理加速

9.2.1 Llama.c应用与代码详解

9.2.2 Llama.cpp应用与代码详解

9.2.3 ChatGLM.cpp应用与代码详解

9.3 推理优化框架

9.3.1 TensorRT-LLM应用与代码详解

9.3.2 FasterTransformer应用与代码详解

9.3.3 FastServe框架

9.3.4 vLLM推理框架实践

9.4 分布式推理

第10章 强化学习

10.1 基础

10.1.1 强化学习概述

10.1.2 强化学习与有监督学习的区别

10.2 强化学习环境

10.3 强化学习算法

10.3.1 Q-learning算法

10.3.2 SARSA算法

10.3.3 DQN算法

10.3.4 Policy Gradient算法

10.3.5 Actor-Critic算法

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

11.1 近端策略优化算法PPO简介

PPO:Proximal Policy Optimization Algorithms.

11.1.1 策略梯度算法回顾

11.1.2 广义优势估计

11.1.3 PPO算法原理剖析

11.1.4 PPO算法对比与评价

使用PPO算法进行RLHF的N步实现细节: https://www.cnblogs.com/huggingface/p/17836295.html

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

RLHF:Augmenting Reinforcement Learning with Human Feedback

11.2.1 RLHF的流程

11.2.2 RLHF内部剖析

11.2.3 RLHF价值分析

11.2.4 RLHF问题分析

11.2.5 数据收集与模型训练

11.2.6 开源数据

RLHF实践

https://zhuanlan.zhihu.com/p/635569455

详解大模型RLHF过程(配代码解读)

https://zhuanlan.zhihu.com/p/624589622

11.3 InstructGPT模型分析

InstructGPT:Training language models to follow instructions with human feedback

11.3.1 模型简介

11.3.2 数据收集

11.3.3 模型原理

11.3.4 模型讨论

11.4 基于PPO的正向情感倾向性

https://github.com/liucongg/ChatGPTBook/tree/main/PPOProj

11.4.1 项目任务与数据集分析

11.4.2 数据预处理模块

11.4.3 模型训练模块

11.4.4 模型生成模块

11.4.5 模型评估模块

11.5 MOSS-RLHF 实践

11.5.1 奖励模型训练

11.5.2 PPO 微调

第12章 类ChatGPT实战

12.1 任务设计

12.2 数据准备

12.3 基于文档生成问题任务的类

12.3.1 SFT阶段

12.3.2 RM阶段

12.3.3 RL阶段

https://github.com/liucongg/ChatGPTBook/tree/main/RLHFProj

第13章 语言模型训练数据

13.1 数据来源

13.1.1 通用数据

13.1.2 专业数据

13.2 数据处理

13.2.1 低质过滤

13.2.2 冗余去除

13.2.3 隐私消除

13.2.4 词元切分

13.3 数据影响分析

13.3.1 数据规模影响

13.3.2 数据质量影响

13.3.3 数据多样性影响

13.4 开源数据集合

13.4.1 Pile

13.4.2 ROOTS

13.4.3 RefinedWeb

13.4.4 SlimPajama

第14章 大语言模型评估

14.1 模型评估概述

14.2 大语言模型评估体系

14.2.1 知识与能力

14.2.2 伦理与安全

14.2.3 垂直领域评估

14.3 大语言模型评估方法

14.3.1 评估指标

14.3.2 评估方法

14.4 大语言模型评估实践

14.4.1 基础模型评估

14.4.2 SFT/RL 模型评估

第15章 大模型原生应用

15.1.1 应用调研

大模型目前落地的,第一类ChatGPT、Bart、文心一言等,主要面向ToC提供chat能力(使用场景,内容创作,代码开发)通过会员收费或按Token计费。

模型训练百模大战,最后还是需要应用落地解决问题、能够满足用户需求,甚至创造需求、创造价值。

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

一些思考

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

在这个日新月异的时代,如何具备不可替代性是个难题:

  • 稀缺性(不可替代性)
  • 稳定性 (表层的技术天天变,大模型/AIGC一天一个样,但底层的理论变化不大)
  • 需求不持续(需求不持久,技术过时/热度褪去,技术达不到预期 + 新鲜劲没了)
  • 不能越老越吃香(放到绝大多数行业都适用,但CS这行太明显了。不能把经验积累,持续10\20年创造价值)

在快速应用落地的同时。

尽量往底层靠,学习相对不变的技术(理论上变化很难)

:计算机系统知识(训练、推理、开发,模型推理部署工程化) + 数学

【LLM】大模型落地-从理论到实践的更多相关文章

  1. 计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践

    计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践 2018年06月13日 16:38:11 轻春 阅读数 6004更多 分类专栏: 机器学习 机器学习荐货情报局   版 ...

  2. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  3. Java 理论与实践: 修复 Java 内存模型,第 2 部分(转载)

    在 JSR 133 中 JMM 会有什么改变? 活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议.在本系列文章的 ...

  4. (转)【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地

    [重磅]无监督学习生成式对抗网络突破,OpenAI 5大项目落地 [新智元导读]"生成对抗网络是切片面包发明以来最令人激动的事情!"LeCun前不久在Quroa答问时毫不加掩饰对生 ...

  5. Java 理论与实践: 并发集合类

    Java 理论与实践: 并发集合类 DougLea的 util.concurrent 包除了包含许多其他有用的并发构造块之外,还包含了一些主要集合类型 List 和 Map 的高性能的.线程安全的实现 ...

  6. Deep Learning中的Large Batch Training相关理论与实践

    背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在分布式训练时,提高计算通信占比是提高计算加速比的有效手段,当网络通信优化到一 ...

  7. 监督学习——决策树理论与实践(下):回归决策树(CART)

    介绍 决策树分为分类决策树和回归决策树: 上一篇介绍了分类决策树以及Python实现分类决策树: 监督学习——决策树理论与实践(上):分类决策树          决策树是一种依托决策而建立起来的一种 ...

  8. 高翔《视觉SLAM十四讲》从理论到实践

    目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...

  9. 推荐系统系列(四):PNN理论与实践

    背景 上一篇文章介绍了FNN [2],在FM的基础上引入了DNN对特征进行高阶组合提高模型表现.但FNN并不是完美的,针对FNN的缺点上交与UCL于2016年联合提出一种新的改进模型PNN(Produ ...

  10. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

随机推荐

  1. C++ STL 标准模板库(排序/集合/适配器)算法

    C++ 标准模板库STL,是一个使用模板技术实现的通用程序库,该库由容器container,算法algorithm,迭代器iterator,容器和算法之间通过迭代器进行无缝连接,其中所包含的数据结构都 ...

  2. 零基础入门学习Java课堂笔记 ——day01

    Java语法 1.注释.标识符.关键字 注释 不会被程序执行的代码或者块 //双斜杠表示单行注释 /*表示多行注释*/ 标识符.关键字 关键词系统事先定义好的,我们能直接拿来用的,不能作为变量名使用 ...

  3. Flink CDC写入数据到kafka几种格式

    Flink CDC写入kafka几种常见的数据格式,其中包括upsert-kafka写入后正常的json格式,debezium-json格式以及changelog-json格式. upsert-kaf ...

  4. Power BI 12 DAY

    电商平台流量分析 案例练习 参数建模 建模-->新建参数 新建度量值使用SWITCH函数将需要的指标数据化 15.关键指标 = switch([指标选择 值],1,[1.访客数合计],2,[2. ...

  5. JS 页面离开事件 页面关闭事件,实现登录成功返回上个页面

    壹 ❀ 引 登录成功后跳转到上一个页面是很常见的需求,比如在天猫添加购物车时网站会效验用户登录情况,若未登录则跳转登录,登录成功返回到先前的商品页. 这个功能实现并不困难,但因为我的奇思妙想让我先后了 ...

  6. NC51180 Accumulation Degree

    题目链接 题目 题目描述 Trees are an important component of the natural landscape because of their prevention o ...

  7. 从零开始手写 redis(三)内存数据重启后如何不丢失?

    前言 我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache. 我们在 从零手写 cache 框架(一)实现过期特性 中实现了 key 的过期特性. 本节,让我 ...

  8. 细说 QUEST CENTRAL FOR DB2 八宗罪

    作为一个从事oracle plsql开发2年的程序员,如今跳槽从事DB2数据仓库项目. 以PL/SQL Developer为参考,以下简称PLSQL,细说QUEST CENTRAL FOR DB2 5 ...

  9. 对yuv存储格式中的yuv420p和yuv420sp的理解

    一.对yuv的认识 yuv是一种颜色编码系统,它将图像的亮度和色度分离开来.y表示亮度,即黑白信息:uv表示色度,即颜色信息.yuv常用于视频压缩和传输中,因为它可以更有效地表示人眼对亮度和色度的敏感 ...

  10. 使用GDI时如何确定是否有内存泄漏

    在创建GDI对象时,比如创建笔,画刷等对象时,在调用完之后忘记删除对象了,会造成内存泄漏 我们可以通过任务管理器来快速的查看 启动任务管理器(右键单击Windows任务栏以选择任务管理器) 在Wind ...