摘要:2018新年伊始,互聯(lián)網(wǎng)公司發(fā)現(xiàn)了兩個(gè)非常嚴(yán)重的新漏洞。這兩個(gè)漏洞分別是熔毀(Meltdown)和幽靈(Spectre),它們主要會(huì)影響幾大處理器供應(yīng)商。
關(guān)鍵詞:CPU機(jī)器學(xué)習(xí)
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、
網(wǎng)站設(shè)計(jì)、寧縣網(wǎng)絡(luò)推廣、
小程序開發(fā)、寧縣網(wǎng)絡(luò)營銷、寧縣企業(yè)策劃、寧縣品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供
寧縣建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
2018新年伊始,互聯(lián)網(wǎng)公司發(fā)現(xiàn)了兩個(gè)非常嚴(yán)重的新漏洞。這兩個(gè)漏洞分別是熔毀(Meltdown)和幽靈(Spectre),它們主要會(huì)影響幾大處理器供應(yīng)商。
這些漏洞會(huì)使攻擊者利用處理器在推測性執(zhí)行時(shí)產(chǎn)生的錯(cuò)誤,讀取(并潛在地執(zhí)行)其各自進(jìn)程之外的存儲(chǔ)器位置。這意味著,攻擊者可以讀取其他軟件存儲(chǔ)器中的敏感數(shù)據(jù)。
如果在Linux內(nèi)核中打一個(gè)叫做KAISER(也稱為KPTI)或PTI(頁表隔離)的補(bǔ)丁,可以有效地解決了利用了Meltdown的攻擊。但是,這個(gè)補(bǔ)丁會(huì)對Linux的性能造成很大的影響。據(jù)報(bào)告顯示,CPU性能下降的范圍是5%到35%,另有一些綜合的評測標(biāo)準(zhǔn)顯示,CPU的性能下降幅度甚至超過了50%。
然而,PTI的性能問題在很大程度上取決于每個(gè)人手頭需要執(zhí)行的任務(wù)。換句話說,這種性能的大幅度下降可能僅僅出現(xiàn)在FSMark等綜合的基準(zhǔn)測試中。
所以問題來了:在機(jī)器學(xué)習(xí)的應(yīng)用程序中,我們會(huì)看到什么樣的性能?
環(huán)境部署
為了比較在使用和不使用PTI時(shí),機(jī)器學(xué)習(xí)應(yīng)用程序的性能變化,我部署了一個(gè)新的帶intel微碼(也稱為微指令)的機(jī)器。該機(jī)器裝有Ubuntu 16.04版本的操作系統(tǒng)。
我還比較了Ubuntu 16.04(4.10.0-42-generic版本)上自動(dòng)安裝的最新內(nèi)核與最新的主線內(nèi)核版本(4.15.0-041500rc6-generic版本),這個(gè)版本的Linux帶有PTI補(bǔ)丁。
我采用的工具是基于Python 3.6(帶有用pip下載的額外軟件包)的Anaconda,由它來執(zhí)行整個(gè)測試。
我用于測試的機(jī)子配置包括英特爾酷睿i7-5820K(Haswell-E,stock clocks)和64GB DDR4 @ 2400MHz。
值得注意的是,AMD的處理器沒有啟用PTI補(bǔ)丁,因?yàn)樗鼈儾皇躆eltdown攻擊的影響——所以如果你使用的是AMD處理器,性能將不會(huì)受到任何影響。
測試結(jié)果
請注意,圖表上的比例是從60%開始的
首先,我們可以看到幾乎所有的程序性能都有輕微的下降,不過在卷積層模型的推理過程中下降的速度非??臁S绕涫茿lexNet,它的推理速度比正常的慢了大約5%,但反向傳播速度幾乎是相同的——這就是為什么對訓(xùn)練造成的影響大約只是推理的一半。
就Keras的原始操作而言,全連接和LSTM層幾乎沒有受到任何的性能影響,但卷積層卻減少了10%左右。
對于AlexNet和MNIST的基準(zhǔn)測試,我使用了TensorFlow教程的模型。而對于Keras,我則使用了一個(gè)只有幾層卷積并可以隨機(jī)初始化的模型。我還計(jì)算了其在隨機(jī)數(shù)據(jù)上的推理速度。
值得注意的是,這些基準(zhǔn)測試都僅使用了CPU來運(yùn)行。
我在這里使用了Scikit-learn工具包來衡量“傳統(tǒng)”機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)算法的性能。
我們看到,與神經(jīng)網(wǎng)絡(luò)相比,操作系統(tǒng)帶來的性能下降更大,且PCA和線性/邏輯回歸受到的影響最嚴(yán)重。造成這種下降的原因可能是由于某些數(shù)學(xué)受到了非常嚴(yán)重的影響——正如下面針對NumPy的基準(zhǔn)結(jié)果所討論的那樣。
有趣的是,K最近鄰算法完全沒有受到PTI的影響,而且目測在新的內(nèi)核上表現(xiàn)的還稍好一些。這有可能只是在性能測試錯(cuò)誤的范圍之內(nèi),但也有可能是其他一些內(nèi)核的改進(jìn),稍微幫助提高了該算法的速度。
我還從內(nèi)存里緩存的文件中提取了一個(gè)pandas.read_csv()函數(shù)的基準(zhǔn),用于查看帶PTI的系統(tǒng)對CSV解析的速度降低了多少——輸入博世(Bosch)Kaggle競賽數(shù)據(jù)集(大小2GB,1M行,1K列,類型是浮點(diǎn)數(shù), 80%缺失),帶來了6%左右的讀取性能下降。
所有的Scikit-learn工具包基準(zhǔn)也是在博世數(shù)據(jù)集上進(jìn)行計(jì)算的。我發(fā)現(xiàn),普遍來講,它對于進(jìn)行機(jī)器學(xué)習(xí)算法基準(zhǔn)測試,效果是很好的,因?yàn)檫@是一個(gè)龐大的,標(biāo)準(zhǔn)化的且格式良好的數(shù)據(jù)集(盡管因?yàn)椴捎猛暾臄?shù)據(jù)會(huì)花費(fèi)太久的時(shí)間,kNN和K-means算法是在一個(gè)子集上進(jìn)行計(jì)算的)。
這些基準(zhǔn)在這里可能是最綜合的了,因?yàn)閮H測試了單一的scipy操作的速度。然而,這些結(jié)果告訴我們,PTI帶來的性能損失是與任務(wù)依賴有極大聯(lián)系的。在這里我們可以看到,大多數(shù)的操作受到的影響都很小,包括點(diǎn)積和FFT(快速傅里葉變換)操作,其對性能的影響也很小。
當(dāng)PTI啟用時(shí),SVD(奇異值分解),LU分解和QR(正交三角)分解性能都會(huì)受到大幅度的影響。QR分解從190GFLOPS降低到110GFLOPS,降低了37%的性能。這可能有助于解釋為什么PCA(主要依賴于SVD)和線性回歸(主要依賴于QR分解)的性能會(huì)下降。
這些基準(zhǔn)測試是使用英特爾自己的ibench軟件包完成的,只是使用了Anaconda而不是英特爾的python發(fā)行版。
對XGBoost算法進(jìn)行測試時(shí),我得到了一些有趣的結(jié)果。
在大多數(shù)情況下,使用較少的線程數(shù)時(shí),無論使用慢速精確的方法還是快速直方圖方法,PTI帶給XGBoost的性能影響都可以忽略不計(jì)。
但是,當(dāng)使用非常多的線程時(shí),也就是CPU同時(shí)處理更多的任務(wù)時(shí),使用PTI系統(tǒng)會(huì)帶來速度的下降。
這并不是XGBoost在大量線程內(nèi)核上執(zhí)行的完美表示(因?yàn)樗窃?2個(gè)邏輯內(nèi)核上運(yùn)行了40個(gè)線程)。不過,它也能表明,帶PTI的系統(tǒng)在CPU同時(shí)處理很多事情時(shí),會(huì)帶來更大的性能影響。不幸的是,我不能訪問任何的可以修改內(nèi)核的高內(nèi)核數(shù)量的服務(wù)器,所以我不能得到一個(gè)更深入的結(jié)果。
與測試scikit-learn一樣,這些基準(zhǔn)測試是在博世(Bosch)數(shù)據(jù)集上進(jìn)行的。
結(jié)論
最重要的結(jié)論是,PTI帶來的性能影響其實(shí)是非常依賴于任務(wù)的——一些任務(wù)不受影響,而有些任務(wù)的性能卻下降了40%。不過就總體而言,我認(rèn)為這種影響比我預(yù)期的要小,因?yàn)橹皇且恍?yīng)用程序受到了嚴(yán)重的影響。
網(wǎng)頁標(biāo)題:詳解CPU漏洞對機(jī)器學(xué)習(xí)的影響:幾乎所有卷積層都受影響,QR分解降速37%
鏈接URL:
http://weahome.cn/article/diieh.html