上一篇文章提到了模型不環保這個話題。這篇文章就這個問題展開嘮叨一下。
自從BERT, GPT此類的大型模型誕生以來,小作坊們除了把pre-trained的模型拿過來微調一下,就束手無策了,因為成本實在是太高,實在不宜重現。而大型網路繼續擴大,似乎並沒有停下腳步,模型計算量的增加速度大大超過了摩爾定律。我們驚歎於AlphaGo的能力的時候,可能不知道它一小時的cost是一千美刀,訓練cost更是高達幾千萬美刀,這是根據tpu, gpu的租用成本算出來的,與人力研究成本無關。有學者指出,訓練出一個大型深度模型的二氧化碳排放,可相當於五輛汽車的終生二氧化碳排放量。
可實際上,人的大腦在處理事情的時候,是以高效節能著稱。大腦在處理一件比較複雜的事情,在不太熟悉的時候,大腦需要消耗比較大的能量,之後處理類似事情所需要的能量越來越少,甚至最後無意識下就已經處理好了。
對於人工智慧, 擴大網路,增加計算複雜度,真的是AI的方向嗎?很多學者提出了質疑。
近幾年對於AI的綠色環保問題也越來越多的引起關注。
根據資料統計,在雲端,關於機器學習計算負載,20%是訓練,而80%的是模型的使用(預測,歸類,推斷。。。)。
從這個資料來說,對於AI的環保節能,提高模型使用效率似乎潛在的貢獻更大。當然模型使用效率對於商業需求來說,更加的緊迫。模型的計算量大,意味著延時大,硬體要求高,成本大。環保節能和商業需求一致,也算是一個好訊息。
很多企業也積極公佈自己的節能預測good practice。之前提到過的Roblox的一篇blog,談論如何在cpu上每天做1b個基於預測。https://blog.roblox.com/2020/05/scaled-bert-serve-1-billion-daily-requests-cpus/ 其中用到了distillBert(壓縮的模型), 快取等方法來提高預測吞吐量。
很多企業,由於軟體基礎架構的限制,使得模型訓練平臺不適用於產品平臺,因此必須引入適合於產品平臺的模型預測框架。對於採用什麼預測平臺,對於最終的預測效率會有很大的影響。如何給模型feed資料? batch怎麼設計? 為了避免頻繁padding浪費資源,可能需要把大小差不多的資料放在一個batch裡。細節可能決定成敗。
之前做一個專案,在實驗室裡對於第一版的模型進行除錯的時候,發現資料預處理和後處理所需要的時間居然和深度模型本身的計算時間差不多,真是大大吃了一驚。很多的Data Scientist們往往只注重模型的架構和模型最終的準確度,而資料處理往往跟著感覺走,對了就行,但到最後,常常就是這些細節阻止了模型上線。當很多的pre-trained的模型可以使用時,資料處理慢慢成為機器學習工程師們的主要工作部分。pre-trained的模型往往是經過優化的,複雜的計算是用c實現的,而用python做的資料處理如果不注意,用錯資料型別,就會掉進之前提到的陷阱。之前quora上有人提到,機器學習模型,合理的程式碼量和執行時間分配比例是,90%以上的程式碼是python寫的,而90%以上的時間是跑在c上面的。推薦一篇文章,關於深度模型部署的good practice: https://towardsdatascience.com/an-empirical-approach-to-speedup-your-bert-inference-with-onnx-torchscript-91da336b3a41
那麼對於模型訓練的環保節能,有什麼好的實踐可以借鑑呢,或者好的方向可以深入研究呢?我覺得,transfer learning, meta learning和模型壓縮,都可以說對機器學習的環保節能做了很大貢獻。
transfer learning充分使用了已經訓練過的模型,不管是模型的整體微調,或者疊加簡單層再訓練,都可謂站在巨人的肩膀上,在保證質量的同時,大大減少了訓練時間和成本。很多企業和研究機構共享了成功模型,使得這個方向越來越普及。
我們知道,決定一個模型訓練成本的一個重要因素,是演算法的網路結構複雜度,引數的多少(計算量為o)。但超引數,hyperparameter也是不容忽視的。特別是當超引數的數量變大(n個引數),取值空間變大的時候(m個取值),那所做的貢獻是相當的可觀。總的計算量是n*m*o。meta learning的motivation就是要有效的縮小超引數的探索空間。而在實驗室跑實驗的時候,很多的機器學習工程師或研究人員們有這個習慣,這個超引數該怎麼取值呢?讓實驗告訴我們吧,先跑幾天看看。但如果稍微分析一下,會發現,有些取值根本沒必要讓實驗告訴我們。meta learning的一個貢獻就是讓這個分析自動化。
模型壓縮,從字面上就可以看出,這是直奔節能環保而去。但壓縮的方向有很多,比如說節點修剪,降低計算精度,知識蒸餾等。
除此之外,Green AI還呼籲,當研究人員在釋出一個實驗結果的時候,並不僅僅是釋出好的實驗結果,那些不好的結果也是非常重要的,因為可以提醒大家,這些都已經研究過了,不要再浪費資源在這方向上了。
除了文中提到的文章,再推薦幾個這個話題的有趣閱讀。
關於alphago的cost:
https://www.yuzeh.com/data/agz-cost.html
關於深度模型訓練的能耗:
https://www.technologyreview.com/2019/06/06/239031/training-a-single-ai-model-can-emit-as-much-carbon-as-five-cars-in-their-lifetimes/
論文Green AI
https://arxiv.org/abs/1907.10597
閱讀作者更多原創,關注微信公眾號: