Skip to content

从0开始大模型开发与微调|基于PyTorch与ChatGLM|PyTorch2.0深度学习环境搭建|从0学习深度学习|基础算法详解|神经网络|梯度下降|基于PyTorch卷积层的MNIST实战|可视化PyTorch数据处理和模型展示|RestNet实战|词嵌入|基于循环神经网络的中文情感分类|NLP编码器|预训练模型BERT|从1开始的NLP解码器|强化学习实战|ChatGLM使用详解高级微调|定制化应用|使用详解|训练自己的ChatGPT|只具有解码器的GPT2模型|基于加速库Accelerator的全量数据微调|基于Lora的模型微调|基于Huggingface的PERT模型微调

Notifications You must be signed in to change notification settings

VanGongwanxiaowan/LLMprogram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLMprogram

目 录

第1章 新时代的曙光——人工智能与大模型 ……………………………………1

1.1 人工智能:思维与实践的融合 …………………………………………………1

1.1.1 人工智能的历史与未来 …………………………………………………2

1.1.2 深度学习与人工智能 …………………………………………………2

1.1.3 选择PyTorch 2.0实战框架 ……………………………………………3

1.2 大模型开启人工智能的新时代 ………………………………………………4

1.2.1 大模型带来的变革 …………………………………………………4

1.2.2 最强的中文大模型——清华大学ChatGLM介绍 …………………………5

1.2.3 近在咫尺的未来——大模型的应用前景 ………………………………6

1.3 本章小结 …………………………………………………………………7

第2章 PyTorch 2.0深度学习环境搭建 ………………………………………8

2.1 环境搭建1:安装Python …………………………………………………8

2.1.1 Miniconda的下载与安装 ……………………………………………11

2.1.2 PyCharm的下载与安装 ……………………………………………14

2.1.3 Python代码小练习:计算Softmax函数 ………………………………15

2.2 环境搭建2:安装PyTorch 2.0 ……………………………………………15

2.2.1 Nvidia 10/20/30/40系列显卡选择的GPU版本 …………………………15

2.2.2 PyTorch 2.0 GPU Nvidia运行库的安装 ………………………………18

2.2.3 PyTorch 2.0小练习:Hello PyTorch …………………………………18

2.3 生成式模型实战:古诗词的生成 ……………………………………………19

2.4 图像降噪:手把手实战第一个深度学习模型 ………………………………19

2.4.1 MNIST数据集的准备 ………………………………………………21

2.4.2 MNIST数据集的特征和标签介绍 ……………………………………22

2.4.3 模型的准备和介绍 ………………………………………………24

2.4.4 对目标的逼近——模型的损失函数与优化函数 ………………………24

2.4.5 基于深度学习的模型训练 ……………………………………………24

2.5 本章小结 …………………………………………………………………26

第3章 从零开始学习PyTorch 2.0 …………………………………………27

3.1 实战MNIST手写体识别 …………………………………………………27

3.1.1 数据图像的获取与标签的说明 ………………………………………27

3.1.2 实战基于PyTorch 2.0的手写体识别模型 ……………………………29

3.1.3 基于Netron库的PyTorch 2.0模型可视化 ……………………………32

3.2 自定义神经网络框架的基本设计 ……………………………………………34

3.2.1 神经网络框架的抽象实现 ……………………………………………34

3.2.2 自定义神经网络框架的具体实现 ……………………………………35

3.3 本章小结 …………………………………………………………………43

第4章 一学就会的深度学习基础算法详解 ………………………………44

4.1 反向传播神经网络的前身历史 ………………………………………………44

4.2 反向传播神经网络两个基础算法详解 ………………………………………47

4.2.1 最小二乘法详解 …………………………………………………48

4.2.2 梯度下降算法 …………………………………………………50

4.2.3 最小二乘法的梯度下降算法及其Python实现 ………………………52

4.3 反馈神经网络反向传播算法介绍 ……………………………………………58

4.3.1 深度学习基础 …………………………………………………58

4.3.2 链式求导法则 …………………………………………………59

4.3.3 反馈神经网络的原理与公式推导 ……………………………………59

4.3.4 反馈神经网络原理的激活函数 ………………………………………60

4.3.5 反馈神经网络原理的Python实现 ……………………………………64

4.4 本章小结 …………………………………………………………………66

第5章 基于PyTorch卷积层的MNIST分类实战 …………………………70

5.1 卷积运算的基本概念 …………………………………………………71

5.1.1 基本卷积运算示例 …………………………………………………71

5.1.2 PyTorch中的卷积函数实现详解 ……………………………………72

5.1.3 池化运算 …………………………………………………73

5.1.4 Softmax激活函数 …………………………………………………75

5.1.5 卷积神经网络的原理 …………………………………………………78

5.2 实战:基于卷积的MNIST手写体分类 ……………………………………80

5.2.1 数据的准备 …………………………………………………80

5.2.2 模型的设计 …………………………………………………81

5.2.3 基于卷积的MNIST分类模型 ………………………………………82

5.3 PyTorch的深度可分离膨胀卷积详解 ………………………………………84

5.3.1 深度可分离卷积的定义 ……………………………………………84

5.3.2 深度的定义以及不同计算层待训练参数的比较 ………………………86

5.3.3 膨胀卷积详解 …………………………………………………87

5.3.4 实战:基于深度可分离膨胀卷积的MNIST手写体识别 ………………87

5.4 本章小结 …………………………………………………………………90

第6章 可视化的PyTorch数据处理与模型展示 …………………………91

6.1 用于自定义数据集的torch.utils.data工具箱使用详解 ……………………92

6.1.1 使用torch.utils.data.Dataset封装自定义数据集 ……………………92

6.1.2 改变数据类型的Dataset类中的transform的使用 ……………………93

6.1.3 批量输出数据的DataLoader类详解 ………………………………98

6.2 实战:基于tensorboardX的训练可视化展示 ……………………………100

6.2.1 可视化组件tensorboardX的简介与安装 ……………………………100

6.2.2 tensorboardX可视化组件的使用 ……………………………………100

6.2.3 tensorboardX对模型训练过程的展示 ………………………………103

6.3 本章小结 …………………………………………………………………105

第7章 ResNet实战 ……………………………………………………106

7.1 ResNet基础原理与程序设计基础 …………………………………………106

7.1.1 ResNet诞生的背景 …………………………………………………107

7.1.2 PyTorch 2.0中的模块工具 ……………………………………………109

7.1.3 ResNet残差模块的实现 ……………………………………………112

7.1.4 ResNet网络的实现 …………………………………………………114

7.2 ResNet实战:CIFAR - 10数据集分类 ……………………………………114

7.2.1 CIFAR - 10数据集简介 ……………………………………………117

7.2.2 基于ResNet的CIFAR - 10数据集分类 ………………………………117

7.3 本章小结 …………………………………………………………………118

第8章 有趣的词嵌入 ……………………………………………………120

8.1 文本数据处理 ……………………………………………………120

8.1.1 Ag_news数据集介绍和数据清洗 ……………………………………120

8.1.2 停用词的使用 ……………………………………………………123

8.1.3 词向量训练模型Word2Vec使用介绍 ………………………………125

8.1.4 文本主题的提取:基于TF - IDF ……………………………………128

8.1.5 文本主题的提取:基于TextRank ……………………………………134

8.2 更多的词嵌入方法——FastText和预训练词向量 …………………………135

8.2.1 FastText的原理与基础算法 …………………………………………136

8.2.2 FastText训练及其与PyTorch 2.0的协同使用 ………………………140

8.2.3 使用其他预训练参数来生成PyTorch 2.0词嵌入矩阵(中文) …………141

8.3 针对文本的卷积神经网络模型简介——字符卷积 …………………………141

8.3.1 字符(非单词)文本的处理 …………………………………………141

8.3.2 卷积神经网络文本分类模型的实现——Conv1d(一维卷积) …………148

8.4 针对文本的卷积神经网络模型简介——词卷积 ……………………………151

8.4.1 单词的文本处理 ……………………………………………………151

8.4.2 卷积神经网络文本分类模型的实现——Conv2d(二维卷积) …………153

8.5 使用卷积对文本分类的补充内容 ……………………………………………155

8.5.1 汉字的文本处理 ……………………………………………………155

8.5.2 其他细节 ……………………………………………………157

8.6 本章小结 …………………………………………………………………158

第9章 基于循环神经网络的中文情感分类实战 …………………………160

9.1 实战:循环神经网络与情感分类 ……………………………………………160

9.2 循环神经网络理论讲解 …………………………………………………160

9.2.1 什么是GRU ……………………………………………………165

9.2.2 单向不行,那就双向 …………………………………………………165

9.3 本章小结 …………………………………………………………………167

第10章 从零开始学习自然语言处理的编码器 …………………………168

10.1 编码器的核心——注意力模型 ……………………………………………169

10.1.1 输入层——初始词向量层和位置编码器层 …………………………170

10.1.2 自注意力层 ……………………………………………………172

10.1.3 ticks和Layer Normalization …………………………………………177

10.1.4 多头注意力 ……………………………………………………178

10.2 编码器的实现 ……………………………………………………180

10.2.1 前馈层的实现 ……………………………………………………181

10.2.2 编码器的实现 ……………………………………………………182

10.3 实战编码器:拼音汉字转化模型 ……………………………………………184

10.3.1 汉字拼音数据集处理 ……………………………………………185

10.3.2 汉字拼音转化模型的确定 …………………………………………187

10.3.3 模型训练部分的编写 ……………………………………………190

10.4 本章小结 …………………………………………………………………191

第11章 站在巨人肩膀上的预训练模型BERT …………………………193

11.1 预训练模型BERT ……………………………………………………193

11.1.1 BERT的基本架构与应用 …………………………………………194

11.1.2 BERT预训练任务与微调 …………………………………………195

11.2 实战BERT:中文文本分类 ………………………………………………198

11.2.1 使用Hugging Face获取BERT预训练模型 …………………………198

11.2.2 BERT实战文本分类 ………………………………………………200

11.3 更多的预训练模型 ……………………………………………………203

11.4 本章小结 …………………………………………………………………205

第12章 从1开始自然语言处理的解码器 ………………………………206

12.1 解码器的核心——注意力模型 ……………………………………………206

12.1.1 解码器的输入和交互注意力层的掩码 ……………………………207

12.1.2 为什么通过掩码操作能够减少干扰 ………………………………212

12.1.3 解码器的输出(移位训练方法) ………………………………213

12.1.4 解码器的实现 ……………………………………………………214

12.2 解码器实战——拼音汉字翻译模型 ………………………………………215

12.2.1 数据集的获取与处理 ……………………………………………216

12.2.2 翻译模型 ……………………………………………………218

12.2.3 拼音汉字模型的训练 ……………………………………………229

12.2.4 拼音汉字模型的使用 ……………………………………………230

12.3 本章小结 …………………………………………………………………231

第13章 基于PyTorch 2.0的强化学习实战 ………………………………232

13.1 基于强化学习的火箭回收实战 ……………………………………………233

13.1.1 火箭回收基本运行环境介绍 ………………………………………234

13.1.2 火箭回收参数介绍 ……………………………………………234

13.1.3 基于强化学习的火箭回收实战 ……………………………………239

13.1.4 强化学习的基本内容 ……………………………………………243

13.2 强化学习的基本算法——PPO算法 ………………………………………243

13.2.1 PPO算法简介 ……………………………………………………244

13.2.2 函数使用说明 ……………………………………………………245

13.2.3 一学就会的TD - error理论介绍 ……………………………………245

13.2.4 基于TD - error的结果修正 …………………………………………247

13.2.5 对于奖励的倒序构成的说明 ………………………………………248

13.3 本章小结 …………………………………………………………………249

第14章 ChatGPT前身——只具有解码器的GPT - 2模型 ………………250

14.1 GPT - 2模型简介 ……………………………………………………250

14.1.1 GPT - 2模型的输入和输出结构——自回归性 ……………………250

14.1.2 GPT - 2模型的PyTorch实现 ………………………………………251

14.1.3 GPT - 2模型输入输出格式的实现 ………………………………257

14.2 Hugging Face GPT - 2模型源码模型详解 ………………………………257

14.2.1 GPT2LMHeadModel类和GPT2Model类详解 ………………………259

14.2.2 Block类详解 ……………………………………………………259

14.2.3 Attention类详解 ……………………………………………………270

14.2.4 MLP类详解 ……………………………………………………274

14.3 Hugging Face GPT - 2模型的使用与自定义微调 …………………………281

14.3.1 模型的使用与自定义数据集的微调 ………………………………282

14.3.2 基于预训练模型的评论描述微调 ………………………………282

14.4 自定义模型的输出 ……………………………………………………285

14.4.1 GPT输出的结构 ……………………………………………………286

14.4.2 创造性参数temperature与采样个数topK …………………………286

14.5 本章小结 …………………………………………………………………288

第15章 实战训练自己的ChatGPT ………………………………………291

15.1 什么是ChatGPT ……………………………………………………291

15.2 RLHF模型简介 ……………………………………………………293

15.2.1 RLHF技术分解 ……………………………………………………293

15.2.2 RLHF中的具体实现——PPO算法 ………………………………296

15.3 基于RLHF实战的ChatGPT正向评论的生成 ……………………………297

15.3.1 RLHF模型进化的总体讲解 …………………………………………297

15.3.2 ChatGPT评分模块简介 …………………………………………298

15.3.3 带有评分函数的ChatGPT模型的构建 ……………………………300

15.3.4 RLHF中的PPO算法——KL散度 ………………………………301

15.3.5 RLHF中的PPO算法——损失函数 ………………………………303

15.4 本章小结 …………………………………………………………………304

第16章 开源大模型ChatGLM使用详解 …………………………………305

16.1 为什么要使用大模型 ……………………………………………………305

16.1.1 大模型与普通模型的区别 …………………………………………306

16.1.2 一个神奇的现象——大模型的涌现能力 …………………………307

16.2 ChatGLM使用详解 ……………………………………………………307

16.2.1 ChatGLM简介及应用前景 …………………………………………308

16.2.2 下载ChatGLM ……………………………………………………309

16.2.3 ChatGLM的使用与Prompt介绍 ………………………………310

16.3 本章小结 …………………………………………………………………311

第17章 开源大模型ChatGLM高级定制化应用实战 ……………………312

17.1 医疗问答GLMQABot搭建实战——基于ChatGLM搭建专业客服问答机器人 ………312

17.1.1 基于ChatGLM搭建专业领域问答机器人的思路 …………………313

17.1.2 基于真实医疗问答的数据准备 ……………………………………314

17.1.3 文本相关性(相似度)的比较算法 …………………………………315

17.1.4 提示语句Prompt的构建 ……………………………………………316

17.1.5 基于单个文档的GLMQABot的搭建 …………………………………316

17.2 金融信息抽取实战——基于知识链的ChatGLM本地化知识库与智能答案生成 ………318

17.2.1 基于ChatGLM搭建智能答案生成机器人的思路 …………………319

17.2.2 获取专业(范畴内)文档与编码存储 ………………………………320

17.2.3 查询文本编码的相关性比较与排序 ………………………………325

17.2.4 基于知识链的ChatGLM本地化知识库检索与智能答案生成 …………327

17.3 基于ChatGLM的一些补充内容 ……………………………………………328

17.3.1 语言的艺术——Prompt的前世今生 ………………………………329

17.3.2 清华大学推荐的ChatGLM微调方法 ………………………………330

17.3.3 一种新的基于ChatGLM的文本检索方案 ……………………………331

17.4 本章小结 …………………………………………………………………331

第18章 对训练成本上亿美元的ChatGLM进行高级微调 ………………332

18.1 ChatGLM模型的本地化处理 ……………………………………………332

18.1.1 下载ChatGLM源码与合并存储 ……………………………………332

18.1.2 修正自定义的本地化模型 …………………………………………335

18.1.3 构建GLM模型的输入输出示例 ……………………………………337

18.2 高级微调方法1——基于加速库Accelerator的全量数据微调 ………………339

18.2.1 数据的准备——将文本内容转化成三元组的知识图谱 ………………339

18.2.2 加速的秘密——Accelerate模型加速工具详解 ……………………339

18.2.3 更快的速度——使用INT8(INT4)量化模型加速训练 …………342

18.3 高级微调方法2——基于LoRA的模型微调 ……………………………345

18.3.1 对ChatGLM进行微调的方法——LoRA ……………………………348

18.3.2 自定义LoRA的使用方法 …………………………………………348

18.3.3 基于自定义LoRA的模型训练 ……………………………………349

18.3.4 基于自定义LoRA的模型推断 ……………………………………350

18.3.5 基于基本原理的LoRA实现 ………………………………………352

18.4 高级微调方法3——基于Huggingface的PEFT模型微调 …………………355

18.4.1 PEFT技术详解 ……………………………………………………355

18.4.2 PEFT的使用与参数设计 …………………………………………357

18.4.3 Huggingface专用PEFT的使用 ……………………………………358

18.5 本章小结 …………………………………………………………………359

About

从0开始大模型开发与微调|基于PyTorch与ChatGLM|PyTorch2.0深度学习环境搭建|从0学习深度学习|基础算法详解|神经网络|梯度下降|基于PyTorch卷积层的MNIST实战|可视化PyTorch数据处理和模型展示|RestNet实战|词嵌入|基于循环神经网络的中文情感分类|NLP编码器|预训练模型BERT|从1开始的NLP解码器|强化学习实战|ChatGLM使用详解高级微调|定制化应用|使用详解|训练自己的ChatGPT|只具有解码器的GPT2模型|基于加速库Accelerator的全量数据微调|基于Lora的模型微调|基于Huggingface的PERT模型微调

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published