ModelArts的雪中送炭,讓我拿下CCF BDCI華為Severless工作負載預測亞軍


摘要: 中國計算機學會大數據與計算智能大賽(CCF BDCI)華為Severless工作負載預測亞軍方案和ModelArts使用體驗分享

本文分享自華為雲社區《免費薅ModelArts算力資源-拿下CCF BDCI華為Severless工作負載預測亞軍》,原文作者:wyhhyw 。

賽題簡介

基於歷史數據和歷史趨勢,對Severless軟件架構的工作負載進行精准預測,便於優化資源調整和提升用戶服務質量。

數據提供了43個隊列數天中的使用情況,其中包涵CPU使用率、磁盤使用率、提交作業數量,作業是否提交成功等信息。要求根據歷史信息,預測測試集未來25分鍾內,每間隔五分鍾的CPU使用率和提交作業數量。賽題鏈接https://www.datafountain.cn/competitions/468.

賽題分析

這是一道非常典型的時間序列回歸問題,目標時對未來五個時間點的CPU使用率和提交作業進行預測。可以從以下幾個角度對目標進行建模。

  • 趨勢擬合:根據待預測時間點之前的使用率和作業數擬合曲線,並給出預測,參考arima等模型。
  • 單標簽回歸:以5為時間間隔,對目標進行預測,例如,x1 -> x6, x2 -> x7。具體如下圖所示:

https://bbs-img.huaweicloud.com/blogs/img/1621823856163042948.png

  • 多標簽回歸:參考pandas.shift函數,構造歷史信息的平滑特征,每次預測一個時間點的目標。示意圖如下:
    https://bbs-img.huaweicloud.com/blogs/img/1621823867681008116.png

方案介紹

筆者有幸獲得該比賽的第二名(二等獎),建模方法為融合lightgbm和lstm預測結果,其中lightgbm線上第二,lstm線上第10左右。由於本方案采用的lstm結構比較簡單且成績不是特別理想,而第三名的lstm是決賽答辯隊伍中線上成績最高的神經網絡模型,因此本文還介紹了第三名(同二等獎)的lstm架構。

數據分析

在特征工程和建模之前,首先來一波EDA~

下圖展示了不同隊列下的CPU使用率分布情況,可以發現,不同隊列下的數據分布存在較大差別,因此隊列號對於預測CPU使用率也是一個非常強力的特征。
https://bbs-img.huaweicloud.com/blogs/img/1621823886703006384.png

下圖展示了某隊列號下CPU使用率隨小時的變化趨勢,可以發現下午至凌晨3點使用率均較高,因此小時和分鍾也是一個非常強力的特征。需要注意的是,賽題方對時間戳的年月日進行了脫敏,因此僅能使用小時和分鍾兩個特征。
https://bbs-img.huaweicloud.com/blogs/img/1621823933442091337.png

特征工程

必不可少的部分,特征為王

  • 滑動特征:對CPU使用率等特征使用pandas.shift函數構建其平滑特征。
  • 差分特征:在平滑特征的基礎上構造各階差分特征。
  • 基於滑窗的統計特征:在平滑特征的基礎上開一個窗口,然后滑動,每次取窗口內特征的均值、方差、最大值等統計特征。
  • 聚合統計特征:例如歷史數據中不同小時下CPU使用率的均值和方差等特征。
  • 偽穿越特征:穿越特征一般是不被允許的。那么對於時序問題,可以構建偽穿越特征,其實也就是聚合統計特征。例如,待預測的時間點是上午9點,可以根據歷史數據構造上午10點的均值等統計特征,並且衍生出差值比值等特征。
    https://bbs-img.huaweicloud.com/blogs/img/1621823942483093926.png

模型

  • 建模策略:見賽題分析中的多標簽回歸。一般來說,這種建模方式都會取得較好的效果。
  • lightgbm:對每一個標簽都進行五折交叉驗證,CPU使用率和提交作業數各五個時間點,則一共進行了十次五折交叉驗證。
  • lstm:CPU使用率是0-100的整數,連續五個時間點的數據如"10-21-41-31-34"可以看做是nlp中的字符索引,因此可以直接用於索引embedding lookup table中的字向量,那么建模就很自然的過度到了lstm。

下圖展示了本文所用的lstm架構,效果並不是十分理想,線上大約在第十左右。在賽后和隊友分析討論之后,認為我們的框架存在幾個問題。首先是將每個CPU使用率當做字向量,那么lstm中的input_dim為1,效果肯定不好。其次是我們的框架很簡單,並沒有引入卷積或者注意力機制等。
https://bbs-img.huaweicloud.com/blogs/img/1621823962354076690.png

下面給出二等獎中另一支隊伍的lstm框架,該框架包括兩部分:
(1)LSTM提取CPU使用率、硬盤使用率的時序信息,引入注意力機制
(2)全連接提取其他手工特征的信息,進行高階交叉,並且設置跨層連接,構成“不同尺度的集成模型”。

https://bbs-img.huaweicloud.com/blogs/img/1621823980403097305.png

訓練

  • 損失:由於數據波動較大,因此可以認為存在一定的離群點,所以采用smooth l1作為損失函數。
  • 算力:lightgbm建模對算力的要求較小,16G內存足以。但使用上述神經網絡訓練時,由於是多標簽回歸(10個標簽),對每個標簽都需要訓練一個模型,如果再結合五折交叉驗證,那么將訓練50個模型,這對算力就有一定的需求。

筆者在賽程接近尾聲時才開始訓練nn模型,然而本人只有一張玩具顯卡gtx1650,對於該多標簽任務訓練數十個模型實在太過耗費時間,迫不得已去尋找算力資源。經過師兄的推薦,最后選定了華為雲的ModelArts,每天兩小時的免費算力,而且是V100,感覺很不錯。最后讓實驗室兄弟多開幾個號,一邊訓練一邊保存模型,時間快到了就換號繼續訓練,兩三天就把模型跑好了。雖然因為時限需要切換賬號,但總體的使用體驗還是不錯的,下面就給大家簡單介紹一下ModelArts的使用體驗。

ModelArts使用體驗

使用感受

(1)雖然是在雲端訓練,但是ModelArts提供了jupyter lab/notebook,就像平時在本地PC上上傳數據到notebook中然后寫代碼一樣,完全感知不到訓練流程的變化。lab中集成了不同的引擎,常規的如pytorch, tf, xgboost這些都有。

https://bbs-img.huaweicloud.com/blogs/img/1621823992835025634.png

https://bbs-img.huaweicloud.com/blogs/img/1621824031360064154.png

(2)安裝依賴包很方便,直接在cell中’!pip install xxx’就可以,原生的notebook中好像沒有這個功能。比如我新建的notebook是pytorch引擎,但又需要xgboost,那么就可直接安裝,見下圖。

https://bbs-img.huaweicloud.com/blogs/img/1621824049617092045.png

(3)目前上傳數據有限制,一次只能上傳大約是幾百MB,可以先將數據上傳至notebook中后再進行特征工程,對於比較大的數據,可以本地切分以后分批上傳,所以這也是一個無關緊要的問題,畢竟免費V100太香了。

還有一些其他的細節,各位小伙伴們可以自行探索呀!

划重點-如何申請

還愣着干什么,猛點鏈接,搶算力呀!!! https://bbs.huaweicloud.com/forum/thread-51080-1-1.html

 獲取更多 AI 相關數據、算法、模型等 AI 資產,請點擊“了解更多”,AI Gallery等您!

 

點擊關注,第一時間了解華為雲新鮮技術~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM