1、前言算法
AI技術包含訓練和推理兩個階段。推理階段的性能好壞既關係到用戶體驗,又關係到企業的服務成本,甚至在一些極端應用上(好比無人駕駛)直接關係到我的生命財產安全。目前AI落地面臨的挑戰主要來源於兩方面,一方面是AI算法的突飛猛進,帶來了計算量的猛增,從AlexNet到AlphaGo,5年多的時間裏計算量提高了30w倍。另外一方面是底層硬件異構化的趨勢愈發明顯,近年來涌現出很是多優秀的架構來解決AI計算力問題。推理引擎的首要任務就是將性能優異且計算量龐大的深度學習框架快速部署到不一樣的硬件架構之上,而且可以保持性能相對高效。然而縱觀開源社區和閉源解決方案,沒有任何一款推理引擎能夠同時知足開源、跨平臺、高性能三個特性。所以,咱們結合百度實際業務的需求、百度優秀工程師的研發能力以及行業合做夥伴的大力支持共同完成了百度本身的推理引擎Anakin v0.1.0。Anakin目前支持Intel-CPU、NVIDIA-GPU、AMD-GPU和ARM平臺,後續將支持更多平臺如寒武紀、比特大陸等。今天Anakin正式開源,指望可以藉助社區的力量把Anakin打造的更加精美!
2、 Anakin架構安全
Anakin框架的核心邏輯如圖1所示,主要由Parser, Framework 和Saber組成。Parser是獨立解析器,用於將不一樣訓練框架生成的模型轉化爲統一的Anakin圖描述。Framework是框架主體,使用C++實現,用於完成硬件無關的全部操做,好比構建網絡、圖融合、資源複用、計算調度等。Saber是一個高效的跨平臺計算庫,包括大量的彙編級優化代碼,並支持衆多國際行業合做夥伴的架構,如Intel-cpu,NV-gpu,AMD-gpu和ARM等,同時之後還將支持寒武紀MLU100和比特大陸BM1682這兩款優秀的國產芯片。服務器
3、 Anakin功能特性網絡
Anakin v0.1.0具備開源、跨平臺、高性能三個特性,它能夠在不一樣硬件平臺實現深度學習的高速推理功能。Anakin在NV、Intel、ARM和AMD-GPU架構上,體現了低功耗、高速預測的特色。
1.支持衆多異構平臺-跨平臺架構
Anakin普遍的和各個硬件廠商合做,採用聯合開發或者部分計算底層自行設計和開發的方式,爲Anakin打造不一樣硬件平臺的計算引擎。目前Anakin已經支持了多種硬件架構,如Intel-CPU、NVIDIA-GPU、AMD-GPU、ARM等,將來將會陸續支持比特大陸、寒武紀深度學習芯片等等不一樣硬件架構。咱們但願Anakin能夠爲用戶提供更靈活的底層選擇,更方便簡單的部署方式,並在不一樣底層硬件上達到最優性能。
Anakin在衆多硬件平臺都有很好的性能收益, 本文列舉了一些實驗對比測試數據,更詳盡的數據請參見GitHub上的benchmark 數據。
在NV架構上,咱們選擇Anakin v0.1.0、TensorRT v3.0.0、Tensorflow v1.7.0和Caffe v1.0.0進行了對比,具體的對比結果如圖2所示。框架
測試平臺Nvidia-P4信息:
• GPU Architecture NVIDIA Pascal™
• Single-Precision Performance 5.5 TFLOPS
• GPU Memory 8 GB性能
在Intel架構上,咱們選取Tensorflow-v1.8.0進行對比,具體的對比結果如圖3所示。學習
測試平臺信息:
• 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進行對比,具體的對比結果如圖4所示:優化
測試平臺信息:
• 榮耀v9(root): 處理器:麒麟960, 4 big cores in 2.36GHz, 4 little cores in 1.8GHz
• 高通835, 4 big cores in 2.36GHz, 4 little cores in 1.9GHz
在AMD-GPU架構上,咱們選取Anakin-v0.1.0進行橫向對比,具體的對比結果如圖5所示:
測試平臺信息:
• MI8: AMD Radeon Instinct MI8
single-Precision Performance 8.192 TFLOPS
GPU Memory 4 GB
• P4: GPU Architecture NVIDIA Pascal™
Single-Precision Performance 5.5 TFLOPS
GPU Memory 8 GB
圖5中的折線圖表示MI8和P4的執行效率的相對比例,具體的計算公式:
P4_Latency P4_TFLOPS / (MI8_Latency MI8_TFLOPS);
從圖上的折線可知Anakin在MI8和P4上執行效率很是接近,在Thread_num大於2時Anakin_MI8效率更高。
4、Anakin值得一提的技術亮點
輕量的dashboard
Anakin v0.1.0框架中的Parser提供了一個額外的小功能,可讓開發者查看Anakin優化先後的網絡結構及參數,如圖6和圖7所示。這將有助於開發者方便的分析模型。同時,在優化後的Anakin執行圖中會添加相應的優化標記,主要包括memory 複用、op融合、並行度分析、執行順序分析、存儲器使用以及同步標記等。例如,在圖7中,對於標記了New標籤的地方,在代碼運行過程當中,將只會對這些內容分配內存。這種處理方式將使得Anakin運行時所需的memory更少。
Anakin-lite 輕量的移動端版本
Anakin 還提供了在移動端運行的輕量版本anakin-lite, 咱們藉助上層圖優化機制,幫助深度學習模型code自動生成,針對具體模型自動生成的可執行文件,而且結合針對ARM專門設計的一套輕量接口,合併編譯生成模型的lite版本。
Anakin-lite 保持精簡化,全底層庫大小通過剪裁只有150K 左右,加上自動生成的深度學習模型模塊,總大小在200K。模型參數再也不採用protobuf而是精簡的weights堆疊的方式,儘量減少model尺寸。同時,anakin-lite依然保有上層anakin 框架的優化分析信息(好比存儲複用等),最終能夠作到內存消耗相對較小,模型尺寸相對精簡。
Anakin多層次的應用
第一個層次:Anakin能夠是一個計算庫;
第二個層次:Anakin能夠是一個獨立的推理引擎;
第三個層次:Anakin能夠經過Anakin-rpc構建一個完整的推理服務。
5、Anakin的發展前景
Anakin v0.1.0具備開源、跨平臺、高性能三個特性,它能夠在不一樣硬件平臺實現深度學習的高速推理功能。對於每一個開發廠商,僅僅使用一套Anakin框架,就能在不一樣的硬件服務器上實現快速推理。 Anakin的終極目標是幫助實際業務模型快速迭代和上線,爲深度學習模型產業化落地掃清障礙,從而讓廣大的工程師更專一算法設計,從繁重的優化和工程中解脫出來,進而推進深度學習的哪怕一點點的進步,這就是咱們最大的願望。