登录后再学习,可使用学习中心、个人中心等更完善的课程服务。立即登录>
关闭

英特尔Parallel Studio XE 在腾讯云上的实践:英特尔数据分析加速库DAAL入门及应用

  • 3 课时
  • 245 学过
  • 8 分
GPU 云服务器机器学习数据处理

课程概述

英特尔数据分析加速库DAAL是为为数据分析科学家以及数据算法分析开发工程师所涉及的库。本课程将介绍面向传统机器学习的高性能库DAAL的主要功能特性,以实例的形式指导学员如何使用DAAL 加速传统机器学习如K-means,并针对使用DAAL和不使用DAAL进行性能对比和分析。

【课程大纲】

1. Intel DAAL概述

2. Intel DAAL核心功能

3. 动手实验:使用Intel DAAL进行手写体数字识别

机构简介

英特尔(Intel Corporation)

英特尔是半导体行业和计算创新领域的全球领先厂商,以智能互联技术奠定全球创新基石。英特尔创始于1968年,拥有50余年推动技术创新和耕耘产业生态的成功经验。如今,英特尔正转型为一家以数据为中心的公司。英特尔的战略愿景聚焦于三个方面:一是致力于生产世界上最好的半导体芯片;二是引领人工智能与“自能”革命;三是做全球领先的端到端技术平台提供者。英特尔正与合作伙伴一起,共推人工智能、自动驾驶、 5G及物联网等领域的技术创新与应用突破,驱动智能互联世界,从而解决人类面临的重大挑战。 英特尔于1985年进入中国,是在华高科技领域最大的外国投资企业之一,协议总投入约130亿美元。中国是英特尔全球战略之重点,英特尔在中国拥有美国总部之外最为全面的业务部署,覆盖了前沿研究、产品技术开发、精尖制造、产业生态合作、市场营销、客户服务、风险投资和企业社会责任等。英特尔中国现有员工约9,500人。扎根中国三十四年,英特尔见证并深度参与了中国的改革开放,从浦东开发、西部开发到振兴东北等,英特尔一直跟随改革开放的步伐,积极带动区域经济发展,为高端制造持续注入新动力。 2014年12月,英特尔宣布在未来15年将为成都工厂投资16亿美元,首次引入英特尔最先进的高端测试技术( ATT),使成都工厂在原有的芯片封装与测试业务之外进一步升级为英特尔在美国境外唯一的ATT技术工厂;该技术已于2016年11月18日正式投产。 2015年10月,英特尔宣布投资55亿美元,将英特尔大连工厂升级为非易失性存储技术制造基地;该项目已经于2016年7月正式投产, 2017年发布了两款全新的基于3D NAND的数据中心级固态盘;其二期项目已经在2018年9月投产英特尔最先进的96层3D NAND产品。英特尔中国研究院是英特尔全球五大创新中枢之一,而英特尔亚太研发中心已发展成为英特尔在亚洲最大的综合性研发基地之一。 英特尔中国积极履行企业社会责任,涵盖了人才培养、员工关爱、多元化和包容、环境可持续、供应链建设、志愿服务等领域。英特尔连续20多年被教育部评为最佳合作伙伴。我们持续支持英特尔杯嵌入式大赛、英特尔杯软件创新大赛和人工智能人才培养等项目,开展丰富多彩的校园活动,每年都有上万名学生的直接参与,受益青少年数以十万计。英特尔中国员工在2018年参与志愿活动人数达8,636人,贡献志愿服务时间超过12万小时,参与比例为69%; 10年来累计志愿服务时间超过72 万小时。我们把公司运营与环境可持续发展协调并进,积极减少碳足迹;还和政府、产业链以及公益组织深入合作,共同推动绿色可持续发展。全球独立机构声望研究院发布的“中国最具声望的公司”( RepTrak? 100) 2018年百强排行榜中,英特尔荣登榜首。

讲义

Intel® DAAL 概述

数据分析需要人工智能

每天在城市中产生了大量的数据,城市安全、智能工厂、智能医院,以及每个英特网上的数据不断的在产生。在这些数据背后,我们需要思考这些数据中间到底反映了什么、发生了什么、将会发生什么,大量的数据分析应运而生。在数据洪流以及计算力的突破,并且AI技术的创新使得整个社会已经进入了AI时代。现在,大家可能更关注在如何描述数据,在这些数据中间如何进行诊断,发现目前到底是发生了什么、原因是什么。在未来,可能会更关注于拿到这些数据以后未来会发生什么,并且产生一些企业的决策,最后达到一个高级的认知。这些数据中可以看到数据分析需要人工智能技术的加持。

什么是AI?

AI的核心内容是为让目前的CPU拥有机器学习的能力,比如分类、聚类、决策、图像处理,语音处理、推荐等等,这些统一归结为机器学习的算法。还有一类方面会把它归结为深度学习。

如大家所现在看到的,早期会有一些传统的机器学习算法,它通过抽取数据中的特征,通过手工的提取等特征工程,然后再形成一定的模型进行预测,或者聚类,或者分类的算法。常见的如决策树、支撑向量机、回归等等。这些方法我们把它归类为传统的机器学习。深度学习大部分用来处理语音、图像、文本等等,它的主要特征呢,不需要手工或人为的做特征工程的分析,直接把数据放到网络中,让网络进行一个不断的迭代产生一个接近接近真实情况的模拟,然后再进行一个预测。

人工智能时代,机器学习面临挑战,挑战包括目前机器学习的软件类和硬件类的挑战。

Intel®数据分析加速库 (Intel® DAAL)

Intel DAAL数据分析加速库就是针对在Intel CPU上的优化。它提供了从数据预处理,到分析,到建模,到部署的一整套数据分析解决方案,并且还提供了Intel针对Intel CPU优化的技术。优化技术主要分三个方面。在CPU内部主要是利用CPU的硬件指令集,如Intel® AVX2, AVX512。DAAL是本身基于Math Kernel Library数学核心库,这个库提供了非常基础的矩阵运算、向量运算。在CPU外部主要利用Intel的另外一个多线程的库,Threading Building Blocks。这个库提供了很好的多线程技术,并且能够让其多核能力可以充分的发挥。在多核之间,再往更大的数据中心或者数据集群上面部署时,Intel DAAL利用MPI技术或MapReduce等等分布式的技术,这些技术使DAAL可以适用于单核,也可以适用于多核,并且可以适用于数据中心进行数据分析。

Intel® DAAL 支持的数据预处理和变换

这里列取DAAL所支持的数据预处理和变换的功能。比如基础的数据集统计、分析、向量之间的距离分析等等。

这些功能分为三种模式,一种是所有的数据可能都在Memory中,称之为Batch处理方式(空白框)。另外一种是大部分的数据有可能并不是一次就能全部处理完的,它可能是线上的数据,称之为分布式处理的数据方法(灰色框)。

Intel® DAAL 支持的经典机器学习算法

如线性回归、传统逻辑回归、决策森林、支持向量机等等。

在非监督学习中有K-means、均值EM支持。在推荐算法里支持矩阵分解的协同过滤算法。

Scikit-learn 工具包介绍 – 最广泛的Python机器学习包

Scikit-learn是建立在NumPy,SciPy基础上的工具包,提供了广泛的分类回归和聚类的算法支持。

利用Intel® DAAL 优化 Scikit-learn

Scikit-learn提供了丰富灵活的接口。DAAL有着和Scikit-learn类似的传统机器学习算法的支持,利用DAAL优化Scikit-learn就成为自然而然的事情。如图中所示,DAAL是在MKL基础上进行优化的C语言的库。在这个库基础上,我们用Python的接口把它进行分装。这样这些Python接口的库就可以被DAAL所直接调用。这个整个流程就使得我们可以利用Intel DAAL优化Scikit-learn。

Scikit-learn 工具包利用Intel DAAL的性能加速

下图中展示了利用Intel DAAL优化Scikit-learn所提供的性能加速。

横轴是算法,纵轴是加速。Python代码不需要做任何的改变。

如图是DAAL和亚马逊机器学习平台的性能比较。

Intel® DAAL概述

目前DAAL是一款OpenSource的库。大家可以在https://github.com/intel/daal上下载源码。它提供C++、Java、Python接口,支持Windows、Linux和OS X,同时还支持一些公共的数据平台包括Hadoop平台、Spark平台等等。

Intel® Python* 2019 发行版安装指南

Intel Python发行版对所有开发者免费。对开发者来说,安装Intel Python是非常容易的,大家可以从Intel的官方网站上下载,也可以从Anaconda、PyPI公开的网站安装。目前它支持Linux、Windows、OS X。各种安装方式如图所示。

目前有两种方法使用DAAL,一种可以直接调用Intel Python获得性能的提升,DAAL也可以通过其它途径,如Conda、YUM/APT、Python等等。另一种是可以直接使用DAAL,直接编写程序。

在线资源

Intel发行版的Python和所有官方发布的软件一样提供了非常丰富的在线资源。在Intel Python的产品主页中,你可以看到很多产品的特性和产品新发布的功能等。并且在它的目录下还会看到很多培训材料,包括用户手册、技术文档等等。Python还有自己的开发论坛,在那里大家可以获得Python开发的支持。

Intel® DAAL 高性能库核心功能

Intel® DAAL : 不仅仅是机器学习库

DAAL不仅仅是一个机器学习库,它还提供了从数据预处理,到分析,到建模,到部署的一整套数据分析解决方案。

这个流程中间,最重要的两点是在数据流水线一段,整个过程中间不仅仅是需要机器学习算法的支持,更需要一整套对数据的分析。

Intel DAAL 数据处理模型

第一种是Batch处理,Batch处理是常规处理。第二种方式是在线处理,在线处理方式针对于数据来源于实时。最后一种处理也是常见处理,Distributed处理。

Intel® DAAL 主要构成

DAAL主要由三个组件构成,第一个是数据管理,包含Data Sources、Numeric数值表、数据压缩解压缩、数据串行化和反串行化。第二个是数据分析,提供了各种数据分析的building block、算法继承。最后一个是Data Modeling Algorithms,把不同的模型的不同的表达方式放在其中,可以将模型移植到其它客户端。

DAAL提供高效的数据管理,支持数据表、不同数据类型的形式,并且对于数据中间出现空缺,或者没有,或者有异常点,DAAL都提供表的支持。其次针对不同的数据类型,DAAL提供不同的计算解决方案。如果这个数据量已经超过了正在处理的机器的设备,可以采用分布式的处理办法。如果数据是实时的,可以通过异步处理。DAAL还提供对矩阵恢复的支持。

DAAL还提供优化的存储和优化的计算。存储应用数值表的方式进行存储,计算则尽可能的多利用SMID指令进行数据的算法支持。

DAAL还提供数据分析算法,比如基础的数据集统计、分析、向量之间的距离分析等等。

Intel® DAAL 算法 – PCA C++ 示例

我们可以看到DAAL接口非常符合我们日常的开发习惯。先从数据中间获取数据,然后把数据放在一个内存中间。其次声明一个算法把刚才读到的数据和算法连接在一起就可以运行这个算法。在算法运行结束之后,获取算法的结果。DAAL开发的流程和接口都是非常简洁实用的。

Intel® DAAL 与 Scikit-Learn 结合

DAAL除了提供C++的接口外,它还提供了Python的分装。所以用DAAL优化cikit-Learn的算法,比如线性回归等等基本上可以在不变任何接口的情况下获得和C语言基本类似的效率。

利用Intel® DAAL 端到端的数据分析优化

在Python中做数据分析,经常会用到两个工具,即Pandas和Scikit-Learn。用Pandas进行数据读取和特征工程的提取,用Scikit-Learn进行模型的训练和预测。在这个过程中间,我们还是可以看到最重要的两个瓶颈可能会在特征提取和训练两个部分。DAAL恰好是可以在这两个环节中间进行优化,所以我们通常会说DAAL会提供端到端的数据分析优化。

具体来说,我们会用都要DAAL4py这样一个分装DAAL的Python库来提供简洁的数据分析操作,示例代码如图所示。

DAAL4py还提供了优越的性能,这在单线程的情况下运行在不同的数据集上,DAAL会比原生的Scikit-Learn有6倍的速度的提升。在多线程打开的情况下,甚至会有32倍的速度提升。

下图展示加速Scikit-learn应用*GBDT的示例代码。左边是Python的原生代码,右边是使用DAAL4py的版本,大家看到在代码风格上比较类似。

在速度上DAAL有明显的性能优势,在训练阶段,不同的数据集上,最好的情况下会有9.5倍的提升。在预测阶段,我们看到有2倍以上的提升。

Intel DAAL 使用动手实验

搭建Intel® Python 环境

  • 选择一个标准的云服务器,在下一步中选择镜像
  • 在镜像市场中找到Intel Optimized Pytorch镜像
  • 选择python镜像后完成服务器配置即可

验证Intel Python开发环境

1. Intel Distribution Python镜像提供直接的Intel Python环境

2. Intel Python提供的大部分常用的工具和开发包 > conda list

动手实验:手写体数字识别

数据集是来源于美国国家标准数据库MNist数据库,这个数据库是机器学习的入门级数据库,它拥有7万个数据集,其中会用6万个数据集作为训练数据集,1万个作为检测数据集。

决策森林解决分类问题

决策树这种分类方法是最接近人类思考的一种机器学习算法,它可以进行分类。

我们就采用了决策树森林的方法进行手写体数字识别,其中Training步骤:

  • 先导入daal4py
  • 获得training数据
  • 把training数据和参数给随机森林算法进行设置
  • 计算
  • 把模型存储出来

预测步骤:

  • 准备一个算法,决策森林算法
  • 加载预测的数据
  • 把模型和数据结合起来,进行预测,在整个途中我们的上半部分是代码部分,下面部分呢,就是我们在腾讯云中间的运行,结果大家可以参考一下,比如说我做拍死,然后可以看到一些结果有确定的时候,我是有5.59秒预测的时候我有0.07秒,其中我的呃错误率是4.89%。

课程评价(0)

感谢你参加本课程,请你作出评价:
0/300

以下选自学员评价

暂无精选评价