[問題] 模型產品化時 效率與加速問題

看板DataScience作者 (離散數學)時間4年前 (2020/01/28 01:18), 4年前編輯推噓6(6019)
留言25則, 5人參與, 4年前最新討論串1/1
各位前輩好,小弟最近在做一個side project,目標是做成一個小的prototype 由於是自行摸索的,所以遇到一些問題,希望能得到大家的建議 用一句話描述目前技術與瓶頸,就是我是使用wavenet來解決音訊相關的問題,所以有極 高的real-time需求 目前使用稍大的模型已經取得初步成果,也成功的把模型轉成C++,接下來的問題就是如 何對模型進行"瘦身" 讓小弟將問題一一陳述: 1. framework的選用 (in C++) 我是使用pytorch,他對於C++相關的文件支援其實我覺得很夠用了,我沒花多少時間就成 功deploy。TF似乎在某版後就需要使用他們自己的編譯工具, 考量到我還要和其他框架合併,而且C++並不那麼熟悉,libtorch可以自己寫CMAKE其實方 便很多。 還有就是寫pytorch真的很養生XDDD 第一個問題就是,同樣的graph,TF和pytorch在C++效能會差很多嗎? 又或是我有看到有人用Eigen重新刻一個,也耳聞業界似乎會使用C/C++重寫,有這方面的 學習資源,建議或是經驗嗎? 或是有好的Github repo能參考嗎? 那重刻的效能大概會提升多少? 2. GPU 考量到使用場景,應該不會使用GPU,希望是"僅使用CPU"的情況下去想如何加速,那CUDA 加速似乎就出局了(? 其實目前應該是不希望藉由額外的硬體來做加速,但如果有硬體(音效卡,晶片,GPU) 方面加速的經驗或是建議,還是非常歡迎喔! 3. Model Pruning 這詞也是聽朋友說的XD 由於以往在碩班,如果train不起來performance不好就是加深加 大,其實對於模型的效能完全不考慮。 有聽說浮點數換整數,還有運用一些手法來抽換掉不重要的filter等等 網路上也蠻多討論的,想知道該從哪個方法下手呢? 4. Parameter Searching 例如想驗證設計的架構是否正確,可以先使用極小筆的資料先overfitting 那在搜尋"最小"or"最少參數"模型的場景,有沒有類似的理念,或是哪些有效率的方法呢 ? ----- 分割線 ----- 簡而言之,就是小弟我太菜啦XDDD 剛畢業進入業界,才發現要把Deep Learning落地,其實坑還不少 鑑於公司人不多,而且還沒有這方面的強烈需求(未來可能會有) 但自己又蠻想練功的,所以想徵詢這邊各位前輩的意見 問題有點多,有些領域和技術還是懵懵懂懂,還請各位版友不吝指教 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.82.91.252 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1580145487.A.0B9.html

01/28 09:33, 4年前 , 1F
用libtorch沒啥問題 要跑real time wavenet 可以看
01/28 09:33, 1F

01/28 09:33, 4年前 , 2F
看fast wavenet, 還有百度deepvoice的paper ,在實
01/28 09:33, 2F

01/28 09:33, 4年前 , 3F
做上有很詳細的介紹,基本上就是一直cache以及做mul
01/28 09:33, 3F

01/28 09:33, 4年前 , 4F
tiprocessing
01/28 09:33, 4F
謝謝,稍微掃過paper 沒有理解錯的話似乎大部分是在解auto regressive (AR)的問題 後續的研究似乎也都是想把AR拿掉。但如果已經沒有AR,像是這篇 https://arxiv.org/pdf/1706.07162.pdf 是一次處理一個區塊,那有辦法再加速嗎 (例如針對dilated conv等等)。 還是我有理解錯誤?

01/28 15:11, 4年前 , 5F
pruning的話可以參考ICLR2019 best paper那篇 winning l
01/28 15:11, 5F

01/28 15:11, 4年前 , 6F
ottery ticket 做法蠻直覺的
01/28 15:11, 6F
謝謝推薦!會從這篇追下去的

01/28 20:46, 4年前 , 7F
菜鳥其實不建議libtorch開局,現在坑多
01/28 20:46, 7F

01/28 20:47, 4年前 , 8F
ㄧ些簡易推理框架 像ncnn mnn相對簡單
01/28 20:47, 8F

01/28 20:48, 4年前 , 9F
模型壓縮或量化也都有具體實現可參考
01/28 20:48, 9F
嗯嗯,其實我踩了不少xD 像是stft轉c++會出錯 官方甚至沒有istft 然後還需要一些dependencies 像是intel mkldnn等等 前輩提到的架構,我會再找時間研究看看。謝謝! ※ 編輯: DiscreteMath (111.82.123.163 臺灣), 01/28/2020 23:06:25

01/29 11:59, 4年前 , 10F
就我所知,拿掉AR直接平行運算出各個sample的wavene
01/29 11:59, 10F

01/29 11:59, 4年前 , 11F
t,不用特別優化就比AR版本的快;但主觀評分AR版本
01/29 11:59, 11F

01/29 11:59, 4年前 , 12F
的分數大體上都比較高,要得到和AR版本compatible
01/29 11:59, 12F

01/29 11:59, 4年前 , 13F
的表現,模型參數會肥上非常多,所以跑realtime 也
01/29 11:59, 13F

01/29 11:59, 4年前 , 14F
不見得有優勢
01/29 11:59, 14F

01/29 12:03, 4年前 , 15F
樓上那篇pruning的文章主要是在說pruning後的結構在訓
01/29 12:03, 15F

01/29 12:03, 4年前 , 16F
練時有更好的表現跟這一篇想做的事無關吧?
01/29 12:03, 16F

01/29 12:03, 4年前 , 17F
非AR類比較有名的模型;waveglow, parallel wavenet
01/29 12:03, 17F

01/29 12:03, 4年前 , 18F
, clarinet
01/29 12:03, 18F

01/29 12:07, 4年前 , 19F
AR類除了wavenet,WaveRNN和LPCNet減少了參數量,並
01/29 12:07, 19F

01/29 12:07, 4年前 , 20F
設計一套predict sample的方法,會比wavenet更容易
01/29 12:07, 20F

01/29 12:07, 4年前 , 21F
跑realtime
01/29 12:07, 21F

01/29 12:10, 4年前 , 22F
我原先提的兩篇paper 主要在最大化wavenet inferenc
01/29 12:10, 22F

01/29 12:10, 4年前 , 23F
e 時的運算資源,並沒有更改原本的架構
01/29 12:10, 23F

01/30 23:15, 4年前 , 24F
有神快拜
01/30 23:15, 24F

01/30 23:32, 4年前 , 25F
學弟不敢><
01/30 23:32, 25F
文章代碼(AID): #1UBnjF2v (DataScience)