張致江 吳婷 于振華 潘青華
摘要:針對研究和生產(chǎn)中模型訓(xùn)練集群中異構(gòu)、同構(gòu)的NPU調(diào)度效率問題,提出4種調(diào)度策略;經(jīng)過在科大訊飛實(shí)際生產(chǎn)實(shí)踐,可以有效提高調(diào)度效果,提升NPU資源的利用率。
關(guān)鍵詞:人工智能;NPU;并行策略
引言
自 1956 年人工智能概念被提出之后,人工智能技術(shù)因算法收斂、計(jì)算機(jī)計(jì)算力的問題,經(jīng)歷幾次波峰波谷式迭代發(fā)展。近幾年經(jīng)過不同領(lǐng)域科學(xué)家的堅(jiān)持研究,如 BP 算法提出、高性能計(jì)算芯片的研發(fā)成功,促進(jìn)了人工智能技術(shù)飛速發(fā)展。現(xiàn)在,人工智能技術(shù)在語音語言、圖像視頻、自然語言理解等方向上有重大突破,并在醫(yī)療、教育、工業(yè)制造等領(lǐng)域取得了顯著的成績。
人工智能技術(shù)是模型驅(qū)動型技術(shù),利用模型和輸入的參數(shù)進(jìn)行計(jì)算從而實(shí)現(xiàn)語音語言、圖像視頻、自然語言理解的任務(wù)。在研究和生產(chǎn)實(shí)踐過程中,有兩個重要的過程;其一、進(jìn)行人工智能模型的訓(xùn)練,其二、使用模型進(jìn)行生產(chǎn)實(shí)踐。訓(xùn)練過程需要很大的計(jì)算量,常規(guī)的CPU難以高效率的完成訓(xùn)練任務(wù),例如1萬小時(shí)的語音數(shù)據(jù)訓(xùn)練如果使用一顆常規(guī)的CPU需要1個月時(shí)間;為此,學(xué)術(shù)界和工業(yè)界都是使用專門的加速芯片(統(tǒng)稱NPU)進(jìn)行模型的計(jì)算訓(xùn)練;1萬小時(shí)的語音數(shù)據(jù)訓(xùn)練,使用專用的GPU進(jìn)行計(jì)算,只需要半天時(shí)間。所以,使用NPU進(jìn)行模型訓(xùn)練是必須的選擇。在大規(guī)模的研究和生產(chǎn)實(shí)踐中,提升加速芯片調(diào)度效率非常重要。
一、同構(gòu)加速芯片調(diào)度優(yōu)化
(一)同構(gòu)芯片
如圖中所示,模型訓(xùn)練程序面向加速芯片的運(yùn)行時(shí)驅(qū)動進(jìn)行編程;運(yùn)行時(shí)驅(qū)動調(diào)用物理芯片進(jìn)行實(shí)際計(jì)算。隨著物理芯片工藝制程提升以及芯片微架構(gòu)的演進(jìn),芯片廠商在不同階段會生產(chǎn)出使用方式不同的物理芯片。運(yùn)行時(shí)驅(qū)動可以屏蔽不同時(shí)期的芯片的使用方式的差異。使用統(tǒng)一運(yùn)行時(shí)API的不同物理芯片稱為同構(gòu)芯片,如Nvidia公司的Tesla K40、Tesla M40、Tesla P40、Tesla V100等;對于同構(gòu)芯片,可以使用同一套代碼編譯的程序。
(二)調(diào)度策略
策略一,按照任務(wù)需要芯片數(shù)量分組。因服務(wù)器制造工藝的水平,現(xiàn)在一臺服務(wù)器有支持4顆NPU、8顆NPU兩種規(guī)格;考慮到計(jì)算與傳輸平衡的問題,訓(xùn)練有使用1顆NPU進(jìn)行計(jì)算的單芯片程序,有使用4顆、8顆、16顆NPU進(jìn)行計(jì)算的多芯片程序。本文提出按照單芯片程序和多芯片程序的應(yīng)用場景,將NPU集群中的服務(wù)器分成兩個組即單芯片程序運(yùn)行組和多芯片程序運(yùn)行組。同時(shí),規(guī)范單芯片程序只能運(yùn)行在單芯片程序運(yùn)行組中。
策略二,常規(guī)和預(yù)留分組策略。在實(shí)際研究和生產(chǎn)過程中,研究和生產(chǎn)活動有輕重緩急;人工智能訓(xùn)練任務(wù)是數(shù)據(jù)密集型任務(wù),一次訓(xùn)練需要很長的時(shí)間進(jìn)行訓(xùn)練。如果不能處理好緊急任務(wù)和常規(guī)任務(wù),那么緊急任務(wù)的需求很難滿足。在這種情況下,設(shè)置常規(guī)運(yùn)行組和預(yù)留應(yīng)急運(yùn)行組,以滿足不同緊急度的任務(wù)需求。
二、異構(gòu)加速芯片聯(lián)合調(diào)度優(yōu)化
(一)并行計(jì)算
著研究和生產(chǎn)推進(jìn),人工智能模型訓(xùn)練的數(shù)據(jù)越來越多、模型結(jié)構(gòu)越來越復(fù)雜,導(dǎo)致計(jì)算量越來越大,單芯片很難滿足研究和生產(chǎn)的需要。為了加快計(jì)算時(shí)間,提升研究和生產(chǎn)的效率,采用并行計(jì)算策略非常重要。并行計(jì)算策略有2種具體的方案,即數(shù)據(jù)并行和模型并行。數(shù)據(jù)并行即將訓(xùn)練數(shù)據(jù)分布在不同的NPU上計(jì)算,最后匯總不同NPU上的模型計(jì)算結(jié)果;模型并行即將模型計(jì)算的不同部分分布在不同的NPU上進(jìn)行計(jì)算,最后直接輸出計(jì)算好的模型。
(二)調(diào)度優(yōu)化
其一,異構(gòu)芯片各自計(jì)算不同數(shù)據(jù)。訓(xùn)練服務(wù)器集群在建設(shè)的過程中,會存在不同廠商的NPU芯片的情況。如圖1所示,訓(xùn)練程序針對不同廠商的運(yùn)行時(shí)驅(qū)動進(jìn)行適配編譯,即可運(yùn)行在不同的廠商的硬件芯片上。這種情況下,可以采用數(shù)據(jù)并行的策略。需要注意兩點(diǎn):第一,不同芯片運(yùn)行的程序的二進(jìn)制文件不同,注意做好調(diào)度;其二,不同芯片計(jì)算性能不同,注意針對不同的芯片分配不同的計(jì)算數(shù)據(jù)。
其二,異構(gòu)芯片分別計(jì)算模型不同部分。隨著研究的深入,人工智能模型結(jié)構(gòu)越來越復(fù)雜、模型的規(guī)模越來越大;NPU芯片因“加速性能-存儲性能”的平衡考慮,NPU集成存儲的可用空間有時(shí)不能滿足實(shí)際研究和生產(chǎn)的需要。這種情況下,可以將模型的不同計(jì)算部分拆分成不同的計(jì)算程序運(yùn)行在不同的計(jì)算部件上。如,在自然語言理解的模型上,大部分情況下模型最后一層參數(shù)非常龐大,這一層存儲在內(nèi)存中,使用CPU進(jìn)行計(jì)算;即,使用CPU和NPU協(xié)同進(jìn)行模型的計(jì)算。
三、結(jié)語
人工智能實(shí)際應(yīng)用給社會帶了翻天覆地的變化;可被采集的大規(guī)模有效數(shù)據(jù)和高性能的計(jì)算芯片出現(xiàn),推動了人工智能技術(shù)的演進(jìn)。與此同時(shí),帶了實(shí)際研究和生產(chǎn)中計(jì)算資源調(diào)度復(fù)雜度的挑戰(zhàn)。本文闡述了在同構(gòu)、異構(gòu)的NPU場景下,不同復(fù)雜度的模型訓(xùn)練任務(wù)的調(diào)度優(yōu)化策略;經(jīng)過在科大訊飛公司的實(shí)際實(shí)踐,能提升實(shí)際研究和生產(chǎn)的計(jì)算資源的綜合使用效率。