
智東西(公眾號:zhidxcom)
編輯 | 孫悅
智東西6月5日消息,近日GTIC 2021嵌(qian)入(ru)式AI創新(xin)峰(feng)會在(zai)北京圓滿收官(guan)!在(zai)這(zhe)場(chang)全天座無虛席、全網直播觀看人(ren)數逾150萬(wan)次(ci)的(de)高(gao)規格產(chan)業(ye)峰(feng)會上,來自產(chan)業(ye)鏈上下游的(de)16位大(da)佬共(gong)聚(ju)一堂,圍繞嵌(qian)入(ru)式AI的(de)軟硬件生(sheng)態創新(xin)、家居(ju)AIoT、移動機器人(ren)和(he)工業(ye)制(zhi)造產(chan)業(ye)4大(da)版塊地(di)圖,帶來了深入(ru)淺出的(de)分享。
會上,商湯科技副(fu)總裁、通用(yong)智(zhi)能(neng)技術負責人閆俊杰博士發表了《極致靈活(huo)的(de)深(shen)度學(xue)習模型優化與部署》的(de)主(zhu)題演講(jiang)。
▲商湯科技(ji)副(fu)總裁、研究院副(fu)院?、通?智能負責?閆俊杰
商湯推出(chu)Spring.NART模型部(bu)署框架,支持代碼級別(bie)、算子級別(bie)及網(wang)絡級別(bie)等不同(tong)的接(jie)入級別(bie),以通過統一的接(jie)入框架適(shi)配(pei)多種深度學習芯片。據稱(cheng),該框架支持16類不同(tong)硬件設備,能保證算法(fa)方案靈活(huo)跑在各類設備上。
同(tong)時,商(shang)湯(tang)通過編譯優(you)化技術及(ji)一(yi)套量(liang)(liang)化模型生產工具(ju),使模型在Arm框架(jia)和英(ying)偉(wei)達GPU上(shang)都(dou)能實(shi)現低bit量(liang)(liang)化;同(tong)時,除(chu)了系統層面(mian)的(de)優(you)化,商(shang)湯(tang)今年(nian)還提出(chu)了媲美在線(xian)量(liang)(liang)化的(de)離(li)線(xian)量(liang)(liang)化算法(fa)BRECQ,首次將4bit離(li)線(xian)量(liang)(liang)化的(de)效(xiao)果(guo)做到接(jie)近量(liang)(liang)化訓練,以(yi)此實(shi)現高(gao)效(xiao)的(de)模型自動(dong)化部署(shu)。
另外,在軟硬(ying)件協同方(fang)面(mian),商湯兼顧結構、推(tui)理庫(ku)和硬(ying)件,建立了一個計算數據(ju)庫(ku)Spring.GPDB(Graph Performance DataBase),基于這(zhe)一軟硬(ying)件協同的數據(ju)庫(ku)對已有模型(xing)做診斷并改進(jin),使(shi)模型(xing)得到(dao)較好的精度和速度提升。
總的來說(shuo),針對(dui)硬件多(duo)樣化、模型(xing)(xing)壓(ya)縮、模型(xing)(xing)自動化部署(shu)三大挑戰(zhan),商湯試(shi)圖讓深(shen)度學習模型(xing)(xing)在嵌入式(shi)設備上靈(ling)活優化和部署(shu)。
以下為閆俊杰演講實錄整理:
大(da)家好,非常高興有(you)機會跟(gen)大(da)家分(fen)享過去幾年我(wo)們在深度(du)學(xue)習模(mo)(mo)(mo)型(xing)(xing)的(de)優化和(he)部署上做(zuo)的(de)工作。首(shou)先我(wo)們給(gei)一個(ge)(ge)定(ding)義:深度(du)學(xue)習模(mo)(mo)(mo)型(xing)(xing)生產(chan)的(de)流(liu)水線。首(shou)先從(cong)數據經過訓練系(xi)統,得到一個(ge)(ge)設(she)備(bei)無關的(de)模(mo)(mo)(mo)型(xing)(xing),這個(ge)(ge)模(mo)(mo)(mo)型(xing)(xing)只包含一些參數和(he)網絡結(jie)構。接下(xia)來(lai)需要通過部署系(xi)統和(he)硬件做(zuo)一些適配(pei),得到設(she)備(bei)綁定(ding)的(de)模(mo)(mo)(mo)型(xing)(xing)。最后(hou)加上深度(du)學(xue)習算法之(zhi)外的(de)串聯,就可以得到在各種不同設(she)備(bei)如服務器、邊緣設(she)備(bei)、AIoT設(she)備(bei)上來(lai)使(shi)用的(de)完(wan)整解(jie)決(jue)方(fang)案。
一、深度學習模型的三大挑戰:設備、性能、自動化能力
這(zhe)里的(de)(de)(de)假設是我(wo)(wo)們得(de)到了(le)一(yi)個(ge)模型(xing),這(zhe)個(ge)模型(xing)可能用(yong)在(zai)各種各樣的(de)(de)(de)設備上(shang)(shang),包(bao)含任(ren)意的(de)(de)(de)芯(xin)片。我(wo)(wo)們需要有一(yi)套(tao)好(hao)的(de)(de)(de)方(fang)案,讓(rang)這(zhe)個(ge)模型(xing)非(fei)常靈(ling)活地(di)部署在(zai)任(ren)意的(de)(de)(de)芯(xin)片上(shang)(shang),同時(shi)還要有較高的(de)(de)(de)部署效率。那這(zhe)里面(mian)有哪些挑戰(zhan)?經過(guo)過(guo)去幾年的(de)(de)(de)實踐,我(wo)(wo)們總(zong)結(jie)主(zhu)要有三點。
(1)支持多(duo)款硬件設(she)備(bei)。商湯科技從2017年開始,首次(ci)把深度學習的(de)人臉檢測(ce)放到(dao)相機上(shang)(shang)(shang)。當時芯片(pian)比較少,邊緣(yuan)上(shang)(shang)(shang)只有Arm可以用(yong),沒有NPU。隨著近幾年的(de)發展,在邊緣(yuan)設(she)備(bei)上(shang)(shang)(shang)可用(yong)的(de)芯片(pian)越來越多(duo),同時也出現(xian)了另(ling)一(yi)個問(wen)題:怎(zen)么(me)讓同一(yi)模型能(neng)夠靈活地(di)配適(shi)于任(ren)意的(de)設(she)備(bei)上(shang)(shang)(shang)?這是(shi)我們需要解決(jue)的(de)第一(yi)個挑戰。
(2)其次(ci)是高效能。這一點在邊緣設(she)備上(shang)尤(you)其明顯,邊緣設(she)備的功耗很低,計算(suan)能力沒(mei)有(you)那么高。怎么能在邊緣設(she)備上(shang)發(fa)揮極致的性能?這就需要進一步進行量化或者稀疏的工作。
(3)最后是自(zi)動化(hua)。如果只需要(yao)部署一個(ge)模型(xing),這(zhe)沒有什么挑戰,實在(zai)不行手(shou)工(gong)來調就好了(le)。但是在(zai)工(gong)業化(hua)的時代,比如像商湯(tang)這(zhe)樣的公(gong)司每天需要(yao)產(chan)出幾百個(ge)模型(xing),顯(xian)然不可(ke)能(neng)全部靠(kao)人來手(shou)工(gong)部署,我們(men)需要(yao)有一套(tao)(tao)自(zi)動化(hua)的系統。而這(zhe)套(tao)(tao)自(zi)動化(hua)系統需要(yao)能(neng)夠處理各(ge)種hard case和corner case,因(yin)此面臨很多新的挑戰。
首先(xian)給大(da)家介紹我們怎么解決(jue)多設備(bei)的(de)(de)(de)問(wen)題?假如(ru)設備(bei)可(ke)控,基(ji)于代碼生(sheng)成(cheng)的(de)(de)(de)方案是最簡單的(de)(de)(de),比如(ru)TVM,類似這樣的(de)(de)(de)技(ji)術提(ti)供(gong)了非常靈活的(de)(de)(de)框架。現在(zai)大(da)部分能(neng)用的(de)(de)(de)芯(xin)片一般都會(hui)提(ti)供(gong)網(wang)(wang)(wang)絡(luo)編譯(yi)器(qi)(qi),但(dan)是網(wang)(wang)(wang)絡(luo)編譯(yi)器(qi)(qi)只提(ti)供(gong)網(wang)(wang)(wang)絡(luo)級(ji)(ji)別的(de)(de)(de)支(zhi)持(chi),不會(hui)提(ti)供(gong)到指令級(ji)(ji)別的(de)(de)(de)支(zhi)持(chi)。除(chu)了Arm或者(zhe)英偉(wei)達非常成(cheng)熟的(de)(de)(de)硬件能(neng)夠提(ti)供(gong)指令級(ji)(ji),大(da)部分國產化芯(xin)片屬于網(wang)(wang)(wang)絡(luo)級(ji)(ji)別的(de)(de)(de)編譯(yi)器(qi)(qi),完全(quan)基(ji)于代碼生(sheng)成(cheng)的(de)(de)(de)方案在(zai)實際中對大(da)多數芯(xin)片很(hen)難走得通。
商湯主要(yao)使用的是(shi)其他廠(chang)商的芯(xin)片(pian),過去幾年我(wo)們適配(pei)了近20種芯(xin)片(pian),可(ke)以發現(xian)不(bu)同(tong)芯(xin)片(pian)所(suo)提供的接(jie)入級別(bie)(bie)非常不(bu)一(yi)樣。有代(dai)碼級別(bie)(bie),比(bi)如(ru)(ru)Arm、X86、cuda;還有算子級別(bie)(bie),比(bi)如(ru)(ru)cuDNN計算庫;還有提供網絡(luo)(luo)級別(bie)(bie)的芯(xin)片(pian),比(bi)如(ru)(ru)TensorRT、華為(wei)的一(yi)些芯(xin)片(pian)等。我(wo)們需(xu)要(yao)一(yi)套系統(tong)能夠靈活接(jie)入代(dai)碼級別(bie)(bie)、網絡(luo)(luo)級別(bie)(bie)、算子級別(bie)(bie),只有這樣才能實現(xian)統(tong)一(yi)的自由框架。
這(zhe)套系統在(zai)我們(men)(men)內部(bu)(bu)命名為NART,其全稱是(shi)Nart?is?Not?A?Runtime。NART主(zhu)要(yao)(yao)(yao)包含(han)兩部(bu)(bu)分(fen)(fen):一(yi)(yi)部(bu)(bu)分(fen)(fen)是(shi)編譯器、一(yi)(yi)部(bu)(bu)分(fen)(fen)是(shi)運行時(shi)。它主(zhu)要(yao)(yao)(yao)有如下特點(dian):第(di)一(yi)(yi)點(dian):多(duo)算(suan)(suan)子(zi)級別。代(dai)碼、算(suan)(suan)子(zi)、網絡都可以是(shi)一(yi)(yi)個算(suan)(suan)子(zi)。第(di)二點(dian):編譯器和運行時(shi)解藕。運行時(shi)主(zhu)要(yao)(yao)(yao)是(shi)包含(han)大量已(yi)實現好的(de)算(suan)(suan)子(zi),現在(zai)已(yi)經有上(shang)百(bai)種算(suan)(suan)子(zi)。編譯器部(bu)(bu)分(fen)(fen)主(zhu)要(yao)(yao)(yao)是(shi)處理一(yi)(yi)些量化校準、圖優化和格式轉換相關的(de)問題(ti)。第(di)三點(dian):混合(he)運行時(shi)。這(zhe)一(yi)(yi)點(dian)在(zai)工業(ye)級使(shi)用(yong)中(zhong)非(fei)常重(zhong)要(yao)(yao)(yao),一(yi)(yi)方(fang)(fang)面可以將NPU上(shang)不(bu)支持(chi)的(de)算(suan)(suan)子(zi)靈活回退到(dao)次級設備。比如在(zai)華為海思的(de)處理器上(shang),NNIE不(bu)能支持(chi)的(de)算(suan)(suan)子(zi)可以直接(jie)回退到(dao)Arm上(shang)處理,實現非(fei)常靈活的(de)接(jie)入,不(bu)需要(yao)(yao)(yao)等(deng)著芯片廠商的(de)排期(qi)。并且在(zai)實操(cao)過程中(zhong),我們(men)(men)發現這(zhe)樣(yang)的(de)處理方(fang)(fang)式既簡單又高效(xiao),同時(shi)整個生產周期(qi)也非(fei)常快(kuai)。另一(yi)(yi)方(fang)(fang)面混合(he)運行時(shi)便(bian)于實現混合(he)精度(du),在(zai)不(bu)同精度(du)的(de)算(suan)(suan)子(zi)間自動切換,保證模型(xing)的(de)效(xiao)果。
現在我們已經(jing)支持了超過16類不同的硬件設備(bei),大家看到的市(shi)場上主流的硬件都使用這一套框架(jia)來支持。這保證了商湯的算(suan)法方案可以(yi)靈活的跑(pao)在任意(yi)一個市(shi)場上已有的設備(bei)上。
二、實現低bit量化,提高自動化部署效率
模型量(liang)化,是(shi)一種(zhong)比較高效的處(chu)理方法,與之(zhi)對應的還(huan)有(you)其他的如(ru)網絡(luo)結構優化等方案(an)。量(liang)化屬于最常用的技(ji)術(shu),這里重點(dian)分享(xiang)一下我們在量(liang)化上做的工作,主要是(shi)為了達到極(ji)致(zhi)的效率。
現在INT8的量(liang)化很常用(yong),在絕大多(duo)數芯片上都支(zhi)持,效率確實(shi)有(you)所提升(sheng)。但問題是隨著算(suan)法的進展(zhan),它可以(yi)做到比8bit更低的4bit,但是卻很少能(neng)支(zhi)持8bit以(yi)下的計算(suan)方案。
為了解(jie)決(jue)這個問題,我(wo)們做了很多研究,在現代體系結(jie)構下(xia)首次實現極低比(bi)特量化,并且能夠帶(dai)來(lai)很好的效率提升。
簡(jian)單來說我們實(shi)現(xian)了2個平臺的極低比特模型(xing)部(bu)署,一個在(zai)Arm上(shang)(shang),一個在(zai)GPU上(shang)(shang)。在(zai)Arm上(shang)(shang)使用5-8bit或(huo)1-4bit卷(juan)積(ji)都是(shi)可以(yi)的。通過對比ResNet18中各(ge)層(ceng)的性能(neng),可以(yi)發現(xian)大(da)部(bu)分層(ceng)的提升都是(shi)非常明顯的。在(zai)英(ying)偉達的GPU上(shang)(shang),也(ye)針(zhen)對tensorecore實(shi)現(xian)了超低比特的優(you)化。從(cong)右下角的圖表可以(yi)看出(chu),在(zai)batch=1的情況下對于大(da)型(xing)網絡提速(su)非常明顯。
在(zai)(zai)量(liang)化這塊我(wo)(wo)們(men)(men)還(huan)觀察到一個狀(zhuang)態,現在(zai)(zai)很多廠商會(hui)提供一些標準的(de)(de)(de)庫比如英偉達的(de)(de)(de)TensorRT。但問題是對于(yu)很多新的(de)(de)(de)模(mo)型,他們(men)(men)提速不明顯,更新會(hui)比較慢。舉個例子(zi),最(zui)近在(zai)(zai)計算機視覺領域(yu)非(fei)常火的(de)(de)(de)ViT(Visual Transformer)。我(wo)(wo)們(men)(men)發現,對于(yu)ViT現有的(de)(de)(de)方(fang)案比如TensorRT/TVM,使用8bit不會(hui)有效率的(de)(de)(de)提升(sheng)。而(er)我(wo)(wo)們(men)(men)通過編譯(yi)優化,在(zai)(zai)ViT上實現了(le)相(xiang)(xiang)比TVM快(kuai)4.6倍,相(xiang)(xiang)比TRT快(kuai)1.5倍的(de)(de)(de)速度(du)提升(sheng)。關(guan)于(yu)這一塊我(wo)(wo)們(men)(men)做了(le)一些社(she)區(qu)貢(gong)獻,相(xiang)(xiang)關(guan)的(de)(de)(de)提交已經被社(she)區(qu)合(he)并。
將量化做到工業(ye)化,不光需(xu)要使速(su)度達(da)到極致(zhi),而且需(xu)要有一(yi)套(tao)生產(chan)工具(ju)。
因為每天處(chu)理的(de)(de)問題實在(zai)太(tai)多了,為了滿(man)足(zu)工(gong)業級的(de)(de)量化需(xu)求(qiu),我(wo)們實現了一套統一的(de)(de)生(sheng)產工(gong)具,它的(de)(de)輸入是(shi)不同類型的(de)(de)模(mo)型,包括學(xue)術界大家都知道的(de)(de)網(wang)(wang)絡(luo)如ResNet,還有大量商湯自(zi)研的(de)(de)網(wang)(wang)絡(luo)結構。
基于(yu)此(ci),我們有(you)兩種(zhong)(zhong)量(liang)化(hua)選擇(ze),一種(zhong)(zhong)是(shi)在線量(liang)化(hua),需(xu)要一些訓練(lian)(lian)進行Finetune,這種(zhong)(zhong)情況(kuang)要求(qiu)接口盡可(ke)能的簡單;第二種(zhong)(zhong)是(shi)離(li)線量(liang)化(hua),不能重新訓練(lian)(lian),但是(shi)可(ke)以(yi)基于(yu)已有(you)數據做出(chu)調整,針對這種(zhong)(zhong)情況(kuang)需(xu)要低(di)成本,性能盡可(ke)能好。針對這兩種(zhong)(zhong)選擇(ze),我們提供了統一量(liang)化(hua)的接口,并把(ba)它(ta)適(shi)配到不同(tong)的芯(xin)片上,因為不同(tong)芯(xin)片的量(liang)化(hua)方案是(shi)不一樣(yang)的,因此(ci)需(xu)要適(shi)應(ying)各種(zhong)(zhong)后端,這是(shi)量(liang)化(hua)部(bu)分的整體設計(ji)。
除了系統(tong)層面優化(hua)之(zhi)外,我們今年在ICLR上(shang)提出了BRECQ算法,這個算法是(shi)我們目前(qian)已知的(de)第一(yi)個能夠實(shi)現媲美在線量化(hua)精度(du)效果的(de)離線量化(hua)算法;算法的(de)原理也比較(jiao)簡(jian)單,之(zhi)前(qian)大(da)家優化(hua)一(yi)層,我們擴展到了一(yi)個塊。
通(tong)過很多實(shi)驗和理論,我們證明(ming)了(le)(le)塊(kuai)(kuai)是一(yi)個(ge)更好(hao)(hao)的(de)粒度(du)。同時(shi)除了(le)(le)確定量化(hua)參(can)數,也(ye)可以對權重進行微調,因(yin)此(ci)通(tong)過塊(kuai)(kuai)的(de)設置和更好(hao)(hao)的(de)權重調整,實(shi)現更優效果。這個(ge)算法在內部走通(tong)之(zhi)后經過了(le)(le)大量驗證,證明(ming)了(le)(le)離線(xian)量化(hua)可以很好(hao)(hao)的(de)保證精度(du)。這是我們認為(wei)比較有(you)用的(de)一(yi)個(ge)算法,因(yin)此(ci)給大家進行一(yi)個(ge)簡單的(de)介紹。
此外,各家(jia)廠商的(de)(de)硬件(jian)采用了非常不(bu)同的(de)(de)量化方(fang)案。包括gpu的(de)(de)、dsp的(de)(de)、arm的(de)(de)以(yi)及一些國(guo)產化芯片(pian)。這(zhe)對(dui)算法(fa)提出了很大挑(tiao)戰,但是通過我們在算法(fa)上(shang)(shang)(shang)的(de)(de)、系(xi)統上(shang)(shang)(shang)的(de)(de)、架構(gou)設計上(shang)(shang)(shang)的(de)(de)工作,可(ke)以(yi)很好的(de)(de)以(yi)一套(tao)框架打通多種硬件(jian)的(de)(de)量化模型生產。
三、兼顧結構、推理庫和硬件,完善軟硬件協同
最后再給大(da)家介紹一下我們(men)過去幾年實踐(jian)總結出來(lai)的(de)經驗:做軟(ruan)硬件的(de)協同。
但是這(zhe)個軟(ruan)硬件協(xie)同不(bu)是設(she)計芯片(pian)時(shi)需要(yao)考(kao)慮算(suan)法,我們認為的(de)(de)軟(ruan)硬件協(xie)同主要(yao)從以下三個方面考(kao)慮:我們內部支(zhi)撐各(ge)(ge)種各(ge)(ge)樣的(de)(de)芯片(pian),大量的(de)(de)推理庫(ku)(ku),還有(you)非常多網絡結(jie)(jie)構。我們結(jie)(jie)合結(jie)(jie)構、推理庫(ku)(ku)還有(you)硬件,這(zhe)三方面建立一個龐大的(de)(de)數據庫(ku)(ku),分析三者之間的(de)(de)關系。
基于這(zhe)樣的數據庫,我們(men)能夠方(fang)便、快速地找到在(zai)一(yi)個特定的硬(ying)件上最優(you)的網絡結構(gou)是什么樣的;或者(zhe)說(shuo)在(zai)一(yi)個特定的硬(ying)件上,針對(dui)一(yi)個推理庫,最優(you)的結構(gou)應該怎(zen)么設計?這(zhe)些都對(dui)我們(men)的實(shi)際模型(xing)生產(chan),帶來(lai)非常多的幫助。
這個事情具(ju)體(ti)怎么(me)來做?
首先對(dui)不同的(de)硬件定(ding)義了(le)三個(ge)層級:L1、L2、L3。
L1指(zhi)的是(shi)黑盒硬件(jian),我們需要網(wang)絡(luo)結構能(neng)夠(gou)來overfit硬件(jian)特(te)性(xing),針對黑盒硬件(jian)找(zhao)到最好的網(wang)絡(luo)硬件(jian)。
L2指的(de)是開(kai)放式指令(ling)集,芯片的(de)指令(ling)集是開(kai)放的(de),因此(ci)可以用網絡結構+軟件實現(xian)來overfit具體硬件。
L3指的(de)是整(zheng)個硬件(jian)的(de)架構完全(quan)開放,針對(dui)這樣一種(zhong)設置(zhi)可(ke)以(yi)做全(quan)鏈路耦合的(de)方式,從結構、推(tui)理、硬件(jian)一起推(tui)動。商湯(tang)作為(wei)一家(jia)算法(fa)為(wei)核心的(de)公司,我們同時支持(chi)三種(zhong)層級的(de)軟硬件(jian)協同優化。
經(jing)過(guo)商湯歷(li)史上訓練的(de)(de)(de)超過(guo)20萬(wan)個模型,累計(ji)有10萬(wan)個不同(tong)的(de)(de)(de)網絡結構(gou),同(tong)時也支持11種(zhong)不同(tong)的(de)(de)(de)硬件。我們基于這些信息(xi)建了(le)一個數(shu)據庫(ku)。有了(le)這個數(shu)據庫(ku)之(zhi)后,針對(dui)一個新的(de)(de)(de)網絡結構(gou)可(ke)以快速地通(tong)過(guo)實測查詢或(huo)者算法預測的(de)(de)(de)方式,得到非常高效的(de)(de)(de)計(ji)算數(shu)據庫(ku)。
基于(yu)這樣的(de)數據庫,我們可以針對已經訓練好(hao)的(de)模(mo)型幫它(ta)做各種診(zhen)斷,使它(ta)推導出來的(de)模(mo)型綜合(he)考慮到精(jing)度(du)、速度(du)、硬件偏好(hao)和選(xuan)擇(ze)程度(du)等(deng)因素后得到最(zui)優(you)的(de)組合(he)。這樣一個(ge)組合(he)在實(shi)際(ji)生產中,它(ta)的(de)精(jing)度(du)將(jiang)會有很大提(ti)升。
比(bi)(bi)如ModelA和Model Pro,ModelA是靠(kao)研究(jiu)員手工設計(ji)的(de)結(jie)構,它(ta)的(de)Flops、參數(shu)量(liang)(liang)(liang)、訪(fang)存量(liang)(liang)(liang)如圖,通過(guo)軟硬件協(xie)同的(de)數(shu)據(ju)庫(ku)優(you)化,可以推導(dao)出ModelA Pro,它(ta)的(de)Flops、參數(shu)量(liang)(liang)(liang)、訪(fang)存量(liang)(liang)(liang)都比(bi)(bi)ModelA大,但速度比(bi)(bi)ModelA要小。之前網(wang)絡設計(ji)是依(yi)賴于人的(de)經驗,現(xian)在變成(cheng)依(yi)賴于數(shu)據(ju)庫(ku)和算(suan)法,通過(guo)數(shu)據(ju)庫(ku)和算(suan)法幫助研究(jiu)員設計(ji)出更好的(de)網(wang)絡結(jie)構。當我們訓練出的(de)模型到了十萬量(liang)(liang)(liang)級以后,它(ta)能帶來非(fei)常好的(de)提升。
公司內部每天有(you)600多個業務員部署(shu)模型,最開始有(you)些人工靠(kao)人力(li)來支持訓練部署(shu)模型。
后(hou)面由于我(wo)們(men)的模(mo)型(xing)越來越多,人(ren)力支(zhi)撐不上,最終衍生出一套端到(dao)端的SaaS解決方(fang)案。它的核心是做端到(dao)端的模(mo)型(xing)部(bu)署(shu),把格式的轉換(huan)、量化以及網絡(luo)級的優(you)化混到(dao)一起(qi),實現(xian)一次(ci)模(mo)型(xing)上傳、多平臺部(bu)署(shu)測試、一次(ci)性(xing)搞定。
這套系統(tong)在內部(bu)(bu)叫Adela系統(tong),現在每天(tian)支持600多(duo)名(ming)公司(si)內部(bu)(bu)用(yong)戶,支持商湯目前超過90%的(de)內部(bu)(bu)模(mo)型發布。
這套服務(wu)架構分成(cheng)四層,第一層設備層,這一層不(bu)太可(ke)控,主(zhu)(zhu)要以(yi)支持外部(bu)任意設備為(wei)主(zhu)(zhu)。
第二層引擎層,我(wo)們會接入低(di)比特的算子,網絡運行時,支持混合運行,然(ran)后會做很多圖切分、格式轉換(huan)、靜態調度。
通過引擎層上面做一些封裝,封裝成模型編譯(yi)部(bu)署接口、測速(su)接口,在(zai)上面提供很(hen)多算法:包(bao)括在(zai)線(xian)量化、離線(xian)量化,還包(bao)括速(su)度(du)的預測、網(wang)絡結構的搜索、圖變換(huan)的優化等等。
再往(wang)上(shang)到了服務(wu)層,從原始模型(xing)(xing)文件到端模型(xing)(xing)到量(liang)化模型(xing)(xing)再到速(su)度(du)和(he)精度(du)更優的模型(xing)(xing),提(ti)供(gong)非常統一的框架。提(ti)供(gong)統一框架之后,通(tong)過一個命令行或者網(wang)頁上(shang)簡單的交(jiao)互,就可以(yi)實現(xian)全(quan)自動的業務(wu)模型(xing)(xing)部署。
為(wei)了進一步促(cu)進學(xue)術研究跟工業界的(de)結合,我們目前也(ye)在(zai)計(ji)劃把兩個核心(xin)的(de)服務對外開放,一個是(shi)模型(xing)的(de)自(zi)動量化,另(ling)一個是(shi)模型(xing)在(zai)特定硬件上(shang)的(de)優化建議(yi)。
量(liang)化(hua)上包含了(le)目前我們(men)認為(wei)較好的(de)(de)學(xue)術(shu)界算(suan)(suan)法(fa),以(yi)及自己研(yan)發(fa)的(de)(de)使工業界模型量(liang)化(hua)更加落地的(de)(de)算(suan)(suan)法(fa),跟現在市面上主流推理引擎(qing)做了(le)對接(jie),適(shi)配大部分深度學(xue)習的(de)(de)硬件(jian)和后端(duan),這樣可以(yi)非常方(fang)便(bian)研(yan)究(jiu)員驗證這個(ge)算(suan)(suan)法(fa)是不是真的(de)(de)可以(yi)實際部署,也方(fang)便(bian)我們(men)的(de)(de)硬件(jian)廠商來進(jin)(jin)行最新算(suan)(suan)法(fa)的(de)(de)跟進(jin)(jin)工作。
同時(shi)把(ba)計算數(shu)據庫(ku)GPDB服務的(de)能力逐(zhu)步(bu)提供出來,不僅(jin)方便研(yan)究員驗(yan)證(zheng)結構在實際設備上的(de)速度,還方便硬件廠商(shang)來尋找各種(zhong)性能的(de)缺陷(xian)和瓶(ping)頸。
目前我們(men)在準備一(yi)些(xie)開(kai)源的流程,希(xi)望更多人(ren)能(neng)夠得(de)到(dao)相關(guan)技術的收益。我們(men)有一(yi)個專門負責這部(bu)分工(gong)作的內部(bu)研究團隊叫工(gong)具鏈團隊,平常也會寫一(yi)些(xie)專欄,歡迎大家關(guan)注。
以上是閆俊杰演講內容的完整整理。