看板 DataScience 關於我們 聯絡資訊
各位前輩好,小弟最近在做一個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
yoyololicon: 用libtorch沒啥問題 要跑real time wavenet 可以看 01/28 09:33
yoyololicon: 看fast wavenet, 還有百度deepvoice的paper ,在實01/28 09:33
yoyololicon: 做上有很詳細的介紹,基本上就是一直cache以及做mul01/28 09:33
yoyololicon: tiprocessing01/28 09:33
謝謝,稍微掃過paper 沒有理解錯的話似乎大部分是在解auto regressive (AR)的問題 後續的研究似乎也都是想把AR拿掉。但如果已經沒有AR,像是這篇 https://arxiv.org/pdf/1706.07162.pdf 是一次處理一個區塊,那有辦法再加速嗎 (例如針對dilated conv等等)。 還是我有理解錯誤?
gary9630: pruning的話可以參考ICLR2019 best paper那篇 winning l01/28 15:11
gary9630: ottery ticket 做法蠻直覺的01/28 15:11
謝謝推薦!會從這篇追下去的
truehero: 菜鳥其實不建議libtorch開局,現在坑多01/28 20:46
truehero: ㄧ些簡易推理框架 像ncnn mnn相對簡單01/28 20:47
truehero: 模型壓縮或量化也都有具體實現可參考01/28 20:48
嗯嗯,其實我踩了不少xD 像是stft轉c++會出錯 官方甚至沒有istft 然後還需要一些dependencies 像是intel mkldnn等等 前輩提到的架構,我會再找時間研究看看。謝謝! ※ 編輯: DiscreteMath (111.82.123.163 臺灣), 01/28/2020 23:06:25
yoyololicon: 就我所知,拿掉AR直接平行運算出各個sample的wavene 01/29 11:59
yoyololicon: t,不用特別優化就比AR版本的快;但主觀評分AR版本 01/29 11:59
yoyololicon: 的分數大體上都比較高,要得到和AR版本compatible 01/29 11:59
yoyololicon: 的表現,模型參數會肥上非常多,所以跑realtime 也 01/29 11:59
yoyololicon: 不見得有優勢 01/29 11:59
acctouhou: 樓上那篇pruning的文章主要是在說pruning後的結構在訓 01/29 12:03
acctouhou: 練時有更好的表現跟這一篇想做的事無關吧? 01/29 12:03
yoyololicon: 非AR類比較有名的模型;waveglow, parallel wavenet 01/29 12:03
yoyololicon: , clarinet 01/29 12:03
yoyololicon: AR類除了wavenet,WaveRNN和LPCNet減少了參數量,並 01/29 12:07
yoyololicon: 設計一套predict sample的方法,會比wavenet更容易 01/29 12:07
yoyololicon: 跑realtime 01/29 12:07
yoyololicon: 我原先提的兩篇paper 主要在最大化wavenet inferenc 01/29 12:10
yoyololicon: e 時的運算資源,並沒有更改原本的架構 01/29 12:10
sma1033: 有神快拜 01/30 23:15
yoyololicon: 學弟不敢>< 01/30 23:32