zl程序教程

您现在的位置是:首页 >  其他

当前栏目

2020年重磅喜讯!热烈祝贺王家林大咖人工智能领域经典著作《企业级AI技术内幕:深度学习框架开发+机器学习案例实战+Alluxio解密》 清华大学出版社发行上市!

2023-09-27 14:26:48 时间

2020年重磅喜讯!热烈祝贺王家林大咖人工智能领域经典著作《企业级AI技术内幕:深度学习框架开发+机器学习案例实战+Alluxio解密》 清华大学出版社发行上市!

大咖心声

在这里插入图片描述
在这里插入图片描述

新书图片

在这里插入图片描述
在这里插入图片描述

新书介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内容简介

《企业级AI技术内幕:深度学习框架开发+机器学习案例实战+Alluxio解密》分为盘古人工智能框架开发专题篇、机器学习案例实战篇、分布式内存管理Alluxio解密篇,分别对人工智能开发框架、机器学习案例及Alluxio系统进行透彻解析。
  盘古人工智能框架开发专题篇,通过代码讲解多层次神经网络、前向传播算法、反向传播算法、损失度计算及可视化、自适应学习和特征归一化等内容。
  机器学习案例实战篇,选取机器学习中具代表性的经典案例,透彻讲解机器学习数据预处理、简单线性回归、多元线性回归、多项式回归、支持向量回归、决策树回归、随机森林回归等回归算法,逻辑回归、k近邻算法、支持向量机、朴素贝叶斯、决策树分类、随机森林分类等分类算法、k均值聚类、层次聚类等聚类算法,以及关联分析算法,并对回归模型、分类模型进行性能评估。
  分布式内存管理Alluxio解密篇,详细讲解Alluxio架构、部署、底层存储及计算应用、基本用法、运行维护等内容。

作者简介

王家林,Apache Spark执牛耳者,现工作于硅谷的AI实验室,专注于NLP框架,超过20本Spark、Al、Android书籍作者,Toastmasters International Division Director ,GRE博士入学考试连续两次满分获得者
  
段智华,就职于中国电信股份有限公司上海分公司,系统架构师,CSDN博客专家,专注于Spark大数据技术研发及推广,跟随Spark核心源码技术的发展,深入研究Spark 2.1.1版本及Spark 2.2.0版本的源码优化,对Spark大数据处理、机器学习等技术有丰富的实战经验和浓厚兴趣。

图书基本信息

书名: 企业级AI技术内幕:深度学习框架开发+机器学习案例实战+Alluxio解密

出版社: 清华大学出版社

出版日期 2020

ISBN号: 9787302561774

编辑推荐

全代码讲解深度学习框架开发,

案例式讲解机器学习案例,

透彻剖析开源AI和大数据存储编排平台Alluxio

新书目录

第1篇 盘古人工智能框架开发专题篇
第1章 导论:为什么人工智能是必然的未来 3
1.1 为什么一定需要人工智能 3
1.2 人工智能为何如此强大 4
1.3 学习人工智能的正道 6
1.4 人工智能、机器学习、深度学习之间的关系 6
1.5 人工智能的10大经典应用场景 7
1.6 人工智能在海量数据处理中不可替代的原因 9
1.7 本书开发环境的安装 10
第2章 盘古人工智能框架多层次神经网络的实现 12
2.1 盘古人工智能框架 12
2.1 实现神经网络的节点结构 17
2.2 实现神经网络层之间节点的连接 25
2.3 如何初始化神经网络的权重 29
2.4 实现多个隐藏层 30
第3章 盘古人工智能框架中的前向传播功能 35
3.1 前向传播功能 35
3.1.1 从TensorFlow的可视化运行过程理解前向传播功能 35
3.1.2 从架构层面理解前向传播功能 37
3.1.3 理解前向传播原理 37
3.2 在每个节点上增加数据的输入和计算结果 39
3.2 实现前向传播算法 45
3.3 使用Sigmoid函数作为激活函数 49
3.4 测试前向传播算法并分析计算结果 51
第4章 盘古人工智能框架的反向传播功能 54
4.1 深度学习是如何学习的 54
4.2 实现反向传播算法 60
4.3 反向传播算法测试及分析计算结果 67
第5章 盘古人工智能框架的损失度计算及其可视化 71
5.1 关于损失度的思考——所有人工智能框架终身的魔咒 71
5.2 编码实现损失度并进行测试 74
5.3 损失度可视化运行结果 77
第6章 通过自适应学习和特征归一化优化盘古人工智能框架 81
6.1 盘古人工智能框架性能测试及问题剖析 81
6.2 使用特征归一化进行性能优化 87
6.3 使用自适应学习进行性能优化 91
第7章 盘古人工智能框架实现方法大总结 96
7.1 自研盘古人工智能框架性能测试 96
7.2 神经网络实现及和TensorFlow的对比 97
7.3 前向传播算法实现及其和TensorFlow的算法对比 98
7.4 反向传播算法实现及与TensorFlow的对比 99
7.5 损失度计算实现与TensorFlow的对比 100
7.6 人工智能盘古框架源码 103
第8章 使用矩阵的方式编写人工智能框架 115
8.1 使用矩阵编写人工智能框架 115
8.2 测试及分析计算结果 121
8.3 对使用矩阵方式编写的人工智能框架进行优化 125
第9章 使用四种性能优化矩阵编写人工智能框架 129
9.1 梯度下降陷阱 130
9.2 增加和调整alpha参数 131
9.3 人工智能框架的改进优化 137
第10章 人工智能及感知元解密 146
10.1 人工智能是什么,怎么做,前景为什么好 146
10.2 计算机视觉面临的困境及突破 148
10.3 感知器解密 149
10.4 计算机图像识别 151
第11章 神经网络结构及Sigmoid函数 159
11.1 神经网络实现与非门 159
11.2 神经网络为什么能够完成各类计算 160
11.3 神经网络的结构解密 162
11.4 Sigmoid函数背后的设计和实现密码 163
11.5 Sigmoid函数的弱点及改进 166
第12章 用神经网络识别手写数字 173
12.1 神经网络识别手写数字的原理 173
12.2 为何识别数字的三层神经网络输出层为10个神经元 175
12.3 MINST数据集图片库解析 176
12.4 使用PyTorch框架编码实现MNIST手写数字识别程序 178
第13章 人工智能框架编写中关于损失度及梯度下降的设计与实现 187
13.1 损失函数的本质剖析 187
13.2 梯度下降的本质 187
13.3 随机梯度下降法的设计和实现 189
13.4 通过一个简单示例理解梯度下降 191
第14章 MNIST数字识别 194
14.1 MNIST数据的加载 194
14.2 神经网络的初始化 199
14.3 前向传播和反向传播函数 201
14.4 小批量随机梯度下降 204
14.5 损失函数及评估函数 205
14.6 超参数调优 206
第15章 从矩阵视角剖析神经网络的运行过程 211
15.1 点积和外积的本质 211
15.2 从矩阵的视角剖析神经网络的计算过程 213
15.3 神经网络中的损失函数 215
15.4 人工智能框架神经网络四个核心数学公式 216
第16章 Spark+PyTorch开发应用 221
16.1 PyTorch深度学习框架案例 221
16.1.1 案例的应用场景解析 221
16.1.2 案例的数据分析及预处理 221
16.1.3 PyTorch深度学习案例实战 226
16.1.4 PyTorch预训练BERT模型解读 249
16.2 Spark+Alluxio+PyTorch综合开发案例 258
第2篇 深度学习案例实战篇
第17章 机器学习数据的预处理 271
17.1 预处理机器学习使用的数据的原因 271
17.2 数据的获取及分析 271
17.3 使用第三方库(NumPy、Pandas、Matplotlib)预处理数据 272
17.4 导入数据 273
17.5 采用面向对象模块化的方式预处理数据 275
17.6 实际生产环境中如何处理数据缺失的情况 276
17.7 分类数据处理 280
17.8 把数据分为训练集和测试集 283
17.9 特征缩放的意义及具体方法 285
第18章 简单线性回归 289
18.1 简单线性回归简介 289
18.2 案例的应用场景解析 289
18.3 对案例使用的数据进行分析及预处理 290
18.4 简单线性回归案例实战 293
第19章 多元线性回归 298
19.1 多元线性回归简介 298
19.2 多元线性回归模型案例的应用场景解析 298
19.3 对案例使用的数据进行分析及预处理 298
19.4 多元线性回归案例实战 300
19.5 通过反向消元法找到风险投资机构在对创业公司投资时最关心的因素 308
第20章 多项式回归 322
20.1 多项式回归简介 322
20.2 案例的应用场景解析 323
20.3 对案例使用的数据进行分析及预处理 324
20.4 多项式回归案例实战 325
第21章 支持向量回归 332
21.1 支持向量回归简介 332
21.2 案例的应用场景解析及数据的预处理 333
21.3 支持向量回归案例实战 334
第22章 决策树回归 341
22.1 决策树回归简介 341
22.2 案例的应用场景解析及数据的预处理 341
22.3 决策树回归案例实战 344
第23章 随机森林回归 351
23.1 随机森林回归简介 351
23.2 案例的应用场景解析及数据的预处理 351
23.3 随机森林回归案例实战 352
第24章 对于回归模型的性能进行评估 359
24.1 理解拟合度 359
24.2 理解改进的拟合度 360
24.3 对回归模型的性能进行评估 362
24.4 剖析线性回归模型的决定系数 371
第25章 逻辑回归 375
25.1 逻辑回归简介 375
25.2 案例的应用场景解析及数据的预处理 376
25.3 逻辑回归案例实战 382
第26章 k近邻算法 389
26.1 k近邻算法简介 389
26.2 案例的应用场景解析及数据的预处理 390
26.3 k近邻算法案例实战 392
第27章 支持向量机 402
27.1 支持向量机简介 402
27.2 案例的应用场景解析及数据的预处理 406
27.3 支持向量机案例实战 406
第28章 支持向量机内核 414
28.1 支持向量机内核简介 414
28.2 进行高维映射 414
28.3 内核的使用技巧 416
28.4 不同类型的内核函数 419
28.5 案例的应用场景解析及数据的预处理 420
28.6 支持向量机内核案例实战 420
第29章 朴素贝叶斯算法 423
29.1 贝叶斯算法简介 423
29.2 朴素贝叶斯算法简介 425
29.3 案例的应用场景解析及数据的预处理 428
29.4 朴素贝叶斯算法案例实战 429
第30章 决策树分类 436
30.1 决策树分类简介 436
30.2 案例的应用场景解析及数据的预处理 438
30.3 决策树分类案例实战 439
第31章 随机森林分类 446
31.1 随机森林分类简介 446
31.2 案例的应用场景解析及数据的预处理 446
31.3 随机森林分类案例实战 448
第32章 对分类进行性能评估 457
32.1 假正例及假负例解读 457
32.2 混淆矩阵解密 460
32.3 准确性悖论解密 461
32.4 累积精度曲线解密 461
第33章 k均值聚类 465
33.1 k均值聚类简介 465
33.2 k均值聚类中分组数目选取及随机初始化陷阱 468
33.2.1 k均值聚类场景 468
33.2.2 k均值聚类随机初始化陷阱 469
33.2.3 k均值聚类++中初始中心点选取及分组数目技巧 469
33.3 案例的应用场景解析及数据的预处理 471
33.4 k均值聚类案例实战 472
第34章 层次聚类 480
34.1 层次聚类简介 480
34.2 层次聚类中的树状图工作机制解密 482
34.3 树状图在层次聚类中的运用 485
34.4 案例的应用场景解析及数据的预处理 486
34.5 层次聚类案例实战 487
第35章 关联分析算法 492
35.1 关联分析算法简介 492
35.2 案例的应用场景解析 494
35.3 关联分析算法案例实战 495
第3篇 分布式内存管理Alluxio解密篇
第36章 Alluxio概述 505
36.1 Alluxio简介 505
36.2 Alluxio架构 507
36.3 Alluxio数据流 509
36.4 Alluxio统一存储与抽象 513
36.5 远程数据加速 514
36.6 Alluxio 2.0.0新特点 514
第37章 Alluxio部署 516
37.1 在本地机器上运行Alluxio 517
37.2 集群模式部署Alluxio 524
37.3 在Docker上运行Alluxio 528
37.4 Alluxio集群Master容错部署 541
37.5 Alluxio Master及Job Master启动脚本解读 549
37.6 Alluxio Worker及Job Worker启动脚本解读 555
第38章 Alluxio底层存储及应用 558
38.1 Alluxio在深度学习框架PyTorch中的应用 558
38.1.1 FUSE环境部署(Python、libfuse、Meson、Ninja) 560
38.1.2 Alluxio FUSE文件目录测试 564
38.1.3 基于Alluxio+PyTorch的深度学习案例 567
38.2 Apache Spark使用Alluxio 575
38.2.1 Apache Spark 2.4.1安装部署 576
38.2.2 在Alluxio上运行Apache Spark 578
38.3 Alluxio在Apache Hadoop MapReduce上的应用 584
38.4 在Alluxio上运行Apache Hive 588
38.4.1 在Alluxio上创建Hive表 588
38.4.2 在Alluxio中使用已经存储在HDFS中的表 592
38.4.3 将Alluxio设置为Hive的默认文件系统 596
第39章 Alluxio运行与维护 598
39.1 管理员命令行接口 598
39.2 Alluxio度量指标系统 601
39.2.1 Alluxio度量指标配置文件 601
39.2.2 Alluxio 度量指标评价体系 604
39.3 Alluxio度量指标系统代码解读 606
39.3.1 Alluxio度量指标系统注册源代码解读 607
39.3.2 Alluxio度量指标系统Sink源码解读 615
第40章 Alluxio用户命令及配置项设置 624
40.1 Alluxio命令行接口 624
40.2 Alluxio配置项设置 625

前言/序言

2016年3月,阿尔法狗击败了我们这个星球上最出色的围棋选手,其特殊之处在于阿尔法狗下围棋时使用了一种设计人员没有想到的策略,这是人工智能里程碑式的胜利。
  2017年7月,国务院正式发布《新一代人工智能发展规划》,明确把人工智能发展作为国家战略。人工智能是21世纪的三大尖端技术(基因工程、纳米工程、人工智能)之一。国务院发布人工智能分三步走的规划中指出:到2030年,中国的人工智能理论、技术与应用总体达到世界领先水平,成为世界主要人工智能创新中心,智能经济、智能社会取得明显成效,为跻身创新型国家前列和经济强国奠定重要基础。
  如何驾驭人工智能时代的技术?如何掌握人工智能各种具体的实战技术?如何使用统一内存技术驾驭任意类型的数据?本书基于实践尝试给予这些问题答案。
  (1)盘古人工智能框架开发专题篇,包含第1~16章,以图文并茂的形式,带领读者一行一行地编写代码来实现当今主流深度学习框架的核心技术,通过实践解密PyTorch和TensorFlow等最流行技术背后的设计和实现,并讲解深度学习框架在电信运营方面的应用案例。
  (2)机器学习案例实战篇,包含第17~35章,选取机器学习开发中最具代表性的经典学习案例,透彻讲解机器学习数据预处理,简单线性回归、多元线性回归、多项式回归、支持向量回归、决策树回归、随机森林回归等回归算法,逻辑回归、k近邻算法、支持向量机、朴素贝叶斯算法、决策树分类、随机森林分类等分类算法,k均值聚类、层次聚类等聚类算法,以及关联分析算法,并分别对回归模型、分类模型进行性能评估。
  (3)分布式内存管理Alluxio解密篇,包含第36~40章,详细讲解Alluxio架构、部署、底层存储及计算应用、基本用法、运行维护等内容。
  基于美国最流行的Heuristic learning(启发式学习)理念,本书所有的内容都是按照具体的问题场景、核心原理、解决方案的顺序组织,均以动手实践的方式一步步驱动学习者流畅地完成,带来无痛苦的学习体验。
  读者在阅读本书的过程中,如发现任何问题或有任何疑问,可以加入本书的阅读群(QQ:418110145)讨论,会有专人答疑。同时,该群也会提供本书所用案例源代码及本书的配套学习视频。笔者的新浪微博是http://weibo.com/ilovepains/,欢迎大家在微博上与我交流。
  王家林 2020年 8月

新书案例

案例一:自研盘古人工智能框架

自研盘古人工智能框架案例带领大家开发出自己的深度学习框架,一行一行的写代码,一行一行的测试,自己实现人工智能深度学习的框架。

自研盘古人工智能框架案例实现深度学习神经网络的核心算法功能:多层次神经网络的实现、前向传播算法、反向传播算法、损失度计算及性能调优。我们自己写的深度学习框架的内核机制原理和TensorFlow、PyTorch是一致的。

自研盘古人工智能框架多层次神经网络的实现:实现神经网络的节点结构、实现神经网络层之间节点的连接、如何初始化神经网络的权重及人工智能论文阅读经验分享、实现多个隐藏层。

自研盘古人工智能框架中编码实现前向传播功能:在每个节点上增加数据的输入和计算结果、实现前向传播算法、使用sigmoid函数作为激活函数 、前向传播算法测试并分析计算结果。

自研盘古人工智能框架编码实现反向传播算法功能:深度学习是具体是如何学习的、实现反向传播算法、反向传播算法测试并分析计算结果。

自研盘古人工智能框架编码实现损失度的计算:关于损失度的思考,损失度是所有人工智能框架终身的魔咒、编码实现损失度并进行测试、损失度可视化运行结果 。

通过自适应学习和特征归一化优化自研盘古人工智能框架:自研盘古人工智能框架性能测试及问题剖析、使用特征归一化进行性能优化、采用自适应学习进行性能优化编码。

自研盘古人工智能框架大总结:自研盘古人工智能框架性能测试、神经网络实现及和TensorFlow的对比、前向传播算法实现及其和TensorFlow对比、反向传播算法实现及其和TensorFlow对比、损失度计算实现及其TensorFlow对比、人工智能盘古框架源码。

通过自研盘古人工智能框架案例深入浅出、图文并茂的讲解,透彻剖析深度学习神经网络的思想及原理,带领读者轻松入门深度学习。同时,在自研盘古人工智能框架案例的基础上,对代码进行版本迭代,使用矩阵编写人工智能框架实战,通过四种方式进行性能优化,对感知神经元进行彻底解密,讲解神经网络能够完成各种计算模式的根本原因、用神经网络识别手写数字内幕解密、当今和未来人工智能技术的灵魂近似值及因果关系、损失度及梯度下降的设计与实现、关于梯度下降面对上百万个变量的处理方案、随机梯度下降法及在线机器学习思想揭秘、Mnist图片识别详解、从矩阵视角剖析神经网络反向传播的运行过程、人工智能框架神经网络运行过程中四个核心数学公式的本质剖析。

自研盘古人工智能框架案例使读者能深刻理解深度学习神经网络的精髓及本质,进而理解TensorFlow、PyTorch等人工智能框架的运行机制及原理,将深度学习应用于企业实战。

案例二:基于Pytorch的自然语言处理模型(BERT)的应用案例

本案例是通信行业内部软件人才竞赛的一个比赛案例,基于大数据的甩单订单类型自动识别,我们采用基于Pytorch的自然语言处理模型(BERT)来实现。

通信行业内部竞赛分为2个阶段:初赛根据甩单数据,预测分类是生成一张订单还是多张订单;复赛在预测订单为单订单或多订单的基础上,进一步预测生成订单的具体数量、行项目数量和业务类型。

传统的机器学习文本分类算法首先提取文本的特征(Bag、TF-IDF等),然后将抽取的文本特征输入模型进行训练,常用的机器学习分类器模型包括Bag Naive Bayes、TF-IDF Naive Bayes、TF-IDF SVM、TF-IDF LGB、TF-IDF XGB、Model Ensemble等算法;深度学习算法在文本分类的应用,包括CNN等模型。我们体验了基于Pytorch版本的BERT模型,在文本分类预测时取得了较不错的得分。本案例在通信行业内部竞赛中荣获鼓励奖。

BERT(Bidirectional Encoder Representations from Transformers)是Google 人工智能团队2018年底开源的NLP (Natural Language Processing)自然语言处理模型,Jacob Devlin, Ming-Wei Chang, Kenton Lee和Kristina Toutanova发布论文《Pre-training of Deep Bidirectional Transformers for Language Understanding》。

我们深入研究了Harvard NLP实验室Annotated-Transformer算法源码,Harvard NLP对BERT模型的多注意力模型进行了注释版本的代码复现,让我们对BERT的注意力模型机制有了深入的理解。注意力模型是一个标准编码器-解码器结构,每层有两个子层:第一层是多头自注意机制,第二层是一个简单的、位置导向的、全连接的前馈网络。Decoder 解码器也由一个N=6个相同层的堆栈组成,每层由自注意力、源注意力和前馈网络组成,即在每个编码器层中的两个子层外,解码器还额外插入第三个子层,该子层在编码器堆栈的输出上执行多头注意力关注,解码器与编码器类似,使用残差连接解码器的每个子层,然后进行层归一化。

本案例基于通信行业竞赛官方提供的三个数据文件:订单数据-训练数据、甩单数据-训练数据、甩单数据(测试样本集),详细讲解了BERT模型在深度学习应用的每一个步骤,包括:收集数据、数据预处理、选择模型、模型训练、模型测试、参数调优等内容,将带领读者对自然语言处理BERT模型进行探索体验。

案例三:人力资源主管正确评估新招聘员工薪水的案例

在机器学习案例实战篇中,选取机器学习开发中最具有代表的经典学习案例,透彻讲解机器学习数据预处理、简单线性回归、多元线性回归、多项式回归、支持向量回归、决策树回归、随机森林回归等回归算法,逻辑回归、K最近邻算法、支持向量机、朴素贝叶斯、决策树分类、随机森林分类等分类算法,K-均值聚类、层次聚类、关联分析算法,并分别对回归模型、分类模型进行性能评估。

本书详细讲解了机器学习算法模型在各案例的应用,例如:工作年限与工资之间的关系案例、人力资源主管正确评估新招聘员工薪水的案例、风投机构评估创业公司的案例、社交网络上进行汽车销售推荐的案例、商场会员信息聚类的案例、关联分析算法案例等。

在人力资源主管正确评估新招聘员工薪水的案例中,实现的核心功能是从机器学习应用算法的角度,根据上一家公司提供的工资级别,人力资源主管预测出应聘者的薪水。例如:如果级别P6是15万美金,级别P7是20万美金,如果应聘者称薪水在P6和P7之间,应聘者可能在P6级别已经工作2年了,应聘者提出要16.5万美金,人力资源主管如何评估工资?从算法的角度,P6与P7之间是一个区间范围,我们利用一根平滑的曲线连接P6与P7,从P6到P7可能需要5年的时间,如果应聘者在P6与P7之间,16.5万美金是合理的,也可能是17万美金,或者是17.5万美金,这是机器学习算法的预测。

人力资源主管正确评估新招聘员工薪水的案例中,各机器学习算法模型的比较:

(1) 简单线性回归算法。P6到P7之间的应聘者,线性回归算法的预测工资在35万左右;而对于CEO,CEO的工资本来是100万美金,预测工资只能给65万美金,这个预测结果比较离谱。

(2) 多项式回归算法。采用多项式回归算法,对于CEO给出了一个很合理的工资,工资为100万美金。对于P6到P7之间的应聘者,预测工资在16.5万美金左右,是比较合理的。

(3) 支持向量回归算法。支持向量回归算法对于P6.5级别预测的工资是25.27万美金,由于支持向量回归算法有分类的功能,从实质上讲,CEO和其他的级别不是一个常规的薪水上的关系,因此,发现CEO与员工的工资状态都不一样,这是可以理解的。

(4) 决策树回归算法。决策树回归算法对P6.5级别的预测工资为15万美金,应聘者提出不低于16.5万美金,这也是合理的。决策树在级别P6和级别P7之间求了一个平均值,对特征进行了不同类别的分类,计算很友好。

(5) 随机森林回归算法。随机森林会用每一棵决策树进行预测,然后求每棵决策树预测值的平均值,15.83万年薪这个预测结果比较接近实际情况,因为应聘者的要求是不能低于16.5万美金,可能实际工资情况是16万美金,换工作加了5000美金。

通过人力资源主管正确评估新招聘员工薪水的案例,读者能简单、直观的比较机器学习算法模型的差异,从算法的角度,理解机器学习算法模型对于员工薪水的预测。

案例四: 基于Alluxio+Pytorch的深度学习案例

Alluxio是基于内存的虚拟分布式存储系统,Alluxio项目起源于美国加州大学伯克利分校AMPLab实验室,Alluxio统一了数据访问方式、为上层计算框架和底层存储系统构建了桥梁,应用程序只需要连接Alluxio访问存储在任何底层存储系统中的数据。本书详细讲解Alluxio架构、部署、底层存储及计算应用、基本用法、运行维护及商业案例等内容。

基于Alluxio+Pytorch的深度学习案例中,要实现核心功能是将深度学习框架Pytorch与Alluxio结合起来,Alluxio作为中间统一数据层,Alluxio加载底层存储系统的数据,为上层的深度学习框架层Pytorch提供Alluxio Fuse接口加载数据。案例使用两个LSTM单元学习从不同相位开始的正弦波时序信号,通过深度学习LSTM模型预测未来时序的信号。

(1) 训练数据预先挂载到Alluxio系统。Alluxio提供了统一命名空间系统,本地文件、
云平台、HDFS等文件系统度可以挂载到Alluxio中。

(2) 深度学习框架通过Alluxio Fuse获取本地文件。对于深度学习应用开发者,Alluxio
的底层挂载是透明的,深度学习应用只需与Alluxio交互,就可以从任何数据源获取训练数据,获取云存储(AWS S3,Azure Blob Store,Google云)数据文件的方式,跟获取本地文件及目录的方式一样,简化了数据的获取方式。

(3) Alluxio将网络远程数据在本地进行缓存。Alluxio提供常用数据的本地缓存,因此不需要通过网络IO访问数据,降低深度学习训练成本,加快训练时间。

随着人工智能技术的发展,深度学习及增强学习在各领域广泛应用,在数据访问及数据存储时可能面临一些问题及挑战:

 训练数据无法直接加载。数据分布于各存储系统(HDFS、本地文件、云平台等),深度学习框架(Tensorflow、Pytorch)可以直接加载一些存储系统的文件,但并不能直接获取所有存储系统中的数据,需进行数据的预处理和转换,导致数据加载效率较低。

 新型储存系统数据获取困难。云存储(AWS S3,Azure Blob Store,Google云)及分布式文件系统(HDFDS、ceph)应用越来越广泛,对于每一个新型的存储方式,用户都需深入学习储存系统的配置方式及使用方法,了解存储系统的基本原理及实现机制,在深度学习应用中对于每个存储系统配置相应的适配接口,使得数据获取困难。

 远程存储数据网络开销高及耗时。在分布式云平台系统,分布式计算平台与分布式存储平台可能位于不同的位置集群,深度学习框架通获取远程存储系统数据,会面临网络IO带宽的瓶颈及增加处理远程数据的时间。

对于以上问题,通过Alluxio系统可以帮助解决深度学习的数据访问问题。

案例五:Spark+AI实战案例

Spark+AI实战案例全新阐述大数据在人工智能领域的应用内容,包括深度学习动手实践:人工智能下的深度学习、深度学习数据预处理、单节点深度学习训练、分布式深度学习训练;Spark+PyTorch案例实战:PyTorch在Spark上的安装、使用PyTorch实战图像识别、PyTorch性能调优最佳实践;Spark+TensorFlow实战:TensorFlow在Spark上的安装、TensorBoard解密、Spark TensorFlow的数据转换;Spark上的深度学习内核解密:使用TensorFlow进行图片的分布式处理、数据模型源码剖析、逻辑节点源码剖析、构建索引源码剖析、深度学习下Spark作业源码剖析、性能调优最佳实践。

Spark+AI案例实战包括:Petastorm 数据预处理案例、Tensorflow TFRecord 格式转换案例、PyTorch+GPU单节点的Mnist数字识别案例、Spark+PyTorch+HorovodRunner+CNN的Mnist数字分布式训练案例、Spark+Tensorflow+HorovodEstimator的Mnist数字分布式训练案例、Spark+PyTorch+ResNet的鲜花图像数据识别案例、 Spark+TensorFlow+TensorBoard的Mnist数字识别案例、Spark+TensorFlow+Inception3海洋图片识别案例。

在Spark+PyTorch+ResNet的鲜花图像数据识别案例中:基于ResNet-50网络模型,对鲜花图像数据(郁金香、向日葵、玫瑰、蒲公英、菊花)进行分布式图像识别实战。

(1) 准备预训练的模型和鲜花集数据。从torchvision.models加载预训练的ResNet-50模型,将鲜花数据下载到databricks文件系统空间。 Databricks鲜花文件映射到Driver及Worker节点上的文件,为深度学习工作负载提供高性能的I/O。

(2) 在Spark Driver 节点上加载ResNet50预训练模型,并将ResNet50模型的状态及 参数广播到Spark Executor节点。

(3) 通过Pandas UDF进行模型预测。其中预测分类值是一个大小为1000的数组,根据ResNet-50模型预测1000个分类的概率。案例中鲜花的分类实际为5类:郁金香、向日葵、玫瑰、蒲公英、菊花,改写ResNet-50模型代码进行优化,得到5个类别的预测值。

 微调ResNet-50模型卷积神经网络:自定义全连接层,使用预训练的网络ResNet-50模型来初始化自己的网络,而不是随机初始化模型参数,然后微调卷积神经网络的所有层参数。

 将ResNet-50模型卷积神经网络作为固定的图像特征提取器。自定义全连接层,在ResNet-50网络模型中,冻结除最后一层以外的所有网络(设置requires_grad == False,反向传播时不计算梯度),只重新训练最后的全连接层参数(只有这层参数会在反向传播时更新参数)。

Spark+AI案例基于Databricks云平台,读者按照本书的内容,可以轻松构建、训练和部署深度学习应用程序,可以轻松地使用深度学习的框架,如Tensorflow、Pytorch等,可以在强大的GPU硬件上大规模运行,支持多种编程语言,支持实时数据集的深度学习模型训练。

新书网购链接

《Spark大数据商业实战三部曲》第二版购书链接
《企业级AI技术内幕:深度学习框架开发+机器学习案例实战+Alluxio解密》 购书链接

新书资讯

1.微博:王家林大咖微博
2.新书代码: GitHub代码库
3.微信视频号:段智华
4.知识星球:Spark+AI清华大学新书
5.微信群:SPARK+AI清华新书读者群
QQ: Spark+AI书籍阅读群 418110145
6.CSDN博客