新书速览|从零开始大模型开发与微调:基于PyTorch与ChatGLM

news2024/11/18 7:35:22

详细讲解大模型基本理论、算法、程序实现与应用实战,揭示大模型开发与微调技术

图片

1

本书内容

大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架,以ChatGLM为例详细讲解大模型的基本理论、算法、程序实现、应用实战以及微调技术,为读者揭示大模型开发技术。本书配套示例源代码、PPT课件

《从零开始大模型开发与微调:基于PyTorch与ChatGLM》共18章,内容包括人工智能与大模型、PyTorch 2.0深度学习环境搭建、从零开始学习PyTorch 2.0、深度学习基础算法详解、基于PyTorch卷积层的MNIST分类实战、PyTorch数据处理与模型展示、ResNet实战、有趣的词嵌入、基于PyTorch循环神经网络的中文情感分类实战、自然语言处理的编码器、预训练模型BERT、自然语言处理的解码器、强化学习实战、只具有解码器的GPT-2模型、实战训练自己的ChatGPT、开源大模型ChatGLM使用详解、ChatGLM高级定制化应用实战、对ChatGLM进行高级微调。

《从零开始大模型开发与微调:基于PyTorch与ChatGLM》适合PyTorch深度学习初学者、大模型开发初学者、大模型开发人员学习,也适合高等院校人工智能、智能科学与技术、数据科学与大数据技术、计算机科学与技术等专业的师生作为教学参考书。

2

本书作者

王晓华,高校计算机专业讲师,研究方向为云计算、大数据与人工智能。著有《PyTorch 2.0深度学习从零开始学》《Python机器学习与可视化分析实战》《谷歌JAX深度学习从零开始学》《Spark 3.0大数据分析与挖掘:基于机器学习》《TensorFlow深度学习应用实践》《OpenCV+TensorFlow深度学习与计算机视觉实战》《TensorFlow知识图谱实战》《TensorFlow人脸识别实战》《TensorFlow语音识别实战》《TensorFlow+Keras自然语言处理实战》《TensorFlow 2.0卷积神经网络实战》《Keras实战:基于TensorFlow2.2的深度学习实践》《TensorFlow 2.0深度学习从零开始学》《深度学习的数学原理与实现》。

3

编辑推荐

大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架,以ChatGLM为例详细讲解大模型的基本理论、算法、程序实现、应用实战以及微调技术,为读者揭示大模型开发技术。

4

本书目录

第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的下载与安装 8

2.1.2  PyCharm的下载与安装 11

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

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运行库的安装 15

2.2.3  PyTorch 2.0小练习:Hello PyTorch 18

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

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

2.4.1  MNIST数据集的准备 19

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

2.4.3  模型的准备和介绍 22

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  反馈神经网络的原理与公式推导 60

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

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

4.4  本章小结 70

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

5.1  卷积运算的基本概念 71

5.1.1  基本卷积运算示例 72

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

5.1.3  池化运算 75

5.1.4  Softmax激活函数 77

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残差模块的实现 110

7.1.4  ResNet网络的实现 112

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

7.2.1  CIFAR-10数据集简介 114

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 132

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

8.2.1  FastText的原理与基础算法 135

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

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

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  循环神经网络理论讲解 165

9.2.1  什么是GRU 165

9.2.2  单向不行,那就双向 167

9.3  本章小结 168

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

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

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  基于强化学习的火箭回收实战 232

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

13.1.2  火箭回收参数介绍 234

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

13.1.4  强化学习的基本内容 239

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

13.2.1  PPO算法简介 243

13.2.2  函数使用说明 244

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模型的输入和输出结构—自回归性 251

14.1.2  GPT-2模型的PyTorch实现 252

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

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

14.2.1  GPT2LMHeadModel类和GPT2Model类详解 259

14.2.2  Block类详解 270

14.2.3  Attention类详解 274

14.2.4  MLP类详解 281

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

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

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

14.4  自定义模型的输出 286

14.4.1  GPT输出的结构 286

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

14.5  本章小结 290

第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  查询文本编码的相关性比较与排序 322

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

17.3  基于ChatGLM的一些补充内容 327

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

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

17.3.2  一种新的基于ChatGLM的文本检索方案 330

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模型加速工具详解 342

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

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

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

18.3.2  自定义LoRA的使用方法 349

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

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

18.3.5  基于基本原理的LoRA实现 355

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

18.4.1  PEFT技术详解 358

18.4.2  PEFT的使用与参数设计 359

18.4.3  Huggingface专用PEFT的使用 360

18.5  本章小结 362

本文摘自《从零开始大模型开发与微调:基于PyTorch与ChatGLM》,获出版社和作者授权发布。

从零开始大模型开发与微调:基于PyTorch与ChatGLM—京东

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

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

相关文章

[自动驾驶算法][从0开始轨迹预测]:一、坐标和坐标系变换

既然要从0开始轨迹预测,那从哪开始写起呢?回想下自己的学习历程,真正有挑战性的不是模型结构,不是繁琐的训练和调参,而是数据的制作!!! 笔者自认为不是一个数学基础牢固的人&#xf…

【机器学习300问】5、什么是强化学习?

我将从三个方面为大家简明阐述什么是强化学习,首先从强化学习的定义大家的了解强化学习的特点,其次学习强化学习里特殊的术语加深对强化学习的理解,最后通过和监督学习与无监督学习的比较,通过对比学习来了解强化学习。 一、强化…

怎么提高客服满意度?

相应速度 1.即使平时回复手速很快,但一旦接待量一上来脑子转不过来,或是顾客咨询了一些自己不知道的问题,就知道快捷语有多重要。 2.熟悉快捷短语。(针对顾客提出的问题能快速给出反应。) 3. 安装快捷回复软件。(使用[客服宝]快捷回复软件…

【JAVA】谈谈 ReadWriteLock 和 StampedLock

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 ReadWriteLock(读写锁) 基本原理: 接口和实现: 用法示例: StampedL…

【期末不挂科-C++考前速过系列P3】大二C++第3次过程考核(20道选择题&12道判断题&2道代码题)【解析,注释】

前言 大家好吖,欢迎来到 YY 滴C考前速过系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《…

Linux安装Rdkafka PHP 扩展(Kafka使用教程)

以是centos为例 #可以查看php版本 php -v#查看php安装的扩展库 php -m 1、首先,确保你已经安装了 PHP 和相关的开发工具。你可以使用以下命令来安装它们: sudo yum install php-devel 中间会问你是否ok,输入y回车,出现complete…

基于SSM+vue的新生报到服务管理系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

C#,卡特兰数(Catalan number,明安图数)的算法源代码

一、概要 卡特兰数(英语:Catalan number),又称卡塔兰数、明安图数,是组合数学中一种常出现于各种计数问题中的数列。以比利时的数学家欧仁查理卡特兰的名字来命名。1730年左右被蒙古族数学家明安图使用于对三角函数幂…

基于matlab实现AUTOSAR软件开发---答疑5

最近还是经常有人反馈mode switch的枚举搞不定,我在统一回复下,希望可以解决大家的疑问 运行这个脚本即可,运行成功后,就已经存在于SIMULINK系统里了,程序中可以直接识别到的, 但是运行之后 在matlab基础工作区里也是看不到枚举的,这点大家要注意,不要纠结这个,实际…

神经网络|张量tensor(待完善)

文章目录 tensor/张量什么是tensor?如何用代码实现tensortensor在神经网络中的应用 其他 tensor/张量 什么是tensor? 张量是用来探究一个点在各个切面(一共三个切面)和各个方向(x,y,z三个方向&…

微服务接口工具Swagger2

##1、什么是Swagger? # 官网 https://swagger.io/核心功能 生成接口说明文档生成接口测试工具 2、SpringBoot集成Swagger2 1&#xff09;、添加依赖 <!-- swagger2 --><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><depen…

【qt】sdk写pro写法,cv,onnx,cudnn

我的sdk在OpenCV003项目里&#xff1a; pro中添加 CONFIG(release, debug|release) {LIBS -L$$PWD/sdk/onnxruntime-x64-gpu/lib/ -lonnxruntimeLIBS -L$$PWD/sdk/onnxruntime-x64-gpu/lib/ -lonnxruntime_providers_cudaLIBS -L$$PWD/sdk/onnxruntime-x64-gpu/lib/ -lon…

NowinAndroid—2024 Android现代开发全功能应用

NowinAndroid—2024 Android现代开发全功能应用 现代Android开发全功能示例应用Now-in-Android&#xff0c;它是用Kotlin和Jetpack Compose开发的&#xff0c;功能非常强大。这个应用遵循了安卓设计和开发的最佳方法&#xff0c;旨在给开发者提供实用的参考资料。无论你是新手…

即将被AI取代的工作

这个博客 100% 是由人类而不是机器人撰写的。至少在某种程度上&#xff0c;目前仍然需要内容作家。 你的工作怎么样&#xff1f;您是否想过人工智能&#xff08;AI&#xff09;是否有可能渗透到您生活的无形本质&#xff1f;您花费数年时间获得的所有知识、技能和经验是否会因…

golang学习笔记——go语言多文件项目运行的四种方式

go语言多文件运行技巧 有两个源码文件的go语言项目如何运行? go.modmain.go Trie.go 如何直接运行go run main.go会提示找不到文件。 # 在windows10下运行 $ go run main.go # command-line-arguments .\main.go:6:9: undefined: Constructor是真的找不到文件吗。其实不是。…

java基于SSM框架的在线学习系统设计与实现+vue论文

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

【面试宝典】图解ARP协议、TCP协议、UDP协议

一、ARP协议 二、TCP协议 三、UDP协议 四、TCP和UDP的区别

ZooKeeper 实战(二) 命令行操作篇

文章目录 ZooKeeper 实战(二) 命令行操作篇1. 服务端命令1.1. 服务启动1.2. 查看服务1.3. 重启服务1.4. 停止服务 2. 客户端命令2.1. 启动客户端2.2. 查看节点信息查看根节点详情 ls -s /添加一个watch监视器 ls -w /列举出节点的级联节点 ls -R / 2.3. 查看节点状态2.4. 创建节…

C++(9.5)——浅谈new和delete的实现原理

(注:本文是针对上篇文章中C内存管理的两个关键字)两个关键字原理的解析&#xff0c;对于这两个关键字的使用并没有什么影响&#xff0c;如果只想得知两个关键字的使用方法&#xff0c;则可以直接跳过本篇文章&#xff09; 目录 1. 引入&#xff1a; 2.operator new 与 operat…

【Linux笔记】进程等待与程序替换

一、进程的终止 1、进程退出码 在讲解进程的终止之前&#xff0c;先要普及一下进程的退出码概念。 我们父进程之所以要创建子进程&#xff0c;就是为了让子进程运行不一样的任务&#xff0c;那么对于子进程执行的这个任务执行完毕后的结果是否正确或者是否出差错&#xff0c…