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

摘要:

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/nl
  • Transformers快速入门(快速调包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, COT
  • RAG (Retrieval Augmented Generation)
    • 基于文档分块、向量索引和LLM生成,如Langchain文档问答

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

  • PEFT (Parameter-Efficient Fine-Tuning):
    • LORA (Low-Rank Adaption of LLMs)
    • QLORA
    • SLORA
    • P-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/mixtral
    • ChatGLM / 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-Training
    • GPT-2: Language Models are Unsupervised Multitask Learners
    • GPT-3:Language Models are Few-Shot Learners
    • GPT-4:GPT-4 Technical Report(openai.com)
  • 解析
    • GPT2图解:jalammar.github.io/illu
    • GPT2图解(中文):cnblogs.com/zhongzhaoxi
    • GPT3分析:How GPT3 Works - Visualizations and Animations
    • GPT原理分析:cnblogs.com/justLittleS
  • 推理
    • GPT2模型源码阅读系列一GPT2LMHeadModel
    • 60行代码实现GPT推理(PicoGPT):cnblogs.com/justLittleS
    • 动手用C++实现GPT:ToDo, 参考:CPP实现Transformer
  • 训练
    • 训练GPT2语言模型:基于Transformers库-Colab预训练GPT2
    • Transformers库GPT实现分析:ToDo
    • MiniGPT项目详解-实现双数加法:blog.csdn.net/wxc971231
  • NanoGPT项目详解
    • 代码分析:zhuanlan.zhihu.com/p/60
    • 训练实战:莎士比亚数据训练, ToDo
  • GPT2微调-文本摘要实战
    • 数据预处理模块
    • GPT-2模型模块
    • 模型训练和推理模块

3.3 BERT

  • 原理
    • BERT可视化:A Visual Guide to Using BERT for the First Time
    • BERT原理:cnblogs.com/justLittleS
  • 实战
    • BERT结构和预训练代码实现:ToDo
    • BERT预训练实战:动手学深度学习-BERT预训练 Colab
    • 基于HuggingFace的BERT预训练:
    • BERT微调:
      • 文本分类
      • BERT-CRF NER
      • BERT+指针网络(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/m
  • Mistral-8X7B-MOE的模型结构
  • Mistral -8X7B-MOE源码解析
  • Mistral-7B微调

5.2 Llama

  • Llama1
    • Llama1源码深入解析: zhuanlan.zhihu.com/p/64
  • Llama2
    • Llama2的优化
    • Llama2源码解析
    • llama 2详解: zhuanlan.zhihu.com/p/64
    • Llama2-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/62
    • ChatGLM2微调保姆级教程: zhuanlan.zhihu.com/p/64
    • ChatGLM3-6B微调
  • QLoRA
    • 用bitsandbytes、4比特量化和QLoRA打造亲民的LLM:cnblogs.com/huggingface
  • AdaLoRa
  • SLoRA

其他

  • 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/huggingface
  • PPO实战
    • 基于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 Feedback
  • RLHF的流程
    • RLHF内部剖析
      • 详解大模型RLHF过程(配代码解读) zhuanlan.zhihu.com/p/62
    • RLHF价值分析
    • RLHF问题分析
    • 数据收集与模型训练
  • RLHF实践
    • 数据预处理模块
    • 模型训练\生成\评估
    • zhuanlan.zhihu.com/p/63
  • MOSS-RLHF 实践
    • 奖励模型训练
    • PPO 微调

第12章 类ChatGPT实战

12.1 任务设计

12.2 数据准备

  • 基于文档生成问题任务的类 github.com/liucongg/Cha
    • SFT阶段
    • RM阶段
    • RL阶段

第13章 语言模型训练数据

13.1 数据来源

  • 通用数据
  • 专业数据

13.2 数据处理

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

13.3 数据影响分析

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

13.4 开源数据集合

  • Pile
  • ROOTS
  • RefinedWeb
  • SlimPajama

第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),应该从哪个开源模型开始? - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云手机:实现便携与安全的双赢

随着5G时代的到来,云手机在各大游戏、直播和新媒体营销中扮演越来越重要的角色。它不仅节约了成本,提高了效率,而且在边缘计算和云技术逐渐成熟的背景下,展现出了更大的发展机遇。 云手机的便携性如何? 云手机的便携性…

企业微信应用结合Cpolar内网穿透实现固定域名验证回调本地接口服务

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

k8s入门到实战(四)—— k8s核心概念以及基本操作命令详细介绍

k8s 核心概念及操作命令 namespace(命名空间,简称 ns) k8s 资源创建的两种方式:使用命令行创建、使用 yaml 文件创建 什么是 ns 在 k8s 中,ns 是一种用于对集群资源进行逻辑分组和隔离的机制。它允许将 k8s 集群划…

torch.utils.data.DataLoader参数分析

1、dataset:(数据类型 dataset) 输入的数据类型,这里是原始数据的输入。PyTorch内也有这种数据结构。 2、batch_size:(数据类型 int) 批训练数据量的大小,根据具体情况设置即可(默…

Elasticsearch8 - Docker安装Elasticsearch8.12.2

前言 最近在学习 ES,所以需要在服务器上装一个单节点的 ES 服务器环境:centos 7.9 安装 下载镜像 目前最新版本是 8.12.2 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.2创建配置 新增配置文件 elasticsearch.yml http.host…

16 网络管理与网络安全(3)

1.公钥基础设施( PKI) PKI 是利用公钥加密和数字签名技术建立的安全服务基础设施,以保证网络环境中数据的秘密性、完整性与不可抵赖性。PKI 是一种针对电子商务、电子政务应用,利用非对称加密体系,提供安全服务的通用性…

微信聊天记录删了怎样才能恢复?揭秘4个宝藏方法

在我们使用微信进行聊天的过程中,不可避免地会出现误删聊天记录的情况,这可能是因为手误、设备问题或其他原因导致的。而当重要的聊天记录不慎被删除时,往往会让人感到焦虑和困扰。然而,幸运的是,针对被删除的微信聊天…

函数式编程的理解

函数式编程(Functional Programming,简称FP)是一种编程范式,它将计算视为数学函数的求值,并避免使用程序状态以及易变对象。这种编程风格强调不可变性(Immutability)、纯函数(Pure F…

Java基础--128陷阱

问题引入 Integer a 123; Integer b 123; System.out.println(ab); 结果为true。 但是如果代码如下 Integer a 1230;Integer b 1230;System.out.println(ab); 这个的结果就是false。 问题解决 当Integer a 123时,其实他底层自动转换成了Integer a Inte…

docker--Dockerfile (三)

1,Dcockerfile是什么 docker推荐使用dockerfile的定义文件和docker build命令来构建镜像。dockerfile使用基本的基于DSL(面向领域语言)语法的指令来构建Docker镜像。另一种创建Docker镜像的方式是使用docker commit,不推荐使用。 …

【python】flask执行上下文context,请求上下文和应用上下文原理解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

SqlServer期末复习(数据库原理及应用)持续更新中

一、SQL语句 1.1 SQL语句知识引入 1.DDL语言(数据定义语言)主要是进行定义/改变表的结构、数据类型、表之间的链接等操作,关键字CREATE、DROP、ALTER CREATE TABLE 表面( 列名1 数据类型, 列名2 数据类型, ) ALTER TABLE 表名&a…

掌控仓位管理之道 稳健操作赢得长期收益

作为投资领域资深从业者,刘国海老师拥有顶尖学府香港中文大学和纽约大学的高等教育背景,通过20余年的金融投资实战,累积了大量操作经验,对市场行情亦有精准洞察。 在漫长投资历程中,刘国海老师一直高度重视仓位管理,视之为获取稳健收益的重中之重。合理仓位是投资收益与风险之…

MFC 打开类向导中方法时提示对com组件的调用返回了错误 HRESULT E_FAIL

解决:头文件中要分类,把virtual和afx_msg等放在一起,不要交叉错开。 MFC(Microsoft Foundation Class)中的virtual关键字用于声明虚函数。虚函数是C中实现多态的一种机制,它允许派生类重新定义基类中的虚函…

【算法刷题day6】Leetcode:242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

文章目录 Leetcode 242. 有效的字母异位词解题思路代码总结 Leetcode 349. 两个数组的交集解题思路代码总结 Leetcode 202. 快乐数解题思路代码总结 Leetcode 1. 两数之和解题思路代码总结 HashSet基本使用:HashMap基本使用: 草稿图网站 java的Deque Le…

java面试题|(1)多线程如何停止一个线程?

在Java中,停止一个线程的方法通常有以下几种: 使用标志位停止线程: 这是一种常见的做法,即通过设置一个标志位,在线程的执行体中检查这个标志位,当标志位满足某个条件时,退出线程执行。 class M…

那位拿了多个Offer的大佬分享了最新Go面经

和大家分享一下我们 Go就业训练营 和 升职加薪星球 中战友们投稿的真实面经。 这是第一篇,计划还会再更新4篇最新Go面经,都是拿到Offer的那种! 欢迎大家关注我的账号,关注之后不迷路。 先秀战绩 虽然不同的公司考察的侧重点不一…

每日必学Linux命令:mv命令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。 一.命令格式: mv [选项] 源文件或目录 目标文件或目录二&am…

计算机基础(中断、IO)

操作系统 设备交互 CPU 与 IO 设备交互过程 CPU 通过设备控制器(驱动?)与计算机外设进行交互。可以将控制器想象成编程语言中的接口,然后不同地计算机外设的控制器去实现这个接口,CPU 只需要调用接口而无需关注具体地…

2024/3/24 蓝桥杯

P1678 烦恼的高考志愿 二分 import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int[] a new int[n1];//学校int[] b new int[m…