别人的代码是火箭,我的代码是乌龟……
秋招正卷時,AI算法人才熱度與需求減少,AI工程人才熱度與需求激增,這是當下AI的現狀。隨著開源之風刮起,當下各大企業逐漸意識到,與其花重金養一個博士算法團隊,不如多招一些工程能力強的本科或者碩士生。
畢竟各家算法精度相差無幾,并且絕大多數落地場景對精度的要求并不苛刻(87%與85%,沒太大區別)。更為重要的是算法思想再好,能實際落地才行。而實際落地時,需要考慮的因素更多,比如運算效率、內存占用等。
近期學弟原本開開心心地做算法,突然領導交給了一個算法部署的任務...
學弟:小組長讓部署一個視覺模型,爭取適配不同平臺要求,同時提高模型運行的速度,可愁死了,咋辦啊,學長?
我:TensorFlow、PyTorch這些框架的模型,都可以轉到ONNX模型格式,然后再做個模型量化,或者精度轉化,這不是很輕松么?
學弟:學長,你可別說了。能試的我都試過了,小組長要求,不僅實現加速,而且性能最好也有所提高,這可咋整啊???
我絞盡腦汁,突然靈光一閃,說道:要不重寫一下算法模型算子,這樣肯定可以加速運行。
學弟頓時來勁了:學長,啥方法這么厲害!趕緊分享一下,兩頓飯如何?
我笑了笑:簡單啊,用CUDA重寫一下模型算子,這樣不就能實現模型加速。
學弟苦笑了一下:學長,用CUDA寫算子做模型加速,太難了!于是推薦了一份學習cuDNN的資料給學弟。
資源條件有限,如何模型推理加速?
沒過幾天,學弟又愁眉苦臉來找我。
“cuDNN倒是沒問題,小組長說,光訓練不行啊,還有嵌入式或者邊緣計算設備,只能來推理,這樣咋做模型加速呢?”
我也被問住了,咋辦呀,還能咋辦,問大佬唄。經過我軟磨硬泡,終于又套來了一份大佬的資料,又甩給了學弟。
學弟開心的跳起來說:學長,這TensorRT又是啥神器啊?
我解釋道:TensorRT是NVIDIA針對自家平臺做的加速包,只負責模型的推理(inference)過程,一般不用TensorRT來訓練模型的,而是用于部署時加速模型運行速度。主要功能包括:
??算子融合(層與張量融合):簡單來說就是通過融合一些計算op或者去掉一些多余op來減少數據流通次數以及顯存的頻繁使用來提速;
??量化:量化即IN8量化或者FP16以及TF32等不同于常規FP32精度的使用,這些精度可以顯著提升模型執行速度并且不會保持原先模型的精度;
??內核自動調整:根據不同的顯卡構架、SM數量、內核頻率等(例如1080TI和2080TI),選擇不同的優化策略以及計算方式,尋找最合適當前構架的計算方式;
??動態張量顯存:我們都知道,顯存的開辟和釋放是比較耗時的,通過調整一些策略可以減少模型中這些操作的次數,從而可以減少模型運行的時間;
??多流執行:使用CUDA中的stream技術,最大化實現并行操作。
知識點很多,但在學習時沒有實操案例,這里推薦一門深藍學院開設了『CUDA入門與深度神經網絡加速』課程,可以去聽聽。
課程大綱
課程收獲
1.掌握CUDA并行計算系統的分析、開發、調試與優化方法;
2.熟悉CUDA的基本概念以及主流的并行運算;
3.了解cuDNN與TensorRT兩個深度學習模型加速的主流工具;
4.具備動手實踐深度學習模型的加速的能力。
搶占學習名額
掃碼備注【流】
咨詢奕木 了解CUDA
總結
以上是生活随笔為你收集整理的别人的代码是火箭,我的代码是乌龟……的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12nm 制程、Zen+ 微架构 AMD
- 下一篇: mysql数据库赋予权限 版本语法差异