推荐

新书推荐

AI 原生应用架构白皮书

通用人工智能(AGI)已是确定的事情,我们正通往超级人工智能(ASI)。

过去三年,人工智能技术正以前所未有的速度渗透千行百业。国务院日前也印发了《关于深入实施“人工智能+”行动的意见》,从顶层设计的高度为人工智能技术落地提供了关键指引。这既展现出重塑生产力的巨大潜力,也孕育着重构生产关系的无限可能,为全球数字经济的智能化升级注入全新动能。 为持续突破 A性能边界,大模型厂商通过技术路径迭代不断拓展三个核心维度:在模型参数层面,从千亿参数,逐步演进至万亿级参数规模,实现对复杂知识的深度拟合;在训练数据层面,从数百 GB 文本,拓展至数百 TB 甚至 EB 级的多模态数据集,且数据质量与领域适配性持续提升;在算力支撑层面,核心训练算力需求呈现指数级增长,其规模每2年增长约10倍(即“黄氏定律”),为模型性能突破提供了有力保障。随着模型的推理能力和多模态能力显著提升,这些技术进步不仅为通用人工智能的实现减少了障碍,也为产业智能化升级提供了核心驱动力。

随着大模型厂商将训练与使用成本压缩至原有水平的几十分之,AI应用开始跨越效果与成本的平衡临界点。与此同时,A原生应用开发范式逐步形成雏形,从模型调用到场景适配的开发逻辑日渐清晰,为 AI应用的深度探索奠定了坚实基础。自此,AI正式进入规模化应用的爆发阶段。数据显示,过去16个月内全球对 AlAgent(智能体)的关注热度增长达1088%,AI办公助手、数字员工、智能客服等应用如雨后春笋般涌现。这其中,以 Agentic Al为核心的技术路径逐渐成为主流,其通过自主规划、任务拆解与动态交互能力,推动 AI从工具化应用向自主化服务演进,加速实现对数字世界的智能重塑与高效接管。

随着大模型与感知、控制技术的深度融合,具身智能正从实验室走向产业实践。从工厂的智能协作机器人到家庭服务终端,其发展依托于数字空间的智能能力向物理世界的延伸。Physical Al作为这一进程的前沿方向,正推动 AI从数据驱动的数字决策,逐步拓展至对实体环境的感知规划与执行,进而实现对物理世界的智能化赋能与协同。

可见,大模型已完成从技术突破到产业应用的关键跨越,AI正深度融入并重塑数字世界,并持续向物理世界延伸,最终推动人类生产生活方式的根本性变革。

在这一进程中,云计算以“云智一体”的形态,成为连接数字与物理世界的核心底座。极致弹性的算力资源、秒级伸缩的推理服务、跨“云-边-端”的统一调度框架,以及面向 AlDevOps 的全生命周期工具链,使得应用的训练、推理和运维像水电一样随取随用;云原生安全、成本治理与多租户隔离,为企业级 AI应用提供了可信赖的运行环境;开放的模型即服务(Maas)生态,让任何组织都能以最低门槛接入前沿智能。云不再只是简单的资源池化,而是与智能算法融为一体,成为 AI能力不可替代的技术平台,让智能在数字世界和物理世界之间自由流动,实现真正的“碳硅共生”。

一蓑烟雨任平生:宋朝词人的风华人生

内容简介

◎内容简介 《一蓑烟雨任平生:宋朝词人的风华人生》选取李煜、晏殊、欧阳修、苏轼、李清照、唐琬等宋代词人的四十三篇传世名作,以轻松诙谐的笔调,用讲故事的方式,全面解读作品背后的深层意蕴,品味词人从儿女情长到金戈铁马的风华人生,领略他们的多情与豪迈、怅惘与无奈。全书融词、史、人于一体,既有诗酒人生,也有家国天下,可以说是一部有料有趣、精彩好看的 “诗词小说”。 慢读一卷诗书,走进一段传奇。


★ 编辑推荐
1.古诗词畅销书女作家徐若央全新力作。徐若央是中国古诗词畅销书作家,已出版作品《枕上诗书:一本书读懂最美古诗词》等,销量达到百万级别,深受读者喜爱。
2.一套书读懂最美宋词。“多情不如无情”的司马光、“手足之爱,平生一人”的苏轼与苏辙、半生飘零半生愁的李清照、“只有丹心难灭”的文天祥……作者以用讲故事的方式,选取宋代最具代表性的词人及其传世名作,品味他们从儿女情长到金戈铁马的风华人生,领略他们的多情与豪迈、怅惘与无奈。每首诗都是一段传奇,每首词都有它的故事。
3.四十三位伟大词人,四十三首经典词作,全书融词、史、人于一体,既有诗酒人生,也有家国天下,串联起大宋词坛一个个闪耀瞬间,还原了大宋王朝三百多年的跌宕风貌,可以说是一部有料、有趣、精彩好看的“诗词小说”。
4.古文零基础也能轻松入门。全书大部分诗词都附有部分疑难字词注解和生僻字注音,帮助读者顺畅阅读和理解古诗词,快速告别“诗词小白”。
5.本书文前精选8幅宋代绘画及书法作品,包括赵佶《瑞鹤图》、米芾《临定武兰亭卷》、王希孟《千里江山图》等,全四色印刷,带你饱览宋代大画家和大书法家的传世经典。
6.本书还倾情邀请插画师青云独家绘制15幅唯美古风花卉内插,让读者在阅读诗文时获得美的享受,也可以作为填色图,舒缓身心,解压治愈。
7.封面采用平装双封,外封唯美诗意,内封清新雅致,全四色精印,体现了宋代文学大家的恣肆昂扬与文雅风致,为读者带来内容、形式双高的经典诗词赏析读本。同时,随书附赠唯美古风书签1张,赏心悦目。

作者简介

徐若央 中国古诗词畅销书女作家。 著有《枕上诗书:一本书读懂最美古诗词》《枕上诗书:一本书读懂最美诗经》《纳兰容若词传:人生若只如初见》等畅销书。 若不能超凡脱俗,便要极尽红尘。

目录

  • 回首已是梦中客:李煜《虞美人》
  • 人间万事何时了:晏殊《浣溪沙》
  • 塞上秋思悲白发:范仲淹《渔家傲·秋思》
  • 道似无情却有情:司马光《西江月》
  • 莺莺燕燕一场梦:张先《千秋岁》
  • 一朝天子一朝臣:钱惟演《玉楼春》
  • 谁道飘零不可怜:柳永《八声甘州》
  • “鸳鸯”二字如何书:欧阳修《南歌子》
  • 红杏枝头正风华:宋祁《玉楼春·春景》
  • 何人聊赠江南春:舒亶《虞美人·寄公度》
  • 今夕何时长相伴:苏轼《水调歌头》
  • 与君世世为兄弟:苏辙《渔家傲·和门人祝寿》
  • 回首沧桑尽成愁:黄庭坚《南乡子》
  • 朝朝暮暮不见君:秦观《鹊桥仙》
  • 奈何往事尽难留:王雱《眼儿媚》
  • 半生浮沉谁人怜:王安石《桂枝香·金陵怀古》
  • 不负相思不负君:李之仪《卜算子》
  • 谁复挑灯夜补衣:贺铸《鹧鸪天》
  • 唱尽悲欢又一曲:晏几道《临江仙》
  • 未到白头相辜负:魏玩《卷珠帘》
  • 此情此意几时真:聂胜琼《鹧鸪天·寄李之问》
  • 此心若得一株雪:萧观音《回心院(其一)》
  • 京华倦客谁人留:周邦彦《兰陵王·柳》
  • 一晌贪欢终成梦:赵佶《燕山亭·北行见杏花》
  • 半生飘零半生愁:李清照《声声慢》
  • 壮志未酬身已老:陆游《诉衷情》
  • 满城春色宫墙柳:唐琬《钗头凤》
  • 千里家国千里梦:岳飞《小重山》
  • 少年不知愁滋味:辛弃疾《丑奴儿·书博山道中壁》
  • 乱世浮萍泪无言:淮上女《减字木兰花》
  • 金戈铁马入梦来:张孝祥《水调歌头·闻采石战胜》
  • 暗香疏影长相忆:姜夔《暗香》
  • 宁可抱香枝头老:朱淑真《蝶恋花·送春》
  • 红消香断有谁怜:严蕊《卜算子》
  • 问世间情为何物:张玉娘《南乡子·清昼》
  • 昨夜良辰遇良人:施酒监《卜算子·赠乐婉杭妓》
  • 开到荼蘼花事了:吴淑姬《小重山》
  • 苍天不闻天下事:王埜《西河》
  • 人生何处不相逢:叶李《失调名》
  • 人生自古谁无死:文天祥《酹江月·和友〈驿中言别〉》
  • 曾记芙蓉满宫阙:王清惠《满江红·题南京夷山驿》
  • 燕塞雪月无归年:华清淑《望江南》
  • 点滴风雨到天明:蒋捷《虞美人·听雨》

基于大模型的RAG应用开发与优化——构建企业级LLM应用

内容简介

《基于大模型的RAG应用开发与优化——构建企业级LLM应用》是一本全面介绍基于大语言模型的RAG应用开发的专业图书。本书共分为3篇:预备篇、基础篇和高级篇。预备篇旨在帮助你建立起对大模型与RAG的基本认识,并引导你搭建起RAG应用开发的基础环境;基础篇聚焦于经典RAG应用开发的核心要素与阶段,介绍关键模块的开发过程,剖析相关的技术原理,为后面的深入学习打下坚实的基础;高级篇聚焦于RAG应用开发的高阶模块与技巧,特别是在企业级RAG应用开发中的优化策略与技术实现,并探索了一些新型的RAG工作流与范式,旨在帮助你了解最新的RAG应用技术发展,掌握RAG应用的全方位开发能力。 《基于大模型的RAG应用开发与优化——构建企业级LLM应用》适合对大模型及RAG技术感兴趣的开发者、研究人员、产品经理及希望了解并掌握RAG应用开发能力的人阅读。无论你是进入AI领域的初学者,还是已经有一定基础的进阶者,都能从本书中找到适合自己的内容。

作者简介

严灿平
毕业于南京理工大学计算机系,南京大学工商管理硕士。先后就职于联创(后与亚信科技合并)担任软件工程师与设计师,甲骨文中国(Oracle)担任中国区企业架构部首席架构师,上海慧问信息科技有限公司担任合伙人兼技术总监。现为独立IT咨询顾问,公众号“AI大模型应用实践”主理人。拥有超过20年的企业软件从业经验,专注于企业软件架构设计、互联网时代传统行业的IT转型、人工智能与大数据技术在企业应用的创新等。 曾担任多项大型企业级软件系统核心架构师与咨询师,参与包括中国移动、中国电信等通信行业客户的核心业务运营支撑系统建设、智慧城市与政务行业互联网转型的IT咨询与规划。精通多种计算机软件开发技术与IT架构方法论,对移动互联网、大数据、人工智能在企业领域应用有深入的研究与实施经验。

目录

  • 预 备 篇
    • 第1章 了解大模型与RAG 3
      • 1.1 初识大模型 3
        • 1.1.1 大模型时代:生成式AI应用的爆发 3
        • 1.1.2 大模型应用的持续进化 4
        • 1.1.3 大模型是无所不能的吗 7
      • 1.2 了解RAG 11
        • 1.2.1 为什么需要RAG 11
        • 1.2.2 一个简单的RAG场景 12
      • 1.3 RAG应用的技术架构 14
        • 1.3.1 RAG应用的经典架构与流程 14
        • 1.3.2 RAG应用面临的挑战 17
        • 1.3.3 RAG应用架构的演进 18
      • 1.4 关于RAG的两个话题 20
        • 1.4.1 RAG与微调的选择 21
        • 1.4.2 RAG与具有理解超长上下文能力的大模型 24
    • 第2章 RAG应用开发环境搭建 27
      • 2.1 开发RAG应用的两种方式 27
        • 2.1.1 使用低代码开发平台 27
        • 2.1.2 使用大模型应用开发框架 29
      • 2.2 RAG应用开发环境准备 33
        • 2.2.1 硬件环境建议 33
        • 2.2.2 基础大模型 34
        • 2.2.3 嵌入模型 41
        • 2.2.4 Python虚拟运行环境 44
        • 2.2.5 Python IDE与开发插件 45
        • 2.2.6 向量库 47
        • 2.2.7 LlamaIndex框架 51
      • 2.3 关于本书开发环境的约定 51
  • 基 础 篇
    • 第3章 初识RAG应用开发 55
      • 3.1 开发一个最简单的RAG应用 55
        • 3.1.1 使用原生代码开发 56
        • 3.1.2 使用LlamaIndex框架开发 64
        • 3.1.3 使用LangChain框架开发 68
      • 3.2 如何跟踪与调试RAG应用 70
        • 3.2.1 借助LlamaDebugHandler 70
        • 3.2.2 借助第三方的跟踪与调试平台 73
      • 3.3 准备:基于LlamaIndex框架的RAG应用开发核心组件 77
    • 第4章 模型与Prompt 78
      • 4.1 大模型 78
        • 4.1.1 大模型在RAG应用中的作用 79
        • 4.1.2 大模型组件的统一接口 80
        • 4.1.3 大模型组件的单独使用 82
        • 4.1.4 大模型组件的集成使用 83
        • 4.1.5 了解与设置大模型的参数 84
        • 4.1.6 自定义大模型组件 85
        • 4.1.7 使用LangChain框架中的大模型组件 87
      • 4.2 Prompt 87
        • 4.2.1 使用Prompt模板 87
        • 4.2.2 更改默认的Prompt模板 88
        • 4.2.3 更改Prompt模板的变量 91
      • 4.3 嵌入模型 92
        • 4.3.1 嵌入模型在RAG应用中的作用 92
        • 4.3.2 嵌入模型组件的接口 93
        • 4.3.3 嵌入模型组件的单独使用 95
        • 4.3.4 嵌入模型组件的集成使用 97
        • 4.3.5 了解与设置嵌入模型的参数 97
        • 4.3.6 自定义嵌入模型组件 98
    • 第5章 数据加载与分割 100
      • 5.1 理解两个概念:Document与Node 100
        • 5.1.1 什么是Document与Node 100
        • 5.1.2 深入理解Document与Node 102
        • 5.1.3 深入理解Node对象的元数据 103
        • 5.1.4 生成Document对象 106
        • 5.1.5 生成Node对象 107
        • 5.1.6 元数据的生成与抽取 111
        • 5.1.7 初步了解IndexNode类型 115
      • 5.2 数据加载 116
        • 5.2.1 从本地目录中加载 117
        • 5.2.2 从网络中加载数据 123
      • 5.3 数据分割 129
        • 5.3.1 如何使用数据分割器 129
        • 5.3.2 常见的数据分割器 131
      • 5.4 数据摄取管道 145
        • 5.4.1 什么是数据摄取管道 145
        • 5.4.2 用于数据摄取管道的转换器 147
        • 5.4.3 自定义转换器 149
        • 5.4.4 使用数据摄取管道 150
      • 5.5 完整认识数据加载阶段 155
    • 第6章 数据嵌入与索引 156
      • 6.1 理解嵌入与向量 156
        • 6.1.1 直接用模型生成向量 157
        • 6.1.2 借助转换器生成向量 157
      • 6.2 向量存储 158
        • 6.2.1 简单向量存储 159
        • 6.2.2 第三方向量存储 161
      • 6.3 向量存储索引 164
        • 6.3.1 用向量存储构造向量存储索引对象 165
        • 6.3.2 用Node列表构造向量存储索引对象 166
        • 6.3.3 用文档直接构造向量存储索引对象 169
        • 6.3.4 深入理解向量存储索引对象 172
      • 6.4 更多索引类型 175
        • 6.4.1 文档摘要索引 175
        • 6.4.2 对象索引 177
        • 6.4.3 知识图谱索引 180
        • 6.4.4 树索引 186
        • 6.4.5 关键词表索引 187
    • 第7章 检索、响应生成与RAG引擎 190
      • 7.1 检索器 191
        • 7.1.1 快速构造检索器 191
        • 7.1.2 理解检索模式与检索参数 192
        • 7.1.3 初步认识递归检索 197
      • 7.2 响应生成器 199
        • 7.2.1 构造响应生成器 200
        • 7.2.2 响应生成模式 201
        • 7.2.3 响应生成器的参数 210
        • 7.2.4 实现自定义的响应生成器 212
      • 7.3 RAG引擎:查询引擎 214
        • 7.3.1 构造内置类型的查询引擎的两种方法 214
        • 7.3.2 深入理解查询引擎的内部结构和运行原理 217
        • 7.3.3 自定义查询引擎 218
      • 7.4 RAG引擎:对话引擎 221
        • 7.4.1 对话引擎的两种构造方法 221
        • 7.4.2 深入理解对话引擎的内部运行和运行原理 224
        • 7.4.3 理解不同的对话模式 227
      • 7.5 结构化输出 239
        • 7.5.1 使用output_cls参数 240
        • 7.5.2 使用输出解析器 241
  • 高 级 篇
    • 第8章 RAG引擎高级开发 247
      • 8.1 检索前查询转换 247
        • 8.1.1 简单查询转换 248
        • 8.1.2 HyDE查询转换 249
        • 8.1.3 多步查询转换 251
        • 8.1.4 子问题查询转换 254
      • 8.2 检索后处理器 259
        • 8.2.1 使用节点后处理器 259
        • 8.2.2 实现自定义的节点后处理器 260
        • 8.2.3 常见的预定义的节点后处理器 261
        • 8.2.4 Rerank节点后处理器 266
      • 8.3 语义路由 272
        • 8.3.1 了解语义路由 272
        • 8.3.2 带有路由功能的查询引擎 274
        • 8.3.3 带有路由功能的检索器 276
        • 8.3.4 使用独立的选择器 277
        • 8.3.5 可多选的路由查询引擎 278
      • 8.4 SQL查询引擎 280
        • 8.4.1 使用NLSQLTableQueryEngine组件 281
        • 8.4.2 基于实时表检索的查询引擎 283
        • 8.4.3 使用SQL检索器 285
      • 8.5 多模态文档处理 286
        • 8.5.1 多模态文档处理架构 286
        • 8.5.2 使用LlamaParse解析文档 288
        • 8.5.3 多模态文档中的表格处理 294
        • 8.5.4 多模态大模型的基础应用 297
        • 8.5.5 多模态文档中的图片处理 303
      • 8.6 查询管道:编排基于Graph的RAG工作流 308
        • 8.6.1 理解查询管道 309
        • 8.6.2 查询管道支持的两种使用方式 310
        • 8.6.3 深入理解查询管道的内部原理 313
        • 8.6.4 实现并插入自定义的查询组件 315
    • 第9章 开发Data Agent 321
      • 9.1 初步认识Data Agent 322
      • 9.2 构造与使用Agent的工具 323
        • 9.2.1 深入了解工具类型 324
        • 9.2.2 函数工具 325
        • 9.2.3 查询引擎工具 326
        • 9.2.4 检索工具 327
        • 9.2.5 查询计划工具 328
        • 9.2.6 按需加载工具 330
      • 9.3 基于函数调用功能直接开发Agent 331
      • 9.4 用框架组件开发Agent 335
        • 9.4.1 使用OpenAIAgent 335
        • 9.4.2 使用ReActAgent 336
        • 9.4.3 使用底层API开发Agent 338
        • 9.4.4 开发带有工具检索功能的Agent 340
        • 9.4.5 开发带有上下文检索功能的Agent 341
      • 9.5 更细粒度地控制Agent的运行 343
        • 9.5.1 分步可控地运行Agent 344
        • 9.5.2 在Agent运行中增加人类交互 346
    • 第10章 评估RAG应用 349
      • 10.1 为什么RAG应用需要评估 349
      • 10.2 RAG应用的评估依据与指标 350
      • 10.3 RAG应用的评估流程与方法 351
      • 10.4 评估检索质量 352
        • 10.4.1 生成检索评估数据集 352
        • 10.4.2 运行评估检索过程的程序 354
      • 10.5 评估响应质量 356
        • 10.5.1 生成响应评估数据集 356
        • 10.5.2 单次响应评估 358
        • 10.5.3 批量响应评估 360
      • 10.6 基于自定义标准的评估 362
    • 第11章 企业级RAG应用的常见优化策略 364
      • 11.1 选择合适的知识块大小 364
        • 11.1.1 为什么知识块大小很重要 364
        • 11.1.2 评估知识块大小 365
      • 11.2 分离检索阶段的知识块与生成阶段的知识块 369
        • 11.2.1 为什么需要分离 369
        • 11.2.2 常见的分离策略及实现 369
      • 11.3 优化对大文档集知识库的检索 378
        • 11.3.1 元数据过滤 + 向量检索 378
        • 11.3.2 摘要检索+ 内容检索 383
        • 11.3.3 多文档Agentic RAG 390
      • 11.4 使用高级检索方法 397
        • 11.4.1 融合检索 398
        • 11.4.2 递归检索 406
    • 第12章 构建端到端的企业级RAG应用 429
      • 12.1 对生产型RAG应用的主要考量 429
      • 12.2 端到端的企业级RAG应用架构 430
        • 12.2.1 数据存储层 431
        • 12.2.2 AI模型层 432
        • 12.2.3 RAG工作流与API模块 432
        • 12.2.4 前端应用模块 433
        • 12.2.5 后台管理模块 434
      • 12.3 端到端的全栈RAG应用案例 436
        • 12.3.1 简单的全栈RAG查询应用 436
        • 12.3.2 基于多文档Agent的端到端对话应用 455
    • 第13章 新型RAG范式原理与实现 478
      • 13.1 自纠错RAG:C-RAG 478
        • 13.1.1 C-RAG诞生的动机 478
        • 13.1.2 C-RAG的原理 479
        • 13.1.3 C-RAG的实现 480
      • 13.2 自省式RAG:Self-RAG 485
        • 13.2.1 Self-RAG诞生的动机 485
        • 13.2.2 Self-RAG的原理 486
        • 13.2.3 Self-RAG的实现 493
        • 13.2.4 Self-RAG的优化 506
      • 13.3 检索树RAG:RAPTOR 507
        • 13.3.1 RAPTOR诞生的动机 507
        • 13.3.2 RAPTOR的原理 508
        • 13.3.3 RAPTOR的实现 510

大模型应用开发极简入门:基于 GPT-4 和 ChatGPT

内容简介

本书为大模型应用开发极简入门手册,为初学者提供了一份清晰、全面的“最小可用知识”,带领大家快速了解GPT-4和ChatGPT的工作原理及优势,并在此基础上使用流行的Python编程语言构建大模型应用。通过本书,你不仅可以学会如何构建文本生成、问答和内容摘要等初阶大模型应用,还能了解到提示工程、模型微调、插件、LangChain等高阶实践技术。书中提供了简单易学的示例,帮你理解并应用在自己的项目中。此外,书后还提供了一份术语表,方便你随时参考。
准备好了吗?只需了解Python,你即可将本书作为进入大模型时代的启动手册,开发出自己的大模型应用。

编辑推荐

  • 【0门槛】人人都可以借力大模型,做出 AI 应用
  • 【简单】学习大模型应用开发的“Z小可用知识”
  • 【实操】学会写提示词、模型微调、使用 LangChain 等
  • 【实战】提供常用场景代码示例,方便快速学习
  • 【快速】2H 上手构建你的第一个原生 AI 应用
  • 【全面】了解 GPT-4 和 ChatGPT 的工作原理
  • 【品控】一线从业者翻译,注释说明内容更新
  • 【推荐】大模型一线创业者、应用技术专家推荐

作者简介

奥利维耶·卡埃朗(Olivier Caelen)
国际支付服务先驱Worldline公司机器学习研究员、布鲁塞尔自由大学机器学习博士,业余时间在布鲁塞尔自由大学教授机器学习课程。

玛丽-艾丽斯·布莱特(Marie-Alice Blete)
国际支付服务先驱Worldline公司研发部门软件架构师、数据工程师。她还负责维护开发者关系,并担任技术演讲嘉宾。

目录

  • 推荐序一 学习成为善用 AI 的人
  • 推荐序二 开启一段有趣、有启发、有收获的冒险旅程
  • 推荐序三 人人都要学会和 AI 相处
  • 推荐序四 AI 工程师:做新一轮智能革命的首批探索者
  • 推荐序五 进入智能应用的新时代
  • 推荐序六 AGI:不要旁观,要真正参与
  • 推荐序七 不要害怕被 ChatGPT 取代,要做第一批驾驭新技术的人
  • 译者序 没有谁天生就是 AI 工程师
  • 前言
  • 第 1 章 初识 GPT-4 和 ChatGPT
  • 第 2 章 深入了解 GPT-4 和 ChatGPT 的 API
  • 第 3 章 使用 GPT-4 和 ChatGPT 构建应用程序
  • 第 4 章 GPT-4 和 ChatGPT 的高级技巧
  • 第 5 章 使用 LangChain 框架和插件增强 LLM 的功能
  • 术语表
  • 作者简介

深度学习框架PyTorch:入门与实践

内容简介

《深度学习框架PyTorch:入门与实践》从多维数组Tensor开始,循序渐进地带领读者了解PyTorch各方面的基础知识。结合基础知识和前沿研究,带领读者从零开始完成几个经典有趣的深度学习小项目,包括GAN生成动漫头像、AI滤镜、AI写诗等。《深度学习框架PyTorch:入门与实践》没有简单机械地介绍各个函数接口的使用,而是尝试分门别类、循序渐进地向读者介绍PyTorch的知识,希望读者对PyTorch有一个完整的认识。

《深度学习框架PyTorch:入门与实践》内容由浅入深,无论是深度学习的初学者,还是第一次接触PyTorch的研究人员,都能在学习本书的过程中快速掌握PyTorch。即使是有一定PyTorch使用经验的用户,也能够从本书中获得对PyTorch不一样的理解。

作者简介

陈云
Python程序员、Linux爱好者和PyTorch源码贡献者。主要研究方向包括计算机视觉和机器学习。“2017知乎看山杯机器学习挑战赛”一等奖,“2017天池医疗AI大赛”第八名。 热衷于推广PyTorch,并有丰富的使用经验,活跃于PyTorch论坛和知乎相关板块。

目录

  1. PyTorch简介
    1. PyTorch的诞生
    2. 常见的深度学习框架简介
      1. Theano
      2. TensorFlow
      3. Keras
      4. Caffe/Caffe2
      5. MXNet
      6. CNTK
      7. 其他框架
    3. 属于动态图的未来
    4. 为什么选择PyTorch
    5. 星火燎原
    6. fast.ai 放弃Keras+TensorFlow选择PyTorch
  2. 快速入门
    1. 安装与配置
      1. 安装PyTorch
      2. 学习环境配置
    2. PyTorch入门第一步
      1. Tensor
      2. Autograd:自动微分
      3. 神经网络
      4. 小试牛刀:CIFAR-10分类
  3. Tensor和autograd
    1. Tensor
      1. 基础操作
      2. Tensor和Numpy
      3. 内部结构
      4. 其他有关Tensor的话题
      5. 小试牛刀:线性回归
    2. autograd
      1. Variable
      2. 计算图
      3. 扩展autograd
      4. 小试牛刀:用Variable实现线性回归
  4. 神经网络工具箱nn
    1. nn.Module
    2. 常用的神经网络层
      1. 图像相关层
      2. 激活函数
      3. 循环神经网络层
      4. 损失函数
    3. 优化器
    4. nn.functional
    5. 初始化策略
    6. nn.Module深入分析
    7. nn和autograd的关系
    8. 小试牛刀:用50行代码搭建ResNet
  5. PyTorch中常用的工具
    1. 数据处理
    2. 计算机视觉工具包:torchvision
    3. 可视化工具
      1. Tensorboard
      2. visdom
    4. 使用GPU加速:cuda
    5. 持久化
  6. PyTorch实战指南
    1. 编程实战:猫和狗二分类
      1. 比赛介绍
      2. 文件组织架构
      3. 关于__init__.py
      4. 数据加载
      5. 模型定义
      6. 工具函数
      7. 配置文件
      8. main.py
      9. 使用
      10. 争议
    2. PyTorch Debug 指南
      1. ipdb 介绍
      2. 在PyTorch中Debug
  7. AI插画师:生成对抗网络
    1. GAN的原理简介
    2. 用GAN生成动漫头像
    3. 实验结果分析
  8. AI艺术家:神经网络风格迁移
    1. 风格迁移原理介绍
    2. 用PyTorch实现风格迁移
    3. 实验结果分析
  9. AI诗人:用RNN写诗
    1. 自然语言处理的基础知识
      1. 词向量
      2. RNN
    2. CharRNN
    3. 用PyTorch实现CharRNN
    4. 实验结果分析
  10. Image Caption:让神经网络看图讲故事
    1. 图像描述介绍
    2. 数据
      1. 数据介绍
      2. 图像数据处理
      3. 数据加载
    3. 模型与训练
    4. 实验结果分析
  11. 展望与未来
    1. PyTorch的局限与发展
    2. 使用建议

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

内容简介

大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前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深度学习初学者、大模型开发初学者、大模型开发人员学习,也适合高等院校人工智能、智能科学与技术、数据科学与大数据技术、计算机科学与技术等专业的师生作为教学参考书。

作者简介

王晓华,高校计算机专业讲师,研究方向为云计算、大数据与人工智能。著有《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深度学习从零开始学》《深度学习的数学原理与实现》。

目录

目 录

第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

走向火焰:帝国、战争与沙皇俄国的终结

★ 沃尔夫森历史奖得主、“最伟大的俄国史学家之一”利芬继《俄国与拿破仑的决战》之后再出力作

★ 首部俄国中心视角的一战史

★ 重新审视俄国参与一战的前因后果,以及一战对俄国革命以及20世纪历史的影响

【内容简介】

1904~1920年的国际形势瞬息万变,最具代表性的事件就是第一次世界大战的爆发。虽然沙皇身边一些思虑深远的人认识到俄国在德国显著军事优势下的脆弱性,伟大的俄国需要采取决定性行动的声音仍然占据了主导。俄国统治者们认为,1914年俄国加入战争的决定是在保卫国家未来,实际上它带来了诸多问题,并对20世纪的俄国和世界造成了深远的影响。《走向火焰》以俄国为核心研究对象,为第一次世界大战的起源、世界史视野下俄国革命发生原因的分析提供了一种新的俄国视角。

【本书获誉】

不仅是最伟大的俄国史学家之一,也是一名伟大的作家。

——安东尼·比弗,《独立报》

彻底改变我们对拿破仑为何失败的设想。

——安德鲁·罗伯茨,《每日电讯报》年度图书作者

精彩叙事的胜利……立刻成为经典作品,一项非凡、卓越、内容丰富的成就。

——西蒙·塞巴格·蒙蒂菲奥里

(他绘制了)宏大又细致的历史画卷……他无可避免地触及当代权力政治的神经点。

——《经济学人》

通过研究一批关于俄国如何走向战争的新证据,这部作品讲述了一批聪明又愚蠢的人如何毁掉自己的国家,并给自己带来灾难的故事。

——维克多·塞巴斯蒂安,《星期日泰晤士报》