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

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‎

你可能感兴趣的:(intel,distribution,for,python)