选自towardsdatascience
作者:DarioRadei
机器之心编译
编辑:小舟
最近M1芯片爆火,它是否适用于数据科学?在常用基准上测试一下就知道了。
新版Macbook已经问世了一段时间,如果将M1芯片用于数据科学,性能会如何呢?本文作者将M1MacbookPro与基于Intel的MacbookPro在5种常用基准上进行了测试,结果发现M1芯片的性能确实是令人震惊的。
首先,它的运行速度比MBP是快几倍的,并且运行过程中完全保持安静。我执行了多CPU的困难任务,散热扇甚至都没有发动过。当然,还有电池寿命也令人难以置信,重度使用多达14小时也不会出现问题。
测试的基准共有5种:
CPU和GPU基准;
性能测试——纯Python;
性能测试——Numpy;
性能测试——Pandas;
性能测试——Scikit-Learn。
本文的所有比较都是在两个MacbookPro之间进行的:
MacbookPro(i5-U
1.40GHz/8GBLPDDR3/IrisPlusMB)——IntelMBP13-inchM1MacbookPro(M1
3.19GHz/8GB)——M1MBP13-inch并非所有库都与新M1芯片兼容。目前配置Numpy和TensorFlow没问题,但是Pandas和Scikit-Learn还不能在本地运行-至少我没有找到可用的版本。
唯一可行的解决方案是通过Anaconda安装这两个库,但需要通过Rosseta2仿真器运行,因此它比本机要慢一些。
你将看到的测试在任何形式上都不是「科学的」。他们仅仅比较了上述机器之间在一组不同的编程和数据科学任务中的运行时。
CPU和GPU基准
我们首先从基本的CPU和GPU基准开始。使用Geekbench5进行测试的结果如下表:
图1:Geekbench比较(CPU和GPU)。
M1芯片在Mac中超越了Intel芯片。该基准测试仅衡量整体机器性能,与本文要进行的数据科学基准测试并不是百分百相关。
性能测试——纯Python
以下是在该基准中执行的任务列表:
创建一个包含至之间的随机整数的列表l;
对列表l中的每个项目求平方;
取l中每一项的平方根;
将相应的平方和平方根相乘;
相应的平方和平方根相除;
对相应的平方和平方根进行整除运算。
该测试仅使用内置Python库,不含Numpy。以下是测试的代码段
结果如下:
图2:Python速度测试,越低为越好。
通过Anaconda(和Rosseta2)在M1Mac上运行的Python减少了秒的运行时。最好是在本地运行Python,因为这样就能将运行时进一步减少43秒。
性能测试——Numpy
以下是在该基准中执行的任务列表:
矩阵乘法
向量乘法
奇异值分解
Cholesky分解
特征分解
脚本如下
测试结果如下:
图3:Numpy速度测试,越低越好。
在Numpy上得到的结果有点奇怪。Numpy似乎在IntelMac上运行得更快,作者猜想原因可能在于进行了一些优化。
性能测试——Pandas
Pandas基准非常类似于Python。二者执行了相同的操作,但结果被合并为单个数据frame。
以下是任务列表:
创建一个空的数据frame;
为它分配含到之间,,个随机整数的column(X);
将X中的每一项平方;
取X中每一项的平方根;
对应的平方和平方根相乘;
对应的平方和平方根相除;
对对应的平方和平方根执行整数除法。
以下是测试代码段:
结果如下:
图4:Pandas速度测试——越低越好
需要注意的是这里没有安装本机Pandas,但M1芯片上的Pandas以快了2倍的速度完成了该基准测试。
性能测试——Scikit-Learn
与Pandas一样,这里也没有在本机上安装Scikit-Learn,只有通过Rosseta2仿真器运行的IntelMBP和M1MBP的比较结果。
以下是在该基准测试中执行的任务列表:
从网络上获取数据集;
执行训练/测试split;
声明一个决策树模型并找到最佳超参数(个组合+5倍交叉验证);
使用最佳参数拟合模型。
这是一个大致的标准模型训练程序,但不包含测试多种算法,数据准备和特征工程。以下是测试的代码段:
结果如下:
图5:Scikit-Learn速度测试——越低越好。
结果传达了和使用Pandas测试时相同的信息——Inteli5处理器用两倍时长才完成了相同的任务。
新的M1芯片绝对是物有所值的,但最好的版本还在后面,毕竟这只是第一代。