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

英特尔Parallel Studio XE 在腾讯云上的实践:使用英特尔发行版 Python 加速AI应用

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

课程概述

本课程将帮助大家了解英特尔Distribution for Python的主要功能特性,了解如何使用英特尔软件工具加速Python Scikit-learn应用和性能,掌握如何在腾讯云上使用镜像工具轻松启动集成了英特尔Python的开发环境,本课程还将演示一个动手实验,使用英特尔Distribution for Python来实现利用K-Means做颜色量化。

【课程大纲】

1. Intel Distribution for Python概述

2. Intel Python,Scikit-learn工具包介绍

3. 使用Intel Python动手实验K-Means做颜色量化

机构简介

英特尔(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® Distribution for Python*概述

Python* 是机器学习和数据分析科学家的第一语言

Python语言自开发以来,因其简单易用,迅速被广大开发者所接受。在2017年2018年的开发者调查表中我们可以看到,Python已经成为科学家的第一语言。

Python 中流行的机器学习库

Python吸引了众多的开发者为其开发各式各样的功能,目前它已经形成了庞大的库。其中最流行的机器学习库,如图所示的Python、SciPy、Scikit learn等,包括众多的深度学习框架TensorFlow等等也提供Python的接口支持。

Python作为解释性语言所面临的挑战:速度慢

Python虽然具有丰富强大的功能,但是它作为解释性语言面临的最大的挑战就是速度慢。如图中所示,它拥有一个全局性的锁,所以无论你启多少线程都会在Python虚拟机中运行之中单线程。

C 与Python性能差距

和C相比,Python在很多方面会有欠缺,比如C可以直接利用硬件的的硬件指令,像单指令、多数据流SIMD指令。同时C可以直接利用CPU的特性,包括多核的特性、可以直接多线程等等。如果把一个程序重单线程提升到多线程,随着新建指令的提升,它能够像指数一样的进行提升。

如何弥补Python和C之间的差距?Intel® Python* 2019 发行版让Python拥有C的性能。Intel利用自己多年的软件优化经验和一些高性能的软件库去优化科学计算、机器学习、数据分析等Python的功能,如NumPy、SciPy、Scikit-learn等等,让Python可以利用直接利用Intel CPU的性能。如图我们看到,相比较与Stock Python,Intel Distribution Python已经拥有类似于C的效率。

Intel每年都会发布新的Python版本,在2019年版本中加入了最新的两个优化,包括支持向量机的优化和K-mean的优化。其次还加入了目前最流行的XGBoost库。让Intel的Python用户可以快速利用这些优化过的库进行开发。

Intel® Python*发行版的优点简介

  • 帮助机器学习研究者/开发者提高开发效率,无需更改代码,直接获得C 语言的效率
  • 提供机器学习所需的强大的底层支持, 支持Numpy, Scipy, Pandas, Scikitlearn 优化
  • 提供机器学习所需的灵活丰富的功能,如 SVM, XGBOOST 的优化,和分布式支持
  • 在Intel 处理器上获得上千倍的良好性能,自动支持下一代Intel 处理器
  • 优秀的社区和支持

如何用Intel 技术加速Python 性能

Intel提供了强大的C语言高性能库,比如数学核心库、DAAL库、数据分析加速库等等,这些库它拥有了C语言的特性,可以迅速的进行硬件的向量化,循序的进行多线程的部署。我们可以在Python和C语言中间找到一个结合点,破除Python的限制。

HPC & AI 软件优化成功案例

Intel和众多的国内外人工智能的开发者进行合作。

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

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

使用 Intel® Python* 2019 发行版 加速Python应用

Intel和许多开发组织合作,使得 Intel优化的Python包,可以通过各种渠道获得。这里举一个支持向量机的例子。

使用 Intel® Python* 2019 发行版加速Scikit-learn SVM应用

这里展示一个加速Scikit-learn支持向量机的数据,它的横轴SVM分类,有两类的分类,以及多类的分类,包括Training和预测。纵轴是相较于Scikit-learn的性能加速。

在线资源

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

Intel Python,Scikit-learn 工具包介绍

Intel Python* 主要构成

Intel® Math Kernel Library数学核心高性能库(Intel® MKL)

数学核心高性能库是Intel工程师利用硬件架构的特性充分的优化数学函数。这些数学函数,包括最基本的线性代数函数、解方程函授、向量计算、统计等等。这些函数可以被充分的加速整个科学计算、工程计算、金融计算。Intel® Math Kernel Library可以自动发优化的代码到CPU上。它还可以自动并行化,如果你的机器是多核的,它可以自动分发代码到多核上。

Intel® MKL的主要功能

Intel® MKL主要提供了上千个支持单精度浮点、双精度浮点等功能。这些功能主要包括基本的线性代数、BLAS函数、Sparse BLAS函数、Iterative sparse solvers等等。还支持FFT计算、随机数产生、统计类的求最大值最小值方差、向量数学。除此之外,MKL还引进了另外一个库叫MKL-DNN库,它是专门针对神经网络的计算密集型函数。这些功能使得云计算各种高性能计算都可以被利用到。

Intel® MKL: Python 集成

在Intel Python中,我们直接把MKL库集成进来加速Numpy这样的一些计算。它就可以迅速的自动的把Python代码扩展到SMID指令的支持。其次,它可以并行化,自动的在多核上获得多线程的支持。甚至可以实现跨节点的节点支持等等。

如图代码是标准的数学计算,求特征值特征向量。以前的Python代码并不需要做任何改变就可以利用MKL的特征值特征、向量函数运行加速。

Numpy/Scipy/UMath 使用MKL优化

这里我们展示了用MKL对Python中的Numpy/Scipy/UMath库进行加速。

Intel® Data Analytics Acceleration Library 加速分析和机器学习(Intel® DAAL)

这个库是Intel专门针对传统的机器学习以及数据分析所加速库。它提供的功能,从数据的预处理,到数据变换,到数据分析,到建模,以及最后做决策一系列的函数。它包括了Python、C、Java的接口。跟其它的软件库一样,我们基本上每年会发布新的版本,在新的版本中间增加新的功能。比如说在2018版本和2019版本中,增加了逻辑回归、决策森林的回归等。这些功能会根据用户的需求都要,DAAL库可以从YUM和APT这些公开渠道中获得。DAAL自己提供机器学习和提供Python的功能,所以还有一个库较DAAL4PY。它提供类似Scikit-learn算法的支持。

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 Python 使用动手实验

搭建Intel® Python 环境

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

验证Intel Python开发环境

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

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

使用Intel® Python* 2019 发行版-单机安装

我们可以通过各种方式安装Intel Python,如图展示的是使用conda安装Python。只需要加入intel channels、安装Intel Python包、创建虚拟环境IDP。

激活Intel Python有两种方式,一种是source Intel的opt目录下的activate环境,另外一种是source activate的idp环境。

安装一些需要的库,准备动手实验。

Scikit learn 示例 - K-Means

示例一,把颐和园的图通过K-Means方式把96615种颜色编程64种颜色来表示原始的图像。

在腾讯云Intel Python的镜像中,已经把这个例子下载到intel_python_amples目录下,如果您在IDP虚拟环境中可以直接进入这个目录,并且运行Python这个文件。在左图可以看到,当运行这个文件以后会打印出一些信息。同样的镜像中也安装了普通的Python。这个Python环境可以用source -/venv/bin/activate激活。激活之后,大家可以环境是venv的环境。在环境中运行相同的文件,做同样的事情,在最底下也是打出了K-means的预测的时间。同样的机器用同样的镜像,用普通Python的时间是0.257秒,相比较应Intel Python,Intel Python可以有6.26倍的提升。

课程总结

本课程介绍了Intel® Distribution for Python*主要功能和特性

  • 作为开发工具,Intel® Python* 发行版,无需更改代码,直接加速Python 应用的性能
  • 利用Intel® MKL, Intel® IPP, Intel® DAAL, Intel® TBB 等高性能库来优化Python 中常见的机器学习库 如 numpy, scipy, scikit-learn.
  • 动手实验:Color Quantization using K-Means,利用Intel® Python* 发行版所提供的scikit-learn ,相比原生包速度上明显提升

访问网站获取更多信息:https://software.intel.com/en-us/distribution-for-python‎

课程评价(0)

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

以下选自学员评价

暂无精选评价