免費薅ModelArts算力資源-拿下CCF BDCI華為Severless工作負載預測亞軍
引入
賽題簡介
賽題分析
方案介紹
數據分析
特征工程
模型
訓練
ModelArts使用體驗
使用感受
劃重點-如何申請
引入
筆者是一位機器學習和數據挖掘競賽的愛好者,經常在天池、DF和DC等平臺上參加各種比賽,難免會遇到算力資源不夠的情況,本文就介紹了筆者在CCF大數據與計算智能大賽華為賽道中因算力不夠而薅華為ModelArts的羊毛(打華為的比賽,薅一薅華為的羊毛不過分吧),并最終獲得第二名的歷程。下面具體介紹建模方案和ModelArts使用體驗。
賽題簡介
基于歷史數據和歷史趨勢,對Severless軟件架構的工作負載進行精準預測,便于優化資源調整和提升用戶服務質量。
數據提供了43個隊列數天中的使用情況,其中包涵CPU使用率、磁盤使用率、提交作業數量,作業是否提交成功等信息。要求根據歷史信息,預測測試集未來25分鐘內,每間隔五分鐘的CPU使用率和提交作業數量。賽題鏈接https://www.datafountain.cn/competitions/468.
賽題分析
這是一道非常典型的時間序列回歸問題,目標時對未來五個時間點的CPU使用率和提交作業進行預測。可以從以下幾個角度對目標進行建模。
趨勢擬合:根據待預測時間點之前的使用率和作業數擬合曲線,并給出預測,參考arima等模型。
單標簽回歸:以5為時間間隔,對目標進行預測,例如,x1 -> x6, x2 -> x7。具體如下圖所示:
多標簽回歸:參考pandas.shift函數,構造歷史信息的平滑特征,每次預測一個時間點的目標。示意圖如下:
方案介紹
筆者有幸獲得該比賽的第二名(二等獎),建模方法為融合lightgbm和lstm預測結果,其中lightgbm線上第二,lstm線上第10左右。由于本方案采用的lstm結構比較簡單且成績不是特別理想,而第三名的lstm是決賽答辯隊伍中線上成績最高的神經網絡模型,因此本文還介紹了第三名(同二等獎)的lstm架構。
數據分析
在特征工程和建模之前,首先來一波EDA~
下圖展示了不同隊列下的CPU使用率分布情況,可以發現,不同隊列下的數據分布存在較大差別,因此隊列號對于預測CPU使用率也是一個非常強力的特征。
下圖展示了某隊列號下CPU使用率隨小時的變化趨勢,可以發現下午至凌晨3點使用率均較高,因此小時和分鐘也是一個非常強力的特征。需要注意的是,賽題方對時間戳的年月日進行了脫敏,因此僅能使用小時和分鐘兩個特征。
特征工程
必不可少的部分,特征為王
滑動特征:對CPU使用率等特征使用pandas.shift函數構建其平滑特征。
差分特征:在平滑特征的基礎上構造各階差分特征。
基于滑窗的統計特征:在平滑特征的基礎上開一個窗口,然后滑動,每次取窗口內特征的均值、方差、最大值等統計特征。
聚合統計特征:例如歷史數據中不同小時下CPU使用率的均值和方差等特征。
偽穿越特征:穿越特征一般是不被允許的。那么對于時序問題,可以構建偽穿越特征,其實也就是聚合統計特征。例如,待預測的時間點是上午9點,可以根據歷史數據構造上午10點的均值等統計特征,并且衍生出差值比值等特征。
模型
建模策略:見賽題分析中的多標簽回歸。一般來說,這種建模方式都會取得較好的效果。
lightgbm:對每一個標簽都進行五折交叉驗證,CPU使用率和提交作業數各五個時間點,則一共進行了十次五折交叉驗證。
lstm:CPU使用率是0-100的整數,連續五個時間點的數據如"10-21-41-31-34"可以看做是nlp中的字符索引,因此可以直接用于索引embedding lookup table中的字向量,那么建模就很自然的過度到了lstm。
下圖展示了本文所用的lstm架構,效果并不是十分理想,線上大約在第十左右。在賽后和隊友分析討論之后,認為我們的框架存在幾個問題。首先是將每個CPU使用率當做字向量,那么lstm中的input_dim為1,效果肯定不好。其次是我們的框架很簡單,并沒有引入卷積或者注意力機制等。
下面給出二等獎中另一支隊伍的lstm框架,該框架包括兩部分:
(1)LSTM提取CPU使用率、硬盤使用率的時序信息,引入注意力機制
(2)全連接提取其他手工特征的信息,進行高階交叉,并且設置跨層連接,構成“不同尺度的集成模型”。
訓練
損失:由于數據波動較大,因此可以認為存在一定的離群點,所以采用smooth l1作為損失函數。
算力:lightgbm建模對算力的要求較小,16G內存足以。但使用上述神經網絡訓練時,由于是多標簽回歸(10個標簽),對每個標簽都需要訓練一個模型,如果再結合五折交叉驗證,那么將訓練50個模型,這對算力就有一定的需求。
筆者在賽程接近尾聲時才開始訓練nn模型,然而本人只有一張玩具顯卡gtx1650,對于該多標簽任務訓練數十個模型實在太過耗費時間,迫不得已去尋找算力資源。經過師兄的推薦,最后選定了華為云的ModelArts,每天兩小時的免費算力,而且是V100,感覺很不錯。最后讓實驗室兄弟多開幾個號,一邊訓練一邊保存模型,時間快到了就換號繼續訓練,兩三天就把模型跑好了。雖然因為時限需要切換賬號,但總體的使用體驗還是不錯的,下面就給大家簡單介紹一下ModelArts的使用體驗。
ModelArts使用體驗
使用感受
(1)雖然是在云端訓練,但是ModelArts提供了jupyter lab/notebook,就像平時在本地PC上上傳數據到notebook中然后寫代碼一樣,完全感知不到訓練流程的變化。lab中集成了不同的引擎,常規的如pytorch, tf, xgboost這些都有。
(2)安裝依賴包很方便,直接在cell中’!pip install xxx’就可以,原生的notebook中好像沒有這個功能。比如我新建的notebook是pytorch引擎,但又需要xgboost,那么就可直接安裝,見下圖。
(3)目前上傳數據有限制,一次只能上傳大約是幾百MB,可以先將數據上傳至notebook中后再進行特征工程,對于比較大的數據,可以本地切分以后分批上傳,所以這也是一個無關緊要的問題,畢竟免費V100太香了。
還有一些其他的細節,各位小伙伴們可以自行探索呀!
劃重點-如何申請
還愣著干什么,猛點鏈接,搶算力呀!!! https://bbs.huaweicloud.com/forum/thread-51080-1-1.html
AI開發平臺ModelArts
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。