百度跨平臺AI推理加速引擎--Anakin
一、前言
AI 技術(shù)包含訓(xùn)練和推理兩個階段。推理階段的性能好壞既關(guān)系到用戶體驗,又關(guān)系到企業(yè)的服務(wù)成本,甚至在一些極端應(yīng)用上(比如無人駕駛)直接關(guān)系到個人生命財產(chǎn)安全。目前 AI 落地面臨的挑戰(zhàn)主要來源于兩方面,一方面是 AI 算法的日新月異,帶來了計算量的猛增,從 AlexNet 到 AlphaGo,5 年多的時間里計算量提升了 30w 倍。另一方面是底層硬件異構(gòu)化的趨勢愈發(fā)明顯,近年來涌現(xiàn)出非常多優(yōu)秀的架構(gòu)來解決 AI 計算力問題。推理引擎的首要任務(wù)就是將性能優(yōu)異且計算量龐大的深度學(xué)習(xí)框架快速部署到不同的硬件架構(gòu)之上,并且能夠保持性能相對高效。然而縱觀開源社區(qū)和閉源解決方案,沒有任何一款推理引擎可以同時滿足開源、跨平臺、高性能三個特性。因此,我們結(jié)合百度實際業(yè)務(wù)的需求、百度優(yōu)秀工程師的研發(fā)能力以及行業(yè)合作伙伴的大力支持共同完成了百度自己的推理引擎 Anakinv0.1.0。Anakin 目前支持 Intel-CPU、NVIDIA-GPU、AMD-GPU 和 ARM 平臺,后續(xù)將支持更多平臺如寒武紀(jì)、比特大陸等。今天 Anakin 正式開源,期望能夠借助社區(qū)的力量把 Anakin 打造的更加精美!
二、 Anakin 架構(gòu)
圖 1 Anakin 框架
Anakin 框架的核心邏輯如圖 1 所示,主要由 Parser,Framework 和 Saber 組成。Parser 是獨立解析器,用于將不同訓(xùn)練框架生成的模型轉(zhuǎn)化為統(tǒng)一的 Anakin 圖描述。Framework 是框架主體,使用 C++ 實現(xiàn),用于完成硬件無關(guān)的所有操作,比如構(gòu)建網(wǎng)絡(luò)、圖融合、資源復(fù)用、計算調(diào)度等。Saber 是一個高效的跨平臺計算庫,包括大量的匯編級優(yōu)化代碼,并支持眾多國際行業(yè)合作伙伴的架構(gòu),如 Intel-cpu,NV-gpu,AMD-gpu 和 ARM 等,同時以后還將支持寒武紀(jì) MLU100 和比特大陸 BM1682 這兩款優(yōu)秀的國產(chǎn)芯片。
三、 Anakin 功能特性
Anakin v0.1.0 具有開源、跨平臺、高性能三個特性,它可以在不同硬件平臺實現(xiàn)深度學(xué)習(xí)的高速推理功能。Anakin 在 NV、Intel、ARM 和 AMD-GPU 架構(gòu)上,體現(xiàn)了低功耗、高速預(yù)測的特點。
1. 支持眾多異構(gòu)平臺-跨平臺
Anakin 廣泛的和各個硬件廠商合作,采用聯(lián)合開發(fā)或者部分計算底層自行設(shè)計和開發(fā)的方式,為 Anakin 打造不同硬件平臺的計算引擎。目前 Anakin 已經(jīng)支持了多種硬件架構(gòu),如 Intel-CPU、NVIDIA-GPU、AMD-GPU、ARM 等,未來將會陸續(xù)支持比特大陸、寒武紀(jì)深度學(xué)習(xí)芯片等等不同硬件架構(gòu)。我們希望 Anakin 可以為用戶提供更靈活的底層選擇,更方便簡單的部署方式,并在不同底層硬件上達(dá)到***性能。
2. 高性能
Anakin 在眾多硬件平臺都有很好的性能收益, 本文列舉了一些實驗對比測試數(shù)據(jù),更詳盡的數(shù)據(jù)請參見 GitHub 上的 benchmark 數(shù)據(jù)。
- 在 NV 架構(gòu)上,我們選擇 Anakin v0.1.0、TensorRT v3.0.0、Tensorflow v1.7.0 和 Caffe v1.0.0 進行了對比,具體的對比結(jié)果如圖 2 所示。
測試平臺 Nvidia-P4 信息:
· GPU ArchitectureNVIDIA Pascal™
· Single-Precision Performance5.5 TFLOPS
· GPU Memory 8 GB
- 在 Intel 架構(gòu)上,我們選取 Tensorflow-v1.8.0 進行對比,具體的對比結(jié)果如圖 3 所示。
圖 3 Anakin andTensorflow on CPU
測試平臺信息:
· i7-7700:Intel (R) Core (TM) i7-7700 CPU @ 3.60GHz
· 2650-v4:Intel (R) Xeon (R) CPU E5-2650 v4 @ 2.20GHz
· 2620-v4:Intel (R) Xeon (R) CPU E5-2620 v4 @ 2.10GHz
- 在移動端 ARM 上,我們選取 Tensorflow-lite 進行對比,具體的對比結(jié)果如圖 4 所示:
圖 4 Anakin and TFlite on ARM
測試平臺信息:
· 榮耀 v9(root):處理器:麒麟 960, 4 big cores in2.36GHz, 4 little cores in 1.8GHz
· 高通 835,4 big cores in 2.36GHz, 4 little cores in 1.9GHz
- 在 AMD-GPU 架構(gòu)上,我們選取 Anakin-v0.1.0 進行橫向?qū)Ρ?,具體的對比結(jié)果如圖 5 所示:
圖 5 MI8 and P4 on VGG16 model
測試平臺信息:
· MI8: AMDRadeon Instinct MI8
single-Precision Performance8.192 TFLOPS
GPU Memory 4 GB
· P4: GPU Architecture NVIDIAPascal™
Single-Precision Performance5.5 TFLOPS
GPU Memory 8 GB
圖 5 中的折線圖表示 MI8 和 P4 的執(zhí)行效率的相對比例,具體的計算公式:
P4_Latency * P4_TFLOPS / (MI8_Latency* MI8_TFLOPS);
從圖上的折線可知 Anakin 在 MI8 和 P4 上執(zhí)行效率非常接近,在 Thread_num 大于 2 時 Anakin_MI8 效率更高。
3. 匯編級的 kernel 優(yōu)化
Anakin 追求的目標(biāo)是***,因此它提供了一套基于 NVIDIAGPU SASS 匯編級優(yōu)化的庫。SASS 庫支持多種(如 sm61,sm50)NVIDA GPU 架構(gòu)的匯編實現(xiàn)的 conv 和 gemm 的核心計算。由于和 NVIDIA 商業(yè)保密協(xié)議規(guī)定,目前只能開源編譯好的 SASS 庫
四、Anakin 值得一提的技術(shù)亮點
- 輕量的 dashboard
Anakin v0.1.0 框架中的 Parser 提供了一個額外的小功能,可以讓開發(fā)者查看 Anakin 優(yōu)化前后的網(wǎng)絡(luò)結(jié)構(gòu)及參數(shù),如圖 6 和圖 7 所示。這將有助于開發(fā)者方便的分析模型。同時,在優(yōu)化后的 Anakin 執(zhí)行圖中會添加相應(yīng)的優(yōu)化標(biāo)記,主要包括 memory 復(fù)用、op 融合、并行度分析、執(zhí)行順序分析、存儲器使用以及同步標(biāo)記等。例如,在圖 7 中,對于標(biāo)記了 New 標(biāo)簽的地方,在代碼運行過程中,將只會對這些內(nèi)容分配內(nèi)存。這種處理方式將使得 Anakin 運行時所需的 memory 更少。
圖 6 優(yōu)化前的網(wǎng)絡(luò)結(jié)構(gòu)圖
圖 7 優(yōu)化后的網(wǎng)絡(luò)結(jié)構(gòu)圖
- Anakin-lite 輕量的移動端版本
Anakin 還提供了在移動端運行的輕量版本 anakin-lite, 我們借助上層圖優(yōu)化機制,幫助深度學(xué)習(xí)模型 code 自動生成,針對具體模型自動生成的可執(zhí)行文件,并且結(jié)合針對 ARM 專門設(shè)計的一套輕量接口,合并編譯生成模型的 lite 版本。
Anakin-lite 保持精簡化,全底層庫大小經(jīng)過剪裁只有 150K 左右,加上自動生成的深度學(xué)習(xí)模型模塊,總大小在 200K。模型參數(shù)不再采用 protobuf 而是精簡的 weights 堆疊的方式,盡可能減小 model 尺寸。同時,anakin-lite 依然保有上層 anakin 框架的優(yōu)化分析信息(比如存儲復(fù)用等),最終可以做到內(nèi)存消耗相對較小,模型尺寸相對精簡。
- Anakin 多層次的應(yīng)用
***個層次:Anakin 可以是一個計算庫;
第二個層次:Anakin 可以是一個獨立的推理引擎;
第三個層次:Anakin 可以通過 Anakin-rpc 構(gòu)建一個完整的推理服務(wù)?! ?nbsp;
五、Anakin 的發(fā)展前景
Anakin v0.1.0 具有開源、跨平臺、高性能三個特性,它可以在不同硬件平臺實現(xiàn)深度學(xué)習(xí)的高速推理功能。對于每個開發(fā)廠商,僅僅使用一套 Anakin 框架,就能在不同的硬件服務(wù)器上實現(xiàn)快速推理。
Anakin 的***目標(biāo)是幫助實際業(yè)務(wù)模型快速迭代和上線,為深度學(xué)習(xí)模型產(chǎn)業(yè)化落地掃清障礙,從而讓廣大的工程師更專注算法設(shè)計,從繁重的優(yōu)化和工程中解脫出來,進而推動深度學(xué)習(xí)的哪怕一點點的進步,這就是我們***的愿望。