From ba29bde6b18f0ce13aa41cdade32080fde061251 Mon Sep 17 00:00:00 2001 From: KMnO4-zx <1021385881@qq.com> Date: Tue, 13 May 2025 21:34:06 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0readme=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 233 ++++++++++++++++++++++++++---------------------------- 1 file changed, 114 insertions(+), 119 deletions(-) diff --git a/README.md b/README.md index b69ec32..11df94e 100644 --- a/README.md +++ b/README.md @@ -2,130 +2,125 @@ ## 大纲 -### 第一章 NLP 基础概念 志学 Done - - 1.1 什么是 NLP - - 1.2 NLP 发展历程 - - 1.3 NLP 任务 - - 1.3.1 中文分词 - - 1.3.2 子词切分 - - 1.3.3 词性标注 - - 1.3.4 文本分类 - - 1.3.5 实体识别 - - 1.3.6 关系抽取 - - 1.3.7 文本摘要 - - 1.3.8 机器翻译 - - 1.3.9 自动问答 - - 1.4 文本表示的发展历程 - - 1.4.1 词向量 - - 1.4.2 语言模型 - - 1.4.3 Word2Vec - - 1.4.4 ELMo +### 第一章 NLP 基础概念 +- 1.1 什么是 NLP +- 1.2 NLP 发展历程 +- 1.3 NLP 任务 + - 1.3.1 中文分词 + - 1.3.2 子词切分 + - 1.3.3 词性标注 + - 1.3.4 文本分类 + - 1.3.5 实体识别 + - 1.3.6 关系抽取 + - 1.3.7 文本摘要 + - 1.3.8 机器翻译 + - 1.3.9 自动问答 +- 1.4 文本表示的发展历程 + - 1.4.1 词向量 + - 1.4.2 语言模型 + - 1.4.3 Word2Vec + - 1.4.4 ELMo -### 第二章 基础架构-Transformer 雨衡 Done - - 2.1 注意力机制 - - 2.1.1 注意力机制详解 - - 2.1.2 自注意力与多头注意力 - - 2.1.3 注意力掩码与因果注意力 - - 2.2 Encoder-Decoder - - 2.2.1 Seq2Seq 模型 - - 2.2.2 Encoder - - 2.2.3 Decoder - - 2.3 Transformer - - 2.3.1 Transformer 结构总览 - - 2.3.2 Tokenizer 与 Embedding 层 - - 2.3.3 位置编码 - - 2.3.4 Transformer 中的其他结构 +### 第二章 Transformer 架构 +- 2.1 注意力机制 + - 2.1.1 什么是注意力机制 + - 2.1.2 深入理解注意力机制 + - 2.1.3 注意力机制的实现 + - 2.1.4 自注意力 + - 2.1.5 掩码自注意力 + - 2.1.6 多头注意力 +- 2.2 Encoder-Decoder + - 2.2.1 Seq2Seq 模型 + - 2.2.2 前馈神经网络 + - 2.2.3 层归一化 + - 2.2.4 残差连接 + - 2.2.5 Encoder + - 2.2.6 Decoder +- 2.3 搭建一个 Transformer + - 2.3.1 Embeddng 层 + - 2.3.2 位置编码 + - 2.3.3 一个完整的 Transformer -### 第三章 预训练语言模型 Partly Done - - 3.1 Encoder-Only PLM - - 3.1.1 BERT - - (1)模型架构:Encoder Only - - (2)预训练任务 - - (3)针对下游任务微调 - - 3.1.2 RoBERTa - - 3.1.3 ALBERT - - 3.2 Encoder-Decoder PLM - - 3.2.1 T5 - - (1)模型架构:Encoder-Decoder - - (2)预训练任务 - - (3)大一统思想 - - 3.2.2 BART - - 3.2.3 XLNet - - 3.3 Decoder-Only PLM - - 3.3.1 GPT - - (1)模型架构:Decoder Only - - (2)预训练任务 - - (3)GPT 的发展历程 - - 3.3.2 LLaMA - - (1)模型架构优化 - - (2)预训练数据 - - (3)LLaMA1 到 LLaMA2 - - 3.3.3 ChatGLM - - (1)模型架构:Prefix-Decoder - - (2)预训练数据 - - (3)ChatGLM 的发展历程 +### 第三章 预训练语言模型 + +- 3.1 Encoder-only PLM + - 3.1.1 BERT + - 3.1.2 RoBERTa + - 3.1.3 ALBERT +- 3.2 Encoder-Decoder PLM + - 3.2.1 T5 +- 3.3 Decoder-Only PLM + - 3.3.1 GPT + - 3.3.2 LLaMA + - 3.3.3 GLM + - 3.3.4 DeepSeek [WIP] -### 第四章 大语言模型 雨衡 Done - - 4.1 什么是 LLM - - 4.1.1 LLM 的定义 - - 4.1.2 LLM 的能力 - - 4.1.3 LLM 的特点 - - 4.2 训练 LLM 的三个阶段 - - 4.2.1 Pretrain - - 4.2.2 SFT - - 4.2.3 RLHF +### 第四章 大语言模型 + +- 4.1 什么是 LLM + - 4.1.1 LLM 的定义 + - 4.1.2 LLM 的能力 + - 4.1.3 LLM 的特点 +- 4.2 如何训练一个 LLM + - 4.2.2 Pretrain + - 4.2.3 SFT + - 4.2.4 RLHF ### 第五章 动手搭建大模型 - - 5.1 模型架构-LLaMA Done - - 5.1.1 LLaMA Attentœion - - 5.1.2 LLaMA Decoder Layer - - 5.1.3 LLaMA MLP - - 5.1.4 LLaMA RMSNorm - - 5.1.5 A Whole LLaMA - - 5.2 训练 Tokenizer - - 5.2.1 Word-based Tokenizer - - 5.2.2 Character-based Tokenzier - - 5.2.3 Subword Tokenizer - - (1)BPE - - (2)Word Piece - - (3)Unigram - - 5.2.4 训练一个 Tokenizer - - 5.3 训练一个小型LLM - - 5.3.1 训练Tokenizer - - 5.3.2 数据预处理 - - 5.3.3 训练模型 - - 5.3.4 使用模型生成文本 -### 第六章 训练 LLM - - 6.1 框架介绍 - - 6.1.1 transformers - - 6.1.2 deepspeed - - 6.1.3 peft - - 6.1.4 trl - - 6.2 LLM Pretrain - - 6.2.1 初始化 LLM - - 6.2.2 预训练数据处理 - - 6.2.3 使用 Trainer 进行预训练 - - 6.3 LLM SFT - - 6.3.1 加载预训练模型 - - 6.3.2 微调数据处理 - - 6.3.3 使用 Trainer 进行微调 - - 6.4 基于强化学习的偏好对齐 - - 6.4.1 DPO 训练 - - 6.4.2 KTO 训练 - - 6.4.3 GRPO 训练 - - 6.5 高效微调-LoRA - - 6.5.1 LoRA 原理 - - 6.5.2 使用 peft 进行 LoRA 微调 +- 5.1 动手实现一个 LLaMA2 大模型 + - 5.1.1 定义超参数 + - 5.1.2 构建 RMSNorm + - 5.1.3 构建 LLaMA2 Attention + - 5.1.3.1 repeat_kv + - 5.1.3.2 旋转嵌入 + - 5.1.3.3 组装 LLaMA2 Attention + - 5.1.4 构建 LLaMA2 MLP模块 + - 5.1.5 LLaMA2 Decoder Layer + - 5.1.6 构建 LLaMA2 模型 +- 5.2 训练 Tokenizer + - 5.3.1 Word-based Tokenizer + - 5.2.2 Character-based Tokenizer + - 5.2.3 Subword Tokenizer + - 5.2.4 训练一个 Tokenizer +- 5.3 预训练一个小型LLM + - 5.3.0 数据下载 +- 1 处理预训练数据 +- 2 处理SFT数据 + - 5.3.1 训练Tokenize + - 5.3.2 Dataset + - 5.3.3 预训练 + - 5.3.4 SFT 训练 + - 5.3.4 使用模型生成文本 + +### 第六章 大模型训练流程实践 + +- 6.1 模型预训练 + - 6.1.1 框架介绍 + - 6.1.2 初始化 LLM + - 6.1.3 预训练数据处理 + - 6.1.4 使用 Trainer 进行训练 + - 6.1.5 使用 DeepSpeed 实现分布式训练 +- 6.2 模型有监督微调 + - 6.2.1 Pretrain VS SFT + - 6.2.2 微调数据处理 +- 6.3 高效微调 + - 6.3.1 高效微调方案 + - 6.3.2 LoRA 微调 + - 6.3.3 LoRA 微调的原理 + - 6.3.4 LoRA 的代码实现 + - 6.3.5 使用 peft 实现 LoRA 微调 ### 第七章 大模型应用 - - 7.1 LLM 的评测 - - 7.1.1 LLM 的评测方法 - - 7.1.2 主流的评测榜单 - - 7.1.3 特定的评测榜单 - - 7.2 RAG - - 7.2.1 RAG 的基本原理 - - 7.2.2 搭建一个 RAG 框架 - - 7.3 Agent - - 7.3.1 Agent 的基本原理 - - 7.3.2 搭建一个 Multi-Agent 框架 \ No newline at end of file + +- 7.1 LLM 的评测 + - 7.1.1 LLM 的评测数据集 + - 7.1.2 主流的评测榜单 + - 7.1.3 特定的评测榜单 +- 7.2 RAG + - 7.2.1 RAG 的基本原理 + - 7.2.2 搭建一个 RAG 框架 +- 7.3 Agent + - 7.3.1 什么是 LLM Agent? + - 7.3.2 LLM Agent 的类型 + - 7.3.3 动手构造一个 Tiny-Agent \ No newline at end of file