要說部署神經網路的訓練和推理,就得依賴深度學習框架。目前已有的通用深度學習框架已不下於數十種。其中比較有影響力的如tensorflow, pytorch, mxnet等。此外,還有針對特定使用環境所開發出的特殊的深度學習框架,如nvidia針對nvidia圖形處理器上執行推理任務所開發的tensorrt,谷歌針對tensorflow模型在移動端上部署開發的推理框架tensorflow lite,小公尺和阿里巴巴分別針對移動端推理開發的mace和mnn。分類可以根據以下幾種情況來分類。
通用的深度學習框架可以根據其定義模型時候的差異分為動態圖(dynamic computation graph)與靜態圖(statistic computation graph)。這兩者的主要差別在於:
在支援靜態圖的框架,如tensorflow、mxnet,是通過先定義後運算的方式,在繼續執行之前的計算圖的時候,不需要再次進行重構。靜態計算允許編譯器進行更大程度的優化。支援動態圖的框架,如pytorch,會按照開發者編寫的順序執行命令。這大幅降低了開發者除錯的成本。
通用深度學習框架就是在pc端、資料服務中心這些地方。邊緣端推理框架就是針對邊緣端的裝置。
為了支援特定的硬體,這些底層支援庫的開發者大多都是硬體廠商或與硬體廠商有緊密的合作。
nvidia的圖形處理器在當前深度學習的社群中有著無法取代的地位。為了加速訓練,nvidia開發了從底層cuda到支援線性運算的cublas,以及針對深度神經網路中常用操作的cudnn等大量計算庫。遺憾的是,與本設計有著緊密關係的cudnn庫並不是面向開源社群的。
由amd開發的rocm家族的架構非常類似於cuda家族。其作為程式語言的hip的定位類似於cuda;主要面向線性計算的rocblas定位近似於cublas。
與nvidia的cuda家族和amd的rocm家族相比,intel的mkldnn的定位略有不同。在intel x86架構下,如何實現對神經網路的良好支援是mkldnn的主要定位。
tvm簡介
tvm自定義運算元+測試
mnn神經網路編譯器圖層面ir
神經網路編譯器-常量摺疊
神經網路編譯器優化-死**消除
halide-based ir和 polyhedral-based ir簡介
後端優化技術loop transformation
神經網路編譯器的tensor優化:auto tune和auto schedule
神經網路的加速技術
神經網路稀疏性調研
神經網路中矩陣稀疏性的編碼方式
Pytorch網路訓練模型轉成C 推理執行
顯著性檢測網路模型是基於pytorch深度學習框架進行搭建並參與訓練的,在實際應用和生產中,由於要滿足低延遲和嚴格部署要求,通常選用c 來進行推理過程。這裡的顯著圖推理模型c 轉換過程主要由以下幾個步驟組成 將pytorch網路模型轉換為torch script,並序列化為乙個檔案 配置編譯執行環境...
3模型大小 混合精度對模型訓練和推理的影響
計算機使用0 1來標識資訊,每個0或每個1代表乙個bit。資訊一般會以下面的三種形式表示 1 字串 字串的最小單元是char,每個char佔8個bit,也就是1個byte。比如字串 abc 這三個字元組成的串占用的儲存空間 儲存空間 1x3 3 bytes 24 bits 2 整數整數包括int4 ...
數理關係和推理和智力
某單位有工作人員48人,其中女性佔總人數的37.5 後來又調來女性若干人,這時女性人數恰好是總人數的40 問調來幾名女性 48的37.5是18設x調來2 有8層台階,開始在第0層,每次可以爬一層或者兩層,請問爬到8層一共有 種方法 斐波那契數列問題。動態轉移方程式 f n f n 1 f n 2 因...