国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于深度學(xué)習(xí)的性能分析框架設(shè)計(jì)與實(shí)現(xiàn)*

2018-07-05 10:47馮赟龍何王全
關(guān)鍵詞:分類深度性能

馮赟龍,劉 勇,何王全

(江南計(jì)算技術(shù)研究所, 江蘇 無錫 214083)

1 引言

隨著高性能計(jì)算機(jī)技術(shù)的快速發(fā)展,越來越多的科研工作者能夠使用高性能計(jì)算機(jī)進(jìn)行研究。然而,高性能計(jì)算機(jī)體系結(jié)構(gòu)進(jìn)化得越來越復(fù)雜:更多的計(jì)算核心、更復(fù)雜的并行層次和存儲(chǔ)層次,應(yīng)用優(yōu)化的門檻逐漸提高,讓對(duì)相應(yīng)體系結(jié)構(gòu)不熟悉的普通用戶望而卻步,迫切需要一種能夠讓普通用戶使用的智能化性能分析工具。

智能化的程序性能分析方法正在成為一個(gè)研究趨勢(shì),原因主要有兩個(gè):(1)應(yīng)用優(yōu)化的迫切需求,現(xiàn)有性能分析工具大多數(shù)都極度依賴于用戶的性能分析經(jīng)驗(yàn)知識(shí),它們?cè)絹碓诫y以支撐用戶的性能優(yōu)化工作;(2)人工智能技術(shù)的進(jìn)步,為性能分析的智能化提供了有力的技術(shù)支撐。

機(jī)器學(xué)習(xí)作為重要的人工智能技術(shù)實(shí)現(xiàn)方法,已經(jīng)被學(xué)者們用于智能化程序性能分析的研究[1]。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種實(shí)現(xiàn)技術(shù),它在諸多領(lǐng)域均取得了重要成果,但并未出現(xiàn)在程序性能分析領(lǐng)域。本文提出了一種基于深度學(xué)習(xí)的程序性能智能分析框架,并在神威太湖之光[2]超級(jí)計(jì)算機(jī)上進(jìn)行了實(shí)現(xiàn),取得了良好的效果。它是深度學(xué)習(xí)技術(shù)在程序性能分析領(lǐng)域的一次探索和有益嘗試,可為相關(guān)的研究帶來一些啟示。

2 相關(guān)工作研究

2.1 程序性能分析

高性能計(jì)算應(yīng)用的性能分析工具根據(jù)所支持的功能分為三類:(1)采集類,主要提供基本的性能數(shù)據(jù)采集功能,如FPMPI(Fast Profiling library for MPI)[3]、mpiP[4]和PAPI(Performance API)[5]等;(2)可視化類,實(shí)現(xiàn)豐富的圖表幫助分析,如Vampir[6]和CUBE(Cube Uniform Behavioral Encoding)[7]等;(3)集成類,集成多種層次的數(shù)據(jù)采集和可視化分析功能,如Vtune[8]、Scalasca[9]、HPCToolkit[10]和TAU(Tuning and Analysis Utilities)[11]等。這些工具在性能數(shù)據(jù)的采集方面已經(jīng)有插裝、采樣、抽樣等大量成熟技術(shù),但對(duì)所采集數(shù)據(jù)的分析技術(shù)卻相對(duì)較弱,需要用戶掌握大量的體系結(jié)構(gòu)和性能分析經(jīng)驗(yàn)知識(shí)。隨著處理器從單核到多核再到眾核的不斷發(fā)展進(jìn)化,芯片體系結(jié)構(gòu)的日益復(fù)雜導(dǎo)致用戶使用性能分析工具的門檻不斷抬高。

除了長(zhǎng)期研究積淀形成的上述成熟工具外,還有大量的研究工作。Urlinger等人[12]提出一種基于預(yù)設(shè)性能問題自動(dòng)搜索的方法,通過設(shè)置性能指標(biāo)門限以及搜索策略,然后計(jì)算得到指標(biāo)的嚴(yán)重程度和指標(biāo)存在問題的可信程度,自動(dòng)搜索程序中的性能問題和瓶頸。該方法能夠?qū)崿F(xiàn)分布式自動(dòng)在線分析并且可以擴(kuò)展至數(shù)千規(guī)模的處理器,它主要被用來解決工具的可擴(kuò)展性問題。雖然它能夠?qū)崿F(xiàn)一定程度的自動(dòng)化分析,但是參數(shù)設(shè)置仍然依賴用戶的經(jīng)驗(yàn)知識(shí)。Yoo等人[1]提出的使用硬件事件自動(dòng)診斷性能問題方法ADP(Automated Diagnosis of Performance pathologies using hardware events),通過CFS(Correlation-based Feature Selection)方法自動(dòng)選擇關(guān)鍵硬件性能事件集構(gòu)建決策樹模型。但是,它忽略了硬件事件間復(fù)雜的影響關(guān)系,如圖1所示,其中A、B兩條線大致可將GLDPC(Global LoaD Per Cycle,指每cycle從主存加載數(shù)據(jù)的事件記數(shù))與IPC(Instructions Per Cycle)的關(guān)系劃分為三段:無明顯關(guān)系、負(fù)相關(guān)趨勢(shì)和負(fù)相關(guān)關(guān)系。直線A的左邊為無明顯關(guān)系,表示GLDPC的變化與IPC不存在明顯的關(guān)系;直線A、B之間為負(fù)相關(guān)趨勢(shì),隨著GLDPC的增大,IPC呈現(xiàn)出減少趨勢(shì);負(fù)相關(guān)關(guān)系指GLDPC與IPC存在一個(gè)確定的一次函數(shù)關(guān)系,即圖1中所示直線C在直線B右邊的線段,說明程序中GLD訪問為主要開銷。實(shí)際中還要再考慮其他指標(biāo)影響,關(guān)系將會(huì)更加復(fù)雜。

Figure 1 Example of the complex relationship between hardware performance events圖1 硬件性能事件的復(fù)雜關(guān)系示例

2.2 深度學(xué)習(xí)

深度學(xué)習(xí)使得機(jī)器學(xué)習(xí)能夠?qū)崿F(xiàn)眾多應(yīng)用,并擴(kuò)展了人工智能的領(lǐng)域范圍,它是2006年由Hinton教授提出的一種深層機(jī)器學(xué)習(xí)方法,具有較強(qiáng)的從樣本中提取特征以及對(duì)特征進(jìn)行轉(zhuǎn)換的能力,學(xué)習(xí)能力強(qiáng),是近幾年國(guó)內(nèi)外的研究熱點(diǎn)[13]。深度學(xué)習(xí)明確突出了特征學(xué)習(xí)的重要性,也就是說,通過逐層特征變換,將原空間的特征變換到新的空間,使分類或預(yù)測(cè)更加容易。深度學(xué)習(xí)的常用模型有自動(dòng)編碼器、稀疏編碼、深度置信網(wǎng)等。這些模型目前使用和應(yīng)用都比較廣泛,在圖像分類、語音識(shí)別、目標(biāo)識(shí)別、自然語言處理等多個(gè)領(lǐng)域均取得了成功應(yīng)用。

深度學(xué)習(xí)模型的訓(xùn)練過程分為兩步:預(yù)訓(xùn)練和調(diào)優(yōu)。第一步:從底層開始,一層一層地往頂層訓(xùn)練,采用無標(biāo)簽數(shù)據(jù)或標(biāo)簽數(shù)據(jù)訓(xùn)練第一層;在學(xué)習(xí)到第n-1層后,將第n-1層的輸出作為第n層的輸入,訓(xùn)練第n層,由此分別得到各層的參數(shù);第二步:基于第一步得到的各層參數(shù)進(jìn)一步優(yōu)化整個(gè)多層模型的參數(shù),這一步是有監(jiān)督的訓(xùn)練過程。

Figure 3 Framework of program performance analysis based on deep learning圖3 基于深度學(xué)習(xí)的程序性能分析框架

3 基于深度學(xué)習(xí)的性能分析方法

3.1 性能分析問題抽象

定位具體性能問題的過程,可抽象為一個(gè)分類問題。記一條性能數(shù)據(jù)為X,它包含多個(gè)資源類性能指標(biāo)Xi(i=1,2,…,m),將所有性能問題(C)劃分為若干性能問題類別(C1,C2,…,Cn),其中:

X=(X1,X2,…,Xm)

(1)

C=C1∪C2∪…∪Cn

(2)

Ci∩Cj=?(i,j=1,2,…,n)

(3)

則從采集的性能數(shù)據(jù)分析性能問題的過程可描述為一個(gè)確定X所屬分類Ci的問題。

3.2 基于深度學(xué)習(xí)的性能分析方法

基于深度學(xué)習(xí)的性能分析方法重點(diǎn)關(guān)注性能的分類模型,根據(jù)大量的性能數(shù)據(jù),經(jīng)過深度學(xué)習(xí)的訓(xùn)練,將多種性能指標(biāo)歸為幾種典型類型,并指導(dǎo)程序員把握最主要的性能問題。該方法需要大量的數(shù)據(jù)作為訓(xùn)練的輸入數(shù)據(jù),我們使用處理器周期數(shù)進(jìn)行標(biāo)準(zhǔn)化后的性能監(jiān)控單元PMU(Performance Monitoring Unit)事件計(jì)數(shù)指標(biāo)PI/Cycle,其中PI可以是任何一個(gè)PMU事件計(jì)數(shù),Cy-cle為處理器周期。 現(xiàn)階段有許多應(yīng)用廣泛的分類技術(shù),如決策樹、貝葉斯分類器等,這些淺層機(jī)器學(xué)習(xí)技術(shù),在性能數(shù)據(jù)集比較完備的情況下能夠達(dá)到非常好的效果,但目前硬件平臺(tái)PMU等資源限制,使我們難以獲得完備的性能數(shù)據(jù)集。而無論數(shù)據(jù)集是否完備,基于深度學(xué)習(xí)技術(shù)只需通過強(qiáng)大的學(xué)習(xí)能力對(duì)大量性能數(shù)據(jù)樣本進(jìn)行學(xué)習(xí),即可挖掘到各性能指標(biāo)間的復(fù)雜數(shù)據(jù)關(guān)系,建立起更為準(zhǔn)確的分析模型。當(dāng)前雖然已有利用機(jī)器學(xué)習(xí)進(jìn)行程序性能分析的研究,但僅用到了淺層機(jī)器學(xué)習(xí)方法,本文方法的創(chuàng)新在于引入深度學(xué)習(xí)技術(shù)。如圖2所示,左側(cè)輸入經(jīng)過標(biāo)準(zhǔn)化后的性能數(shù)據(jù)指標(biāo),經(jīng)過隱含層(Hidden Layers)的訓(xùn)練,右側(cè)輸出性能問題類別概率,概率最大的類即為性能問題類別。

Figure 2 Program performance classification based on deep learning圖2 基于深度學(xué)習(xí)的程序性能分類

4 基于深度學(xué)習(xí)的性能分析框架設(shè)計(jì)與實(shí)現(xiàn)

性能分析框架主要包括性能數(shù)據(jù)采集、基于深度學(xué)習(xí)的性能問題分類模型訓(xùn)練、性能數(shù)據(jù)分類和統(tǒng)計(jì)展示等四個(gè)部分,如圖3所示。基于深度學(xué)習(xí)的性能問題分類模型訓(xùn)練采用大量作業(yè)的性能數(shù)據(jù)進(jìn)行迭代訓(xùn)練,獲得比較準(zhǔn)確的性能問題分類,當(dāng)訓(xùn)練收斂后,對(duì)于新采集的性能數(shù)據(jù),可以進(jìn)行性能問題的診斷,并對(duì)多進(jìn)程的性能問題進(jìn)行統(tǒng)計(jì)分析。

4.1 性能數(shù)據(jù)采集

采集不同的性能指標(biāo)能夠確定不同的性能問題類型。理論上若能采集所有的性能指標(biāo),那么可以分析出任何潛在性能問題,但考慮到性能指標(biāo)采集時(shí)產(chǎn)生的程序擾動(dòng)和軟硬件開銷,以及硬件資源本身的限制,顯然選取其中若干重要的指標(biāo)進(jìn)行采集才是切實(shí)可行的方案。

深度學(xué)習(xí)技術(shù)依賴大量的數(shù)據(jù)進(jìn)行學(xué)習(xí),需要保證所采集數(shù)據(jù)的準(zhǔn)確性,否則將會(huì)影響模型的效果。獲取PMU事件計(jì)數(shù)指標(biāo)的開銷小,對(duì)程序本身的執(zhí)行幾乎不會(huì)造成明顯的干擾,所獲得的性能數(shù)據(jù)能夠準(zhǔn)確地反映程序的性能指標(biāo)。PMU事件計(jì)數(shù)可通過系統(tǒng)提供的API以及相關(guān)工具接口獲得。

4.2 基于深度學(xué)習(xí)的性能問題分類模型

4.2.1 稀疏編碼模型簡(jiǎn)介

稀疏編碼模型可以自動(dòng)從無標(biāo)注數(shù)據(jù)中學(xué)習(xí),給出比原始數(shù)據(jù)更好的特征描述,實(shí)際運(yùn)用時(shí)使用稀疏編碼器發(fā)現(xiàn)的特征取代原始數(shù)據(jù),往往能帶來更好的結(jié)果。本文使用深度學(xué)習(xí)的稀疏編碼模型進(jìn)行實(shí)驗(yàn)研究。

稀疏編碼模型由若干層自動(dòng)編碼器AE(Auto Encoder)堆疊而成,一個(gè)典型的AE結(jié)構(gòu)如圖4所示,輸出層y與輸入層x具有相同的規(guī)模結(jié)構(gòu),從輸入層x到隱含層h的過程記為函數(shù)f,從隱含層h到輸出層y的過程記為函數(shù)g,則:

h=f(x)=Sf(Wx+p)

(4)

y=g(h)=Sg(WTh+q)

(5)

其中Sf、Sg一般取為sigmod函數(shù);W為輸入層與隱含層之間的權(quán)值矩陣,WT表示隱含層與輸出層之間的權(quán)值矩陣,p和q分別表示隱含層與輸出層的偏置向量,為后續(xù)表示方便,記θ=(W,WT,p,q)。

假設(shè)輸入層輸入的數(shù)據(jù)樣本表示為x=(x1,x2,…,xn),A為包含N個(gè)數(shù)據(jù)樣本的訓(xùn)練集,則預(yù)訓(xùn)練AE的過程實(shí)質(zhì)上就是利用A對(duì)其參數(shù)θ的訓(xùn)練過程,解碼目標(biāo)是使y和x盡可能接近,其接近程度使用重構(gòu)誤差函數(shù)L(x,y)來刻畫,其定義為:

(6)

則訓(xùn)練集A的損失函數(shù)為:

(7)

對(duì)其進(jìn)行極小化即可得到該層AE的參數(shù)θ。

Figure 4 AE structure圖4 自動(dòng)編碼器結(jié)構(gòu)

然而實(shí)際中,如果直接對(duì)損失函數(shù)作極小化,有時(shí)候很可能得到一個(gè)恒等函數(shù)。為了避免這種情況,可以對(duì)損失函數(shù)進(jìn)行稀疏性限制,實(shí)現(xiàn)時(shí)通常采用一種基于相對(duì)熵的方法,損失函數(shù)如下:

(8)

其中,β為稀疏性懲罰項(xiàng)的權(quán)重系數(shù);ρ為稀疏性參數(shù),ηj表示輸入為xi時(shí)隱藏層上第j號(hào)神經(jīng)元在訓(xùn)練集A上的平均激活度。稀疏性懲罰項(xiàng)KL(ρ||ηj)的表達(dá)式為:

(9)

從KL(ρ||ηj)表達(dá)式可以看出,它隨著ρ與ηj差值的增大而逐漸減小,當(dāng)二者相等時(shí)取最小值0,因此可以通過最小化損失函數(shù)使得ρ與ηj盡量接近。

4.2.2 性能問題類別

依靠專家經(jīng)驗(yàn),可以根據(jù)性能指標(biāo)直接確定性能問題類別,但主觀性強(qiáng),我們使用一種相對(duì)客觀的方法,通過機(jī)器學(xué)習(xí)的聚類技術(shù)確定性能問題類別。

首先,使用聚類發(fā)現(xiàn)數(shù)據(jù)中的非隨機(jī)簇?cái)?shù)k,并使用差距統(tǒng)計(jì)(Gap Statistic)[14]方法進(jìn)行簇的有效性評(píng)估,通過選取滿足:

Gap(k)-(Gap(k+1)-sd(k+1))≥0

(10)

的最小k值確定最優(yōu)簇?cái)?shù),也就是需要?jiǎng)澐值男阅軉栴}類別數(shù)。然后,根據(jù)每個(gè)簇內(nèi)數(shù)據(jù)的特征賦予性能問題類別實(shí)際意義,如果不能很好地解釋每個(gè)簇就要考慮次優(yōu)的劃分方法,直到找到能被賦予實(shí)際意義的劃分。

4.2.3 模型訓(xùn)練

模型訓(xùn)練主要依靠經(jīng)驗(yàn)和實(shí)驗(yàn)嘗試。深度學(xué)習(xí)雖然在許多應(yīng)用中都取得了比較好的效果,但是其模型的訓(xùn)練卻缺乏堅(jiān)實(shí)的理論基礎(chǔ),針對(duì)特定問題需要多少層的神經(jīng)網(wǎng)絡(luò),每層網(wǎng)絡(luò)需要多少個(gè)神經(jīng)元,都只有一些經(jīng)驗(yàn)方法,因此應(yīng)參考相關(guān)經(jīng)驗(yàn)進(jìn)行實(shí)驗(yàn),根據(jù)模型的分類效果調(diào)整參數(shù),逐步確定較優(yōu)的模型參數(shù)。

4.3 神威太湖之光上的實(shí)現(xiàn)

我們?cè)谏裢獬?jí)計(jì)算機(jī)上實(shí)現(xiàn)了基于深度學(xué)習(xí)的性能問題分類模型,使用R[15]作為編程語言,R語言對(duì)統(tǒng)計(jì)計(jì)算和作圖方面有很好的支持,近幾年在數(shù)據(jù)挖掘、大數(shù)據(jù)等領(lǐng)域有廣泛的應(yīng)用。在實(shí)現(xiàn)過程中,我們使用了R語言的cluster[16]庫(版本2.0.5)和deepnet[17]庫(版本0.2)進(jìn)行編程。

Figure 5 Radar figure of the performance data圖5 性能數(shù)據(jù)雷達(dá)圖

4.3.1 性能指標(biāo)和數(shù)據(jù)

神威太湖之光是一個(gè)基于國(guó)產(chǎn)申威眾核處理器的異構(gòu)平臺(tái),目前提供了作業(yè)級(jí)性能監(jiān)測(cè)工具、性能分析API等性能分析支持,能夠采集作業(yè)和指定代碼段的PMU數(shù)據(jù)。通過PMU獲取的數(shù)據(jù)可被單位化成8個(gè)指標(biāo)協(xié)助用戶進(jìn)行性能分析,如表1所示。

Table 1 Metrics and their abbreviations表1 性能指標(biāo)及其簡(jiǎn)寫

當(dāng)前通過該工具已經(jīng)產(chǎn)生了大量的PMU數(shù)據(jù)樣本,這些數(shù)據(jù)是許多用戶的課題多次運(yùn)行時(shí)產(chǎn)生的,包含了應(yīng)用優(yōu)化過程中不同版本的性能數(shù)據(jù),有較好的隨機(jī)性和代表性。經(jīng)過人工分析,認(rèn)為這8個(gè)性能指標(biāo)已經(jīng)能夠識(shí)別出現(xiàn)頻繁的幾類性能問題,采用這8個(gè)性能指標(biāo)作為模型訓(xùn)練的輸入是可行的。

4.3.2 性能問題類別

我們隨機(jī)抽取500條原始的性能數(shù)據(jù)用雷達(dá)圖表示,如圖5所示,各指標(biāo)數(shù)值進(jìn)行了取對(duì)數(shù)處理。其中每個(gè)小圖代表一條性能數(shù)據(jù),任意選取其中一個(gè)小圖觀察,均可以發(fā)現(xiàn)其他相似度很高的小圖,說明性能數(shù)據(jù)中存在一定的規(guī)律,可以使用聚類技術(shù)來確定其中的簇,給出性能問題的類別。

基于差距統(tǒng)計(jì)標(biāo)準(zhǔn)評(píng)估簇?cái)?shù),結(jié)果如圖6所示,橫坐標(biāo)表示簇的個(gè)數(shù),縱坐標(biāo)表示差距統(tǒng)計(jì)值,最優(yōu)結(jié)果為第一個(gè)差距統(tǒng)計(jì)值大于0的簇個(gè)數(shù)。實(shí)驗(yàn)結(jié)果表明,將數(shù)據(jù)劃分為6個(gè)性能問題類別是最理想的。

Figure 6 Gap statistics圖6 差距統(tǒng)計(jì)結(jié)果

使用cluster庫中clara[16]方法將性能數(shù)據(jù)聚為6類,其中的輸入訓(xùn)練數(shù)據(jù)均為通過均值和方差標(biāo)準(zhǔn)化后的數(shù)據(jù),負(fù)值表明數(shù)據(jù)相對(duì)較小,對(duì)其簇內(nèi)典型數(shù)據(jù)進(jìn)行分析,結(jié)果如圖7所示,其中縱坐標(biāo)的含義見表1。

Figure 7 Various metric values of the typical representation of the cluster of 6圖7 簇?cái)?shù)為6時(shí)簇內(nèi)典型代表的各指標(biāo)情況

第1個(gè)簇的IPC較大,并且其他指標(biāo)均較小,說明該簇代表各方面的性能均衡,沒有明顯的性能瓶頸;第3個(gè)簇雖然各個(gè)指標(biāo)也均較小,但其IPC較小,表明程序性能差但不是由于所選取的這些指標(biāo)導(dǎo)致的,為其他類型,可以進(jìn)一步優(yōu)化指令序列提高IPC;第4個(gè)簇的DTBMPC指標(biāo)明顯偏大,說明DTB Miss對(duì)程序性能的影響很大;第6個(gè)簇的MEMAPC指標(biāo)明顯偏大,說明需要重點(diǎn)優(yōu)化訪存行為;第2個(gè)簇可發(fā)現(xiàn)其DMAGPC值偏大,說明DMA比較碎,可以嘗試減少DMA次數(shù),比如數(shù)據(jù)打包優(yōu)化;第5個(gè)簇綜合ICache的指標(biāo)可發(fā)現(xiàn)其L2ICMPC大但是L2ICAPC卻小,也就是說其L2ICache的Miss率較高。

根據(jù)上述分析結(jié)果,可以將神威太湖之光上的性能問題分為6類,如表2所示。

4.3.3 訓(xùn)練性能問題分類模型

深度學(xué)習(xí)總會(huì)在擬合上出現(xiàn)問題,只是程度不同而已:若訓(xùn)練集比驗(yàn)證集的分類正確率更高,表明可能出現(xiàn)了過擬合;若兩個(gè)分類正確率都很低,表明可能出現(xiàn)了欠擬合。正則化是遏制過擬合訓(xùn)練數(shù)據(jù)的有效方法,最熱門的正則化技術(shù)是dropout,它在訓(xùn)練期間隨機(jī)跳過神經(jīng)元,并強(qiáng)迫層內(nèi)其他算法重拾這些神經(jīng)元,簡(jiǎn)單而有效。對(duì)欠擬合問題,可以通過增加參數(shù)搜索網(wǎng)格的容量并進(jìn)行更多、更長(zhǎng)的訓(xùn)練調(diào)整。當(dāng)模型性能長(zhǎng)時(shí)間得不到提升時(shí),結(jié)束當(dāng)前學(xué)習(xí),防止過學(xué)習(xí)的問題。

Table 2 Categories and description of performance problems表2 性能問題類別及描述

在預(yù)訓(xùn)練階段,我們直接使用15 000個(gè)有效作業(yè)的性能數(shù)據(jù),每個(gè)作業(yè)包含若干進(jìn)程,每個(gè)進(jìn)程的性能數(shù)據(jù)可以作為一條輸入。在該階段,從中抽取了10萬條無標(biāo)簽性能數(shù)據(jù)樣本作為預(yù)訓(xùn)練集。初步訓(xùn)練使用較少的迭代次數(shù),確定網(wǎng)絡(luò)層數(shù)和每個(gè)隱含層內(nèi)的節(jié)點(diǎn)數(shù),如圖8所示,可見隱含層數(shù)為3、每個(gè)隱含層節(jié)點(diǎn)數(shù)為30時(shí)能獲得較好的分類性能。

Figure 8 Effect of the number of hidden layers and nodes on classification accuracy圖8 隱含層數(shù)和隱層節(jié)點(diǎn)數(shù)對(duì)分類正確率的影響

在微調(diào)階段,選取其中部分?jǐn)?shù)據(jù)根據(jù)體系結(jié)構(gòu)和性能調(diào)優(yōu)的經(jīng)驗(yàn)知識(shí)打上分類標(biāo)簽生成的1 000個(gè)微調(diào)樣本,對(duì)訓(xùn)練的成果進(jìn)行微調(diào),通過反復(fù)迭代進(jìn)行模型優(yōu)化,模型在測(cè)試集上的分類正確率不斷提升,目前已到達(dá)了94%(與標(biāo)簽數(shù)據(jù)對(duì)比),每當(dāng)有提升時(shí)記錄其分類正確率。如圖9所示,可見所訓(xùn)練的模型能夠以較高的正確率識(shí)別出性能問題。

Figure 9 Changes in classification accuracy of the iterative model圖9 迭代模型分類正確率變化圖

本文提出的性能分析框架可以實(shí)現(xiàn)作業(yè)級(jí)和指定程序代碼級(jí)的性能智能分析。作業(yè)級(jí)的性能分析通過集成作業(yè)管理部分功能,可實(shí)現(xiàn)透明的作業(yè)級(jí)性能數(shù)據(jù)采集和智能分析;指定程序代碼級(jí)的性能分析通過在代碼段的開始和結(jié)束位置插入性能API接口,由框架實(shí)現(xiàn)該代碼段性能數(shù)據(jù)的采集和智能分析。相比于傳統(tǒng)的性能分析工具,該框架能夠直觀地給出作業(yè)或代碼段最主要的性能瓶頸問題,降低復(fù)雜系統(tǒng)性能調(diào)優(yōu)的門檻,提高程序優(yōu)化的進(jìn)度。

5 實(shí)驗(yàn)結(jié)果與分析

為了驗(yàn)證基于深度學(xué)習(xí)的性能分析框架的正確性和有效性,我們利用國(guó)家超算無錫中心的神威太湖之光超級(jí)計(jì)算機(jī)系統(tǒng)進(jìn)行了測(cè)試。神威太湖之光每個(gè)節(jié)點(diǎn)由一顆申威眾核處理器構(gòu)成(260核,1.45 GHz),配備32 GB內(nèi)存,運(yùn)行Linux操作系統(tǒng),節(jié)點(diǎn)間采用56 Gbps的Infiniband FDR網(wǎng)絡(luò)連接。測(cè)試中,最大使用了神威太湖之光計(jì)算機(jī)系統(tǒng)1 024 CPU的計(jì)算資源。

(1)FDTD課題。

FDTD課題是電磁領(lǐng)域的典型應(yīng)用,采用時(shí)域有限差分方法求解麥克斯韋方程。課題采用高階差分方法,基于區(qū)域分解并行,每個(gè)迭代步完成邊緣通信和計(jì)算。

FDTD課題的分析過程和效果如表3所示。

Table 3 Analysis process of FDTD表3 FDTD分析過程和效果

采集的數(shù)據(jù)經(jīng)模型分析輸出為Mem類問題,程序員將課題中主要的三個(gè)只讀的數(shù)組拷貝到片上高速存儲(chǔ)器進(jìn)行優(yōu)化,性能提升45%;再次分析后顯示為Mem類問題,程序員發(fā)現(xiàn)還有另外兩個(gè)變量未利用片上高速存儲(chǔ)器進(jìn)行優(yōu)化;優(yōu)化后再次分析結(jié)果為Balance,至此核心段性能提升約711%。

(2)微孔道擴(kuò)散過程MD模擬課題。

該課題是分子動(dòng)力學(xué)應(yīng)用,計(jì)算分子之間相互作用力。核心計(jì)算采用區(qū)域分解的方式,在計(jì)算過程中交換重疊邊界上數(shù)據(jù)信息。

MD課題的分析過程和效果如表4所示。采集的數(shù)據(jù)經(jīng)模型分析輸出為Mem類問題,程序員將課題中的多個(gè)臨時(shí)變量聲明為局部變量,性能提升34%;再次分析顯示依然為Mem類問題,程序員將其中多個(gè)數(shù)組拷貝片上高速存儲(chǔ)器進(jìn)行優(yōu)化,性能提升73%;再次分析還是為Mem類問題,程序員發(fā)現(xiàn)拷貝數(shù)據(jù)方式不是最優(yōu),對(duì)數(shù)據(jù)進(jìn)行動(dòng)態(tài)拷貝優(yōu)化;再次分析結(jié)果為Balance,至此核心段性能提升約218%。

Table 4 Analysis process of MD表4 MD分析過程和效果

(3)解有限域上某類線性方程組。

課題的核心計(jì)算為一個(gè)次數(shù)達(dá)百萬級(jí)別的并行循環(huán),單次循環(huán)內(nèi)主要完成如下工作:首先根據(jù)循環(huán)迭代變量的位置和原始數(shù)據(jù)構(gòu)造一個(gè)線性方程組,然后求解該線性方程組并保留部分有價(jià)值的數(shù)據(jù),其中構(gòu)造線性方程組的過程存在數(shù)量眾多的大跨度離散寫操作。

如表5所示,核心段某版本,經(jīng)分析為DTB類問題,程序員將其中數(shù)據(jù)進(jìn)行排序優(yōu)化;再次分析結(jié)果為Balance,至此核心段性能提升約67%。

Table 5 Analysis process of solving equation表5 解某方程核心段分析過程

(4)CESM課題MICRO_MSG核心段。

CESM是地球系統(tǒng)模式應(yīng)用課題,MICRO_MSG是重要的核心段,包含復(fù)雜的函數(shù)調(diào)用關(guān)系。

micro_mg核心段的分析過程和效果如表6所示。采集的數(shù)據(jù)經(jīng)模型分析輸出為ICache類問題,程序員根據(jù)核心段調(diào)用關(guān)系對(duì)函數(shù)順序進(jìn)行重排優(yōu)化;再次分析結(jié)果為Balance,核心段性能提升約230%。

Table 6 Analysis process of micro_mg表6 micro_mg核心段分析過程

6 結(jié)束語

本文提出了一種基于深度學(xué)習(xí)的性能分析方法和框架。基于深度學(xué)習(xí)的性能分析方法使用簇評(píng)估和稀疏編碼深度學(xué)習(xí)技術(shù),在大量性能監(jiān)測(cè)數(shù)據(jù)訓(xùn)練的基礎(chǔ)上,將程序性能問題分為若干類,并給出優(yōu)化方向性建議。我們?cè)谏裢馍蠈?shí)現(xiàn)了程序性能分析框架的原型,能夠根據(jù)性能監(jiān)測(cè)數(shù)據(jù),直觀地指導(dǎo)程序員快速把握當(dāng)前應(yīng)用最為突出的性能瓶頸問題,在當(dāng)前性能瓶頸解決后可進(jìn)一步迭代,直到取得滿意的性能結(jié)果。實(shí)驗(yàn)結(jié)果表明,該性能分析框架能有效提高應(yīng)用優(yōu)化的效率,降低用戶調(diào)優(yōu)代碼的成本。

本文研究工作中得到了國(guó)家超算無錫中心的大力支持和無私幫助,在此表示衷心的感謝?;谏疃葘W(xué)習(xí)的性能分析方法可以推廣到其它多核和眾核系統(tǒng)。下一步我們將繼續(xù)完善和優(yōu)化該方法和實(shí)現(xiàn),采集更多的數(shù)據(jù)進(jìn)行訓(xùn)練,進(jìn)一步提高判斷的準(zhǔn)確性,為更多的應(yīng)用提供智能化的性能優(yōu)化服務(wù)。

[1] Yoo W,Larson K,Baugh L,et al.Adp:Automated diagnosis of performance pathologies using hardware events[C]∥Proc of the 12th ACM Sigmetrics/Performance,2012:283-294.

[2] Fu H,Liao J,Yang J,et al.The Sunway Taihulight supercomputer:System and applications[J].Science in China Series F:Information Sciences,2016,59(7):072001.

[3] FPMPI Team. Fast profiling library for MPI[EB/OL].[2017-11-28].http:∥www.mcs.anl.gov/research/projects/fpmpi/WWW/index.html.

[4] Chris C,Jeffery V.Mpip:Lightweight,Scalable MPI profiling[EB/OL].[2017-08-30].http:∥mpip.sourceforge.net.

[5] PAPI Team.PAPI[EB/OL].[2017-08-06].http:∥icl.cs.utk.edu/papi.

[6] Popescu M,Hotrabhsvananda B,Moore M.VAMPIR:An automatic fall detection system using a vertical PIR sensor array[C]∥Proc of International Conference on Pervasive Computing,2012:163-166.

[7] Scalasca Team.Cube 4.x series[EB/OL].[2017-04-15].http:∥www.scalasca.org/software/cube-4.x/download.html.

[8] Intel Corporation. Intel vtune amplifier 2017[EB/OL].[2017-09-08].https:∥software.intel.com/en-us/intel-vtune-amplifier-xe.

[9] Scalasca Team.Scalasca[EB/OL].[2017-11-28].http:∥www.scalasca.org.

[10] Adhianto L,Banerjee S,Fagan M,et al.Hpctoolkit tools for performance analysis of optimized parallel programs[J].Concurrency and Computation:Practice and Experience,2010,22(6):685-701.

[11] Malony A D,Shende S.The TAU parallel performance system[J].International Journal of High Performance Computing Application,2006,20(2):287-311.

[12] Urlinger K,Gerndt M,Kereku E.Periscope:Advanced techniques for performance analysis[C]∥Proc of Parallel Computing:Current & Future Issuesof High-End Computing,2005:15-26.

[13] Yu Kai, Jia Lei,Chen Yu-qiang.Deep learning:Yesterday,today,and tomorrow[J].Journal of Computer Research and Development,2013,50(9):1799-1804.(in Chinese)

[14] Broberg P,Kohl M,Harrington J.Gap statistic for estimating the number of clusters[EB/OL].[2017-03-01].http:∥cran.r-project.org/web/packages/clusGap/index.html.

[15] R Development Core Team.The R project for statistical computing[EB/OL].[2017-03-24].http:∥www.r-project.org.

[16] Maechler M, Rousseeuw P, Struyf A. Cluster:Finding groups in data[EB/OL].[2017-03-02].http:∥cran.r-project.org/web/packages/cluster/index.html.

[17] Xiao R.Deep learning toolkit in R[EB/OL].[2017-03-02].http:∥cran.r-project.org/web/packages/deepnet/index.html.

附中文參考文獻(xiàn):

[13] 余凱,賈磊,陳雨強(qiáng).深度學(xué)習(xí)的昨天,今天和明天[J].計(jì)算機(jī)研究與發(fā)展,2013,50(9):1799-1804.

猜你喜歡
分類深度性能
分類算一算
深度理解一元一次方程
提供將近80 Gbps的帶寬性能 DisplayPort 2.0正式發(fā)布
分類討論求坐標(biāo)
深度觀察
深度觀察
深度觀察
數(shù)據(jù)分析中的分類討論
教你一招:數(shù)的分類
Al-Se雙元置換的基于LGPS的thio-LISICON的制備與性能表征