来源:网络 编辑:好困小咸鱼【新智元导读】5nm工艺,570亿晶体管,70CPU性能提升,4倍GPU性能提升。号称史上最强芯片的M1Max,只能剪剪视频? 最近,苹果开了一个芯片新品发布会。 光看参数,M1Pro和M1Max两款芯片确实太顶了! M1Pro,晶体管面积达到245mm,内置337亿个晶体管,是M1的2倍多。 而M1Max更夸张,搭载570亿个晶体管,比Pro还要大70,芯片面积达到432mm。 M1Pro和M1Max均采用大小核设计,最多10个核心,包括8个高性能内核和2个高效内核,CPU的性能直接比前代M1芯片提升70。 GPU方面,M1Pro采用最多16个核心,性能比M1芯片的GPU高出两倍。 而M1Max一举将GPU的核心数量干到32个,算力可以达到恐怖的10。4TFLOPs,比M1的GPU还要再快4倍! 10TFLOPs,这个数字有点熟悉啊? 对GPU性能敏感的朋友可能联想到了,空气显卡公司Nvidia的RTX2080给出的GPU参考性能也是这个数字。 M1 M1Pro M1Pro M1Max M1Max GPU核心数 8hr14hr16hr24hr32hrTeraflops 2。6 4。5 5。2 7。8 10。4 AMDGPURX560 (2。6TF)RX5500M (4。6TF)RX5500 (5。2TF)RX5700M (7。9TF)RXVega56 (10。5TF) NvidiaGPUGTX1650 (2。9TF)GTX1650Super (4。4TF) RTX305075W(4。4TFGTX1660Ti (5。4TF)RTX2070 (7。4TF)RTX2080 (10TF) RTX306080W(10。94TF) 现在深度学习这么火,要不让M1系列的芯片和RTX2080比试比试? M1VS2080Ti 提到深度学习框架无非就是TensorFlow和PyTorch。 然而,这俩一直以来都只支持在NVIDIA的GPU上使用CUDA加速。而苹果用户只能在CPU上慢慢跑。 不过,苹果在2020年11月推出了采用M1芯片的Mac之后,很快,TensorFlow也出了2。4版本更新,支持在M1的GPU上训练神经网络。 https:machinelearning。apple。comupdatesmlcomputetrainingonmac TensorFlow2。4的tensorflowmacos利用MLCompute,使机器学习库不仅能充分利用CPU,还能充分利用M1和英特尔驱动的Mac中的GPU,大幅提高训练性能。 说得这么nice,到底怎么样,还是要实践才知道。 鉴于搭载M1Pro和M1Max的最新款MacbookPro还未开售,就先用他们的小弟M1代替他们出场吧。M1的GPU最高可以跑到2。6TFLOPs,差不多是NvidiaRTX2080独显的四分之一。 先在fashionMNIST数据集上,训练一个小的三层全连接网络试试。 importlibrariesimporttensorflowastfimporttimedownloadfashionmnistdatasetfashionmnisttf。keras。datasets。fashionmnist(trainimages,trainlabels),(testimages,testlabels)fashionmnist。loaddata()trainsetcountlen(trainlabels)testsetcountlen(testlabels)setupstarttimet0time。time()normalizeimagestrainimagestrainimages255。0testimagestestimages255。0createMLmodelmodeltf。keras。Sequential(〔tf。keras。layers。Flatten(inputshape(28,28)),tf。keras。layers。Dense(128,activationrelu),tf。keras。layers。Dense(10)〕)compileMLmodelmodel。compile(optimizeradam,losstf。keras。losses。SparseCategoricalCrossentropy(fromlogitsTrue),metrics〔accuracy〕)trainMLmodelmodel。fit(trainimages,trainlabels,epochs10)evaluateMLmodelontestsettestloss,testaccmodel。evaluate(testimages,testlabels,verbose2)setupstoptimet1time。time()totaltimet1t0printresultsprint()print(fTrainingsetcontained{trainsetcount}images)print(fTestingsetcontained{testsetcount}images)print(fModelachieved{testacc:。2f}testingaccuracy)print(fTrainingandtestingtook{totaltime:。2f}seconds) 测试开始,先在一台搭载Inteli79700K,拥有32GB内存,以及一张NvidiaRTX2080Ti独立显卡的Linux系统电脑上运行上面的代码。 很快,就得到了结果:训练和测试花了7。78秒。 接着,用搭载M1处理器(8个CPU核心,8个GPU核心,16个神经引擎核心)和8GB内存的MacMini训练模型。 结果非常amazing啊! 训练和测试仅仅耗时6。70秒,比RTX2080Ti的GPU还要快14!这就有点厉害了。 但说实话,fashionMNIST分类这种任务有点过于简单了,如果想在更大的数据集上,训练更强大的模型呢? 所以,得给它们来点更难的任务,分别用M1和RTX2080Ti在Cifar10数据集上训练一个常用的ResNet50分类模型如何? importlibrariesimporttensorflowastffromtimeimportperfcounterdownloadcifar10datasetcifar10tf。keras。datasets。cifar10(trainimages,trainlabels),(testimages,testlabels)cifar10。loaddata()trainsetcountlen(trainlabels)testsetcountlen(testlabels)setupstarttimet1startperfcounter()normalizeimagestrainimagestrainimages255。0testimagestestimages255。0createMLmodelusingtensorflowprovidedResNet50model,notethe〔32,32,3〕shapebecausethatstheshapeofcifarmodeltf。keras。applications。ResNet50(includetopTrue,weightsNone,inputtensorNone,inputshape(32,32,3),poolingNone,classes10)CIFAR10labelshaveoneintegerforeachimage(between0and10)Wewanttoperformacrossentropywhichrequiresaonehotencodedversione。g:〔0。0,0。0,1。0,0。0,0。0。。。〕trainlabelstf。onehot(trainlabels。reshape(1),depth10,axis1)Dothesamethingforthetestlabelstestlabelstf。onehot(testlabels。reshape(1),depth10,axis1)compileMLmodel,usenonsparseversionherebecausethereisnosparsedata。model。compile(optimizeradam,losstf。keras。losses。CategoricalCrossentropy(),metrics〔accuracy〕)trainMLmodelmodel。fit(trainimages,trainlabels,epochs10)evaluateMLmodelontestsettestloss,testaccmodel。evaluate(testimages,testlabels,verbose2)setupstoptimet1stopperfcounter()totaltimet1stopt1startprintresultsprint()print(fTrainingsetcontained{trainsetcount}images)print(fTestingsetcontained{testsetcount}images)print(fModelachieved{testacc:。2f}testingaccuracy)print(fTrainingandtestingtook{totaltime:。2f}seconds) 测试再次开始,在RTX2080Ti运行新代码,表现非常不错。 训练了10个epoch,训练和测试共耗时418。73秒,GPU的利用率在65和75之间波动。 接下来,在M1MacMini上运行新代码。 看上去有点拉胯啊,M1MacMini训练和测试总耗时2286。16秒,是RTX2080TiGPU耗时的5。46倍。 理论上讲,M1的GPU性能是RTX2080TiGPU的3。84分之一,这么看,其实际性能还是略有欠缺。 通过Mac的活动监视器也能看到,CPU的使用率确实较低,GPU几乎没有怎么使用,看来还是Tensorflow对M1硬件资源的调度优化得不够好。 不过,最近,Tensorflow放出了对M1MetalGPU插件支持。 https:developer。apple。commetaltensorflowplugin 还给出了安装指导教程,感兴趣的朋友可以尝尝鲜(需安装TensorFlowv2。5或v2。6)。 友情提示,先看看TensorFlowmacOSGitHub仓库的issue的数量,劝退不 这么来看,M1确实可以训练深度学习模型,实际性能也勉强能用。 要是换上那个4倍加成的M1Max没准还真能和RTX2080TiGPU碰一碰。 但是还是那个问题:能用不代表好用。 为啥评测只有剪视频 M1一直以来都有一个被诟病的地方:生态不行。 推特上有大神留言:M1确实能用于数据科学,但恐怕你得花一个通宵装配置才能用。 其实,不仅仅是机器学习,很多大型游戏和工业软件目前都不兼容苹果的M1系列芯片。 在知乎上,就有人提出了质疑:为什么在宣传苹果的M1芯片的性能时,总是以视频剪辑为例呢? 排第一的回答就说得很有道理:他们惊叹M1的强大的时候,自然用自己最顺手的方式来说明M1强大。看起来是清一色的用视频来验证M1的强大,其实只是他们的声音大罢了。 而且,看完刚才那段用M1跑机器学习的体验,这个问题其实也就不难回答了。 写个文:用不着; 编个程:不会用。 当然,也有非专职博主做过Spring性能的测试,在转译模式下跑Java,性能也很不错。特别是对小内存的优化,以及几乎无敌的不发热和没噪声。 不过对于这一点,有网友表示:软件开发在Mac上是劣势,在M1上更是劣势中的劣势。 那这么看来,在生产力里面,可能也就只有视频既能体现出性能强劲,又方便好做了。 然而,网友吐槽说:M1也就用来剪点小片子玩玩还行了。 除此以外也一大堆插件只支持Intel,甚至连Mac都没有。 游戏呢,一直都不是Mac的重点,这次苹果就更直接了,一句都没提。以前好歹还放一个狂野飙车9呢。 既然苹果的态度都这么明显了,何必非要用MAC去自己折磨自己呢。 有网友就表示:既然我有钱16199买mbp,我自然也有windows主机。 挖矿这事吧,不提倡,而且就M1的表现来说,非常拉垮。不知道M1Max能不能一雪前耻。 话说回来,最常用的生产力难道不是word、ppt、keynote这些么,买一个M1的MacBook,续航长,屏幕好,速度快还便宜,多香。 参考资料: 文中引用了青空,HateLetter等人的回答,具体参见: https:www。zhihu。comquestion460373656 https:www。zhihu。comquestion493188474 https:www。zhihu。comquestion493188575 https:appleinsider。comarticles211019m1proandm1maxgpuperformanceversusnvidiaandamd https:developer。apple。commetaltensorflowplugin https:medium。comanalyticsvidhyam1macminiscoreshigherthanmynvidiartx2080tiintensorflowspeedtest9f3db2b02d74 https:twitter。comtheshawwnstatus1449930512630525956?s21