宋達,郭海波,朱進,李寧,肖迪,張思航
(中國艦船研究院,北京 100101)
在過去的十幾年間,得益于基礎硬件計算能力的大幅提升與算法研究的逐步深入,基于深度學習的智能應用在各個領域如計算機視覺、語音識別、自然語言處理等得到了廣泛的應用。在軍事領域,如水下、水面目標識別、艦船智能運維、態(tài)勢感知等場景也逐漸開始向智能化發(fā)展。由于需要進行廣泛的樣本學習并獲取隱藏特征進行權重更新,深度學習任務大多依賴于強大的算力支持,在不同的硬件支撐平臺上實現(xiàn)同樣的深度學習任務往往會由于平臺算力的差異而導致最終模型的性能有所不同。艦艇云平臺資源有限、應用眾多,如何優(yōu)化資源配置而達到最佳效果是應用領域需要衡量的關鍵課題。業(yè)界對于深度學習算法性能的評估,在一定程度上也影響著深度學習的應用與技術發(fā)展。目前通用并公認的機器學習(深度學習)基準主要是MLPerf[1]。MLPerf 是一套用于測量和提高機器學習軟硬件性能的通用標準,主要用來測量訓練和推理不同神經(jīng)網(wǎng)絡所需要的時間。在國內(nèi),中國電子技術標準化研究院也制定了《人工智能 深度學習算法評估規(guī)范》[2],包含7 個一級指標和20 個二級指標,可在實施評估過程中,根據(jù)可靠性目標選取相應指標。本文基于艦載云平臺研究在不同的虛擬機配置中,Resnet 模型執(zhí)行目標識別任務時,每一次迭代更新所花的時間,分析國產(chǎn)化平臺與商用平臺艦載云中的目標識別應用性能。
MNIST 數(shù)據(jù)集(Mixed National Institute of Standards and Technology database)[3]是美國國家標準與技術研究院收集整理的大型手寫數(shù)字數(shù)據(jù)庫,包含60 000 個示例的訓練集以及10 000 個示例的測試集。本文使用MNIST 數(shù)據(jù)集作為目標識別任務的訓練和測試樣本。
圖1 MNIST 數(shù)據(jù)集Fig.1 MNIST dataset
Resnet[4]依據(jù)CNN 模型和殘差學習的理論將神經(jīng)網(wǎng)絡深度拓展到152 層,通過短路機制加入了殘差單元,雖然在一定程度上增加了計算量,但對于深度學習網(wǎng)絡退化問題有很好的緩解,可以對樣本進行更復雜的特征提取。本文使用Resnet 作為目標識別任務的算法模型,其中 Batch size 為128。
PyTorch 是基于Torch的深度學習框架[5],主要是由Facebook的AI 研究實驗室開發(fā)。本文使用的PyTorch版本為1.4.0,并在其上實現(xiàn)Resnet。
訓練耗時與收斂速率是評估深度學習模型性能需要特別關注的指
標[6],本文結合這2 個指標,衡量比較在商用服務器和國產(chǎn)服務器上,Resnet 在進行手寫體識別時驗證集準確率達到98%時,模型訓練過程中每輪迭代的耗時情況。由于模型的隨機梯度下降過程中收斂速度受初始化權重、正則化方法等因素影響,所以本文重復多次訓練試驗,取每次實驗結果平均值作為最終試驗結果。實驗所使用的Dell 服務器和海光服務器參數(shù)對比如表 1 所示。
表1 商用服務器和國產(chǎn)服務器參數(shù)對比Tab.1 Comparison of parameters between commercial servers and domestic servers
基于商用服務器和國產(chǎn)服務器搭載的艦載云環(huán)境,本文按照CPU 核數(shù)以及內(nèi)存的不同,創(chuàng)建20 臺虛擬機,操作系統(tǒng)均為銀河麒麟(4.4.58),在PyTorch 平臺上使用Resnet 模型實現(xiàn)手寫體識別,商用服務器上的表現(xiàn)結果如表 2 所示。
表2 商用服務器上模型在不同虛擬機配置中每次參數(shù)迭代所用時間Tab.2 The time cost of each epoch of the model on the commercial server in different virtual machine configurations
在商用服務器上,相同CPU 核數(shù)不同內(nèi)存的虛擬機所用的迭代時間和相同內(nèi)存不同CPU 核數(shù)的虛擬機所用迭代時間的對比圖如圖 2 和圖 3 所示。可以發(fā)現(xiàn),對于商用服務器,并不是虛擬機配置越高每次迭代所花費的平均時間越短。由圖 2 可知,對于不同內(nèi)存的虛擬機,在CPU 核數(shù)為四核時,均表現(xiàn)為每次迭代用時最短,其在進行手寫體識別的任務中,比兩核、八核以及16 核所用的時間少。如圖 3 所示,對于兩核的虛擬機,內(nèi)存為64 G 時用時最短;對于四核的虛擬機,內(nèi)存為64 G 時用時最短;對于八核的虛擬機,內(nèi)存為32 G 時用時最短;對于十六核的虛擬機,內(nèi)存為8 G 時用時最短。在商用服務器上,對于一定核數(shù)而內(nèi)存不同的虛擬機配置,在本次實驗中其迭代用時的最大最小值之差如表3 所示。對于一定內(nèi)存而核數(shù)不同的虛擬機配置,在本次實驗中其迭代用時的最大最小值之差如表 4 所示。可以發(fā)現(xiàn),由于虛擬機核數(shù)變化所引起的迭代時間的變化比由于內(nèi)存變化所
表3 使用商用服務器的一定核數(shù)的虛擬機中模型迭代用時最大最小值比較Tab.3 Comparison of the maximum and minimum model iteration time in a virtual machine with a certain number of cores using a commercial server
表4 使用商用服務器的一定內(nèi)存的虛擬機中模型迭代用時最大最小值比較Tab.4 Comparison of the maximum and minimum model iteration time in a virtual machine with a certain memory using a commercial server
圖2 商用服務器上相同CPU 核數(shù)不同內(nèi)存虛擬機平均迭代用時對比Fig.2 Comparison of the average iteration time of virtual machines with the same number of CPU cores and different memory on commercial servers
圖3 商用服務器上相同內(nèi)存不同CPU 核數(shù)虛擬機平均迭代用時對比Fig.3 Comparison of the average iteration time of virtual machines with the same memory and different CPU cores on commercial servers
引起迭代時間的變化大,迭代用時對于虛擬機核數(shù)的變化比較敏感,而對于非四核配置的虛擬機,其對于內(nèi)存的變化是不敏感的,若要通過改變內(nèi)存來提升虛擬機上目標識別任務的性能,需要先找到一個“最佳CPU 核數(shù)”,并在此基礎上對內(nèi)存進行調(diào)優(yōu),而這個“最佳CPU 核數(shù)”應當取決于云平臺虛擬化技術以及所使用的深度學習并行算法。
在國產(chǎn)服務器上,同樣,當ResNet 手寫體識別的驗證集準確率達到98%時,停止學習,計算這期間每一次迭代更新所用的平均時間作為一次測試結果,之后繼續(xù)取10 次測試結果的平均值來衡量其目標識別性能。國產(chǎn)服務器上的表現(xiàn)結果如表 5 所示。
表5 使用國產(chǎn)服務器的模型在不同虛擬機配置中每次參數(shù)迭代所用時間Tab.5 The time cost of each epoch in different virtual machine configurations using the domestic server model
在國產(chǎn)服務器上,相同CPU 核數(shù)不同內(nèi)存虛擬機所用的迭代時間和相同內(nèi)存不同CPU 核數(shù)的虛擬機所用迭代時間的對比圖如圖 4 和圖 5 所示。可以發(fā)現(xiàn),對于國產(chǎn)服務器,同樣并不是虛擬機配置越高每次迭代所花費的平均時間越短。由圖 4 可知,對于不同內(nèi)存的虛擬機,在CPU 核數(shù)為四核時,每次迭代用時均處于較低水平,對于8 G,16 G,32 G 和64 G的虛擬機,在CPU 核數(shù)為四核時,得到最短迭代用時,而128 G的虛擬機在核數(shù)為八核時取到了最短的迭代用時,也是這20 臺虛擬機最短的迭代用時。如圖 5 所示,在虛擬機的核數(shù)不同時,內(nèi)存均在128 G 時得到了最短的迭代用時。
圖4 商用服務器上相同CPU 核數(shù)不同內(nèi)存虛擬機平均迭代用時對比Fig.4 Comparison of the average iteration time of virtual machines with the same number of CPU cores and different memory on commercial servers
圖5 商用服務器上相同CPU 核數(shù)不同內(nèi)存虛擬機平均迭代用時對比Fig.5 Comparison of the average iteration time of virtual machines with the same number of CPU cores and different memory on commercial servers
在國產(chǎn)服務器上,對于一定核數(shù)而內(nèi)存不同的虛擬機配置,在本次實驗中其迭代用時的最大最小值之差如表 6 所示。對于一定內(nèi)存而核數(shù)不同的虛擬機配置,在本次實驗中其迭代用時的最大最小值之差如表 7所示。由于虛擬機核數(shù)變化所引起的迭代時間的變化比由于內(nèi)存變化所引起的迭代時間的變化大,迭代用時對于虛擬機核數(shù)的變化比較敏感。同樣在國產(chǎn)服務器上,若要通過改變內(nèi)存來提升虛擬機上目標識別任務的性能,也需要先找到一個“最佳CPU 核數(shù)”,并在此基礎上對內(nèi)存進行調(diào)優(yōu),而這個“最佳CPU 核數(shù)”應當取決于云平臺虛擬化技術以及所使用的深度學習并行算法。
表6 使用商用服務器的一定核數(shù)的虛擬機中模型迭代用時最大最小值比較Tab.6 Comparison of the maximum and minimum model iteration time in a virtual machine with a certain number of cores using a commercial server
表7 使用商用服務器的一定內(nèi)存的虛擬機中模型迭代用時最大最小值比較Tab.7 Comparison of the maximum and minimum model iteration time in a virtual machine with a certain memory using a commercial server
將表 2 和表 5 中的數(shù)據(jù)差值統(tǒng)計如表 8 所示,為模型在不同服務器及不同虛擬機配置下的所用迭代時間差。
表8 國產(chǎn)服務器上模型在不同虛擬機配置中每次參數(shù)迭代所用時間Tab.8 The time cost of each epoch of the model on the domestic server in different virtual machine configurations
如表 8 和圖 6 所示,模型在國產(chǎn)服務器和商用服務器中不同虛擬機配置下的所用的迭代時間基本是在使用較大的內(nèi)存配置時,差距最小,但是差值與內(nèi)存、CPU 核數(shù)的變化并不具有線性關系。
圖6 國產(chǎn)服務器上模型在不同虛擬機配置中每次參數(shù)迭代所用時間Fig.6 The time cost of each epoch of the model on the domestic server in different virtual machine configurations
本文針對基于艦載云虛擬機運行目標識別任務的性能優(yōu)化問題,分別在國產(chǎn)和商用服務器搭載的艦載云上建立不同CPU 核數(shù)以及內(nèi)存配置的虛擬機,并運行使用Resnet 模型的手寫體識別應用,對比分析國產(chǎn)和商用服務器上不同配置的虛擬機在進行目標識別時每次參數(shù)迭代更新的平均時間,有如下結論:在國產(chǎn)服務器實驗環(huán)境中的迭代時間明顯低于商用服務器,使用較大內(nèi)存配置的虛擬機時,這種差距會較為減少;無論是國產(chǎn)化環(huán)境還是商用環(huán)境,平均的迭代更新時間對于虛擬機的配置,相比較于內(nèi)存,對于CPU 核數(shù)的變化更為敏感,針對不同的智能應用應當存在“最適合的”CPU 核數(shù)或是完全可以滿足應用的CPU 核數(shù),達到該條件之后,其上的內(nèi)存配置調(diào)優(yōu)才更有意義。另外,對于智能應用,如何在包括且不限于GPU,F(xiàn)PGA 等異構平臺上優(yōu)化智能應用,充分使用計算資源,也是需要進一步研究的重要課題。