1. 程式人生 > >首次披露!阿里線下智慧方案進化史

首次披露!阿里線下智慧方案進化史

阿里妹導讀:AI 技術已經從網際網路走向零售、汽車、銀行等傳統行業。受限於延時、成本、安全等多方面的限制,單一的雲解決方案往往不能滿足場景需求。線下智慧方案逐步成為了智慧化過程中重要的一環,今天,我們就一起來了解這一環,希望這些內容可以讓同學瞭解線下智慧的前景和其中待解決的技術點。

前言

阿里巴巴機器智慧實驗室線下智慧團隊從16年底開始涉及線下智慧領域,從演算法、工程、產品化、業務落地多個方面入手,與合作伙伴們一起取得了一些小小的成績。演算法方面,我們提出了自主研發的模型壓縮方法,新型模型結構和目標檢測框架;工程方面,我們研發出一套非資料依賴的量化訓練工具,並且針對不同硬體平臺,研發了高效推理計算庫;同時我們也和伺服器研發團隊一起抽象出了一套軟硬體產品化方案,以服務多樣的業務形式,並在真實業務場景中實驗落地。

在後面的篇幅中,我們主要會從演算法探索、訓練工具、推理框架、產品化和業務模式等方面對之前的工作做一個總結和分享。

演算法探索

基於 ADMM 的低位元量化

低位元量化是模型壓縮( ModelCompression )和推理加速( Inference Acceleration )中一個核心的問題,目的是將神經網路中原有的浮點型引數量化成 1-8Bits 的定點引數,從而減小模型大小和計算資源消耗。為了解決這個問題,我們提出了基於 ADMM(Alternating Direction Method ofMultipliers)的低位元量化方案。在公開資料集 ImageNet 上,我們在 Alexnet,ResNet-18,Resnet-50 等經典 CNN 網路結構上做了實驗,無論是精度上還是速度上均超過了目前已知的演算法。我們可以在 3-bit 上面做到幾乎無失真壓縮。目前該方法已經被廣泛應用到各種端上目標檢測和影象識別的實際專案中。相關成果已經在 AAAI 2018 上發表。

統一量化稀疏框架

量化技術可以通過簡化計算單元(浮點計算單元->定點計算單元)提升推理速度。 稀疏化( Pruning ) 技術則是通過對神經網路中的通路進行裁剪來減少真實計算量。我們很自然的將這兩個技術融合到了一起,來獲取極限的理論加速比。在剪枝過程中,我們採用了漸進式的訓練方法,並結合梯度資訊決定網路中路徑的重要程度。在 ResNet 結構上,我們可以做到90%稀疏度下的近似無失真壓縮。

在稀疏化研究過程中,我們發現了一個問題,更細粒度的裁剪往往會獲得更高的精度,但是代價是犧牲了硬體友好性,很難在實際應用中獲得理論加速比。在後面的章節中,我們會通過兩個角度來解決這個問題:

  • 軟硬體協同設計,從軟硬體角度同時出發解決問題;
  • 新型輕量級網路,從軟體角度設計適合更適合現有硬體的結構。

軟硬體協同網路結構

通過量化和稀疏技術,我們可以獲得一個理論計算量足夠低,所需計算單元足夠簡單的深度網路模型。下一個要解決的問題就是我們如何將其轉換成一個真實推理延時低的演算法服務。為了挑戰極限的推理加速效果,我們和伺服器研發團隊一起,從軟硬體聯合設計出發解決該問題。在該專案中,我們提出了以下幾個創新點,其中包括:

  • 軟硬體協同設計方面,我們針對硬體物理特性提出了異構並行分支結構,最大化並行效率。
  • 演算法方面,我們利用量化、稀疏、知識蒸餾等技術,將理論計算量壓縮到原始模型的18%。
  • 硬體方面,我們通過運算元填充技術解決稀疏計算帶來的頻寬問題,利用運算元重排技術平衡PE負載。

通過上述方案,我們只需要 0.174ms 的 latency 就可以完成 resnet-18 複雜程度的模型推理,達到業內最佳水平。該方案在對 latency 敏感的領域具有極大的優勢。相關成果已經在 HotChips 30 上展出。

新型輕量級網路

軟硬體協同設計是一個非常好的推理解決方案,但是改方案的開發成本和硬體成本都很高。某些特定的場景對於 latency 和 accuracy 的容忍度比較高(例如人臉抓拍)。為了解決這類需求,我們提出了一種多聯合複用網路 (Multi-Layer Feature Federation Network, MuffNet) ,該結構同時具有3個特點:

  • 稀疏的拓撲結構,同時更容易獲取高頻響應;
  • 密集的計算節點,保證硬體友好性;
  • 針對低成本硬體充分優化,小計算量下精度提升更明顯;

我們提出的新型網路由於每個單元的計算比較密集,並不存在過多的碎片操作,是非常適合在通用硬體上執行的。在公開資料集 ImageNet 上,我們在 40MFLops 計算量上相比目前業內最優的 shufflenetv2 結構,準確度絕對提升了2%。

端上目標檢測框架

相比影象識別類任務,目標檢測類任務的適用場景更廣泛。高效的目標檢測框架具有很高的研究價值。針對端上場景,我們提出了一個 LRSSD 框架( light refine single short multiboxdetector ), 該框架包括以下幾個特點:

  • 簡化 SSD HEAD,採用共享預測層 設計特徵融合模組;
  • 融合不同尺度下資訊 級聯形式的 bbox 迴歸;
  • 對檢測模型做全量化處理。

如上表所示,相同 backbone 網路的情況下,我們提出的 LRSSD 在減少 SSD HEAD 計算量的同時,mAP 可以穩定提升3%-4% 。從另一個角度來看,在保證檢測精度不變的情況下,我們的方法可以將模型複雜度減少到原來的50%左右。如果再考慮到量化帶來的速度加成,在相同精度下,相比原有全精度模型,我們可以獲得總共約2-3倍的真實速度提升。

小結

上文給出了我們近2年內線上下智慧—模型壓縮領域所做的一些技術積累。歸納起來如下:

  • 量化方面:我們可以做到 3-bit 量化幾乎無失真壓縮!
  • 稀疏方面:對於傳統網路結構,我們可以做到90%稀疏度下的幾乎無失真壓縮!
  • 軟硬體協同設計方面:我們聯合伺服器研發團隊,達到0.174ms/張的resnet18 極限推理速度,目前已知業內最佳效果!
  • 輕量級網路設計方面:我們在 40MFlops 計算量下,相對目前業內最好結構,在 ImageNet 資料集上絕對提升2%!
  • 端上目標檢測方面,我們在保證精度不變的情況下,速度提升約2-3倍!

在技術探索的同時,我們也在積極的將上述技術應用到實際的業務中。在這一過程中我們發現了下列幾個問題:

  • 易用性: 業務場景往往需要快速的迭代能力和靈活方便的部署能力,因此非標準化的方案很難被廣泛應用。
  • 理論速度 vs 真實速度: 除了演算法和硬體以外,真實的模型推理速度是需要一個高效的工程實現作為支撐的。
  • 整合化 :線下智慧需要同時考驗團隊在硬體和軟體方面兩方面的實力,這對業務而言往往太過沉重。

在本文後半部分,我們首先會針對上述的幾個問題介紹我們已經做過的嘗試和沉澱出的解決方案。最後,我們列出了一些例項,展示如何在具體的業務場景中應用線下智慧技術,希望可以給各位同學一個更直觀的認識。

訓練工具

在實際業務推廣過程中,我們遇到的第一個問題是易用性問題:

  • 不同業務往往使用的深度學習庫多種多樣,例如 Caffe, Tensorflow, Mxnet 等等;
  • 不同業務使用的基礎技術差異比較大,有分類識別、檢測、分割、語音等等;
  • 不同業務的資料安全級別差異比較大,有些可以公開,有些則需要完全物理隔離;

為了讓更多的場景都可以用上我們的服務,獲得 AI 的紅利,我們提出了一套標準化的量化訓練工具。

如上圖所示,首先,我們的工具輸入支援多種模型格式( TensorFlow,Caffe,Mxnet 等)。其次,我們提供了兩種不同的模型量化方法,一種是支援不同任務(分類,檢測,分割等)的資料依賴型壓縮方法( Data Dependent Compression ) , 適用於對資料安全要求不是很高,希望追求精度最大化的業務;另一種是資料非依賴壓縮方法( Data Independent Compression ),適用於對資料安全要求高,或者業務邏輯不是特別複雜的場景。

最後,在量化工作完成後,我們的工具會自動完成推理圖的優化和模型加密,生成可以實際部署的模型檔案。配合對應的推理加速庫即可在端上執行。從易用性和資料安全性角度出發,我們推薦使用資料非依賴性的壓縮方法。

目前,該套工具作為MNN推薦的量化工具廣泛應用在阿里集團內多個線下業務場景中。

推理框架

實際中遇到的第二個問題就是真實推理速度問題,畢竟光有易用性是不夠的,實打實的業務效果才是業務最想要的。這裡我們使用阿里集團其他的兄弟團隊提供的推理框架:

  • ARM 架構: 我們採用淘系技術團隊研發的 MNN 作為推理框架;
  • GPU 架構: 我們採用機器智慧技術團隊研發的 falcon_conv 卷積庫作為推理框架;
  • FPGA 架構:我們採用伺服器研發團隊研發的推理框架。

MNN

MNN 是一個輕量級的深度學習端側推理引擎,核心解決深度神經網路模型在端側推理執行問題,涵蓋深度神經網路模型的優化、轉換和推理。目前,MNN已經在手淘、手貓、優酷、聚划算、UC、飛豬、千牛等 20 多個 App 中使用。選用常見的深度神經網路模型 MobileNet V2 和 SqueezeNet V1.1 作為測試樣本:Android 方面,以小米6為例,MNN 在 CPU 和 GPU 上領先業界至少30%;iOS 方面,以iPhone 7為例,MNN 在 CPU 和 GPU 上領先業界至少15%。

FPGA

FPGA 上的推理框架由伺服器研發團隊完成。ResNet18 網路的推理時間只需要0.174ms,目前已知業內最佳效能。在邊緣計算產品 alibabaedge 上,基於硬體實現的高效運算元,推理速度為邊緣 GPU 的兩倍。在後面,我們會結合產品形態整體的介紹這一方案。

GPU

falcon_conv 是機器智慧技術團隊開發的一款由 CUDA C++編寫,在 Nvidia GPU 上執行的低精度卷積庫,它接受2份低精度( INT8 )張量作為輸入,將卷積結果以float/int32 資料輸出,同時支援卷積後一些常規操作( scale,batchnorm,relu… )的合併。我們在單張 Tesla P4 GPU 上,對 falcon_conv 的效能與 Nvidia 官方計算庫Cudnn v7.1 做了比較,如圖所示。幾乎所有情況 falcon_conv 都優於 Cudnn ,個別用例有高至5倍的提升,用例選自 RESNET 和 VGG 中耗時較多的卷積引數。

產品化

在業務支援過程中我們遇到的第三個問題是整合化,產品化問題。除了手機類場景外,其他線下業務均需要額外的硬體平臺作為支撐。在早先時候,我們更多的是依賴第三方提供的硬體裝置,這時候成本,穩定性,可擴充套件性 成為制約線下專案拓展的幾個主要問題。為了解決這些問題,我們根據以往的專案經驗,對硬體裝置進行歸納,沉澱出兩類比較通用的線下產品化方案:智慧盒子和一體化相機。每類產品均包含不同型號,以適應不同需求的場景。

智慧盒子

我們提供的第一個方案為智慧盒子方案。我們可以簡單的把智慧盒子當作一個適合於中小型場景的邊緣伺服器。盒子本身提供了多種介面,可以外接 usb/ip 相機,語音模組等感測器。直接本地部署,資料安全性高。我們針對業務特點提供了高低兩個版本的智慧盒子。其中,高階版本採用阿里巴巴自研的邊緣計算產品 Alibaba Edge 。除了完善的硬體設計和高效的推理框架,該盒子還包含完善的編譯器支援,具有非常好的易用性。 低端版本則為純 ARM 的盒子。下面表格給出這兩種盒子在效能,成本和適用場景的一個對比。

在這裡我們著重介紹一下阿里巴巴自研的邊緣計算產品 Alibaba Edge,該產品除了具有高達 3TGFlops 的AI計算能力外,相對邊緣 GPU 方案有大幅的價格優勢,同時具有云端一體化部署功能,產品平臺化,可快速上線,支援大規模運維。

在下面的表格中,我們對比了 LRSSD300+MobileNetV2 的不同硬體裝置上的執行時間,希望可以給大家一個更直觀的認識。

一體化相機

我們提供的另一個整合方案為一體化相機。一體化相機特別適合雲+端的部署模式:線下做相對比較簡單的處理功能,雲端則深度處理線下傳回的資訊。達到節約頻寬,降低雲成本的作用。同時,一體化相機具有方便部署,批量化生產後成本優勢高的特點。目前一體化相機已經作為一個重要的載體形式被應用到我們所承接的對集團外合作專案中。

業務合作

在過去的2年間,我們嘗試過多種不同的業務模式。在這裡我們會列出主要幾個不同形式的例項。

菜鳥未來園區

在菜鳥未來園區專案中,我們主要負責基礎視覺類演算法的輸出,由菜鳥智慧園區團隊同學負責業務演算法和工程服務研發工作。經過半年的共同努力,我們先後完成了離崗睡崗檢測,消防通道異常檢測,車位佔用檢測,行人越界檢測,入口計數檢測等多個功能。

在專案合作的過程中,我們發現計算單元成本高是制約演算法大範圍推廣的一個主要原因。為了解決這個問題,我們聯合了伺服器研發團隊,開發出一版定製化軟硬體解決方案:該方案的硬體平臺為我們在上文中提到的邊緣計算產品 Alibaba Edge,同時配備特別定製的高效模型結構和自研的快速檢測演算法。新版方案在檢測精度幾乎無損的情況下,推理速度提升了4-5倍,成本相比邊緣 GPU 方案下降了1/2。

模型壓縮加速

我們協助阿里集團不同業務同學完成對已有演算法模型的量化瘦身與加速工作。例如:手機端 OCR 識別、手機端物體檢測、手淘實人認證和刷臉登入/驗證、菜鳥自提櫃、阿里體育賽事刷臉入場、神州鷹人臉識別雲相簿等。

總結與展望

經過近兩年的努力,機器智慧技術實驗室線下智慧團隊深耕線下智慧領域。演算法方面:我們在低位元量化、稀疏化、軟硬體協同設計、輕量級網路設計、端上目標檢測等多個方面取得了一定的積累,多項指標達到了業內最佳水平。工程方面:我們積累出了一套 高靈活性,高資料安全性 的訓練工具 ; 並在合夥夥伴的幫助下,在ARM,FPGA,GPU 等多個平臺下達到了業內最佳的推理效能。產品化方面:我們與合作伙伴一起,研發出適合於不同業務場景的智慧盒子與一體化相機。最後,我們很幸運可以在集團內外多個不同形式的業務場景內打磨我們的技術。

作者:翎翀

原文連結

本文為雲棲社群原創內容,未經