天天看點

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。具體如下圖所示:
ModelArts的雪中送炭,讓我拿下CCF BDCI華為Severless工作負載預測亞軍
  • 多标簽回歸:參考pandas.shift函數,構造曆史資訊的平滑特征,每次預測一個時間點的目标。示意圖如下:
    ModelArts的雪中送炭,讓我拿下CCF BDCI華為Severless工作負載預測亞軍

方案介紹

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

資料分析

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

下圖展示了不同隊列下的CPU使用率分布情況,可以發現,不同隊列下的資料分布存在較大差别,是以隊列号對于預測CPU使用率也是一個非常強力的特征。

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

下圖展示了某隊列号下CPU使用率随小時的變化趨勢,可以發現下午至淩晨3點使用率均較高,是以小時和分鐘也是一個非常強力的特征。需要注意的是,賽題方對時間戳的年月日進行了脫敏,是以僅能使用小時和分鐘兩個特征。

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

特征工程

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

  • 滑動特征:對CPU使用率等特征使用pandas.shift函數建構其平滑特征。
  • 差分特征:在平滑特征的基礎上構造各階差分特征。
  • 基于滑窗的統計特征:在平滑特征的基礎上開一個視窗,然後滑動,每次取視窗内特征的均值、方差、最大值等統計特征。
  • 聚合統計特征:例如曆史資料中不同小時下CPU使用率的均值和方差等特征。
  • 僞穿越特征:穿越特征一般是不被允許的。那麼對于時序問題,可以建構僞穿越特征,其實也就是聚合統計特征。例如,待預測的時間點是上午9點,可以根據曆史資料構造上午10點的均值等統計特征,并且衍生出內插補點比值等特征。
    ModelArts的雪中送炭,讓我拿下CCF BDCI華為Severless工作負載預測亞軍

模型

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

下圖展示了本文所用的lstm架構,效果并不是十分理想,線上大約在第十左右。在賽後和隊友分析讨論之後,認為我們的架構存在幾個問題。首先是将每個CPU使用率當做字向量,那麼lstm中的input_dim為1,效果肯定不好。其次是我們的架構很簡單,并沒有引入卷積或者注意力機制等。

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

下面給出二等獎中另一支隊伍的lstm架構,該架構包括兩部分:

(1)LSTM提取CPU使用率、硬碟使用率的時序資訊,引入注意力機制

(2)全連接配接提取其他手工特征的資訊,進行高階交叉,并且設定跨層連接配接,構成“不同尺度的內建模型”。

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

訓練

  • 損失:由于資料波動較大,是以可以認為存在一定的離群點,是以采用smooth l1作為損失函數。
  • 算力:lightgbm模組化對算力的要求較小,16G記憶體足以。但使用上述神經網絡訓練時,由于是多标簽回歸(10個标簽),對每個标簽都需要訓練一個模型,如果再結合五折交叉驗證,那麼将訓練50個模型,這對算力就有一定的需求。

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

ModelArts使用體驗

使用感受

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

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

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

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

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

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

劃重點-如何申請

還愣着幹什麼,猛點連結,搶算力呀!!! https://bbs.huaweicloud.com/forum/thread-51080-1-1.html

 擷取更多 AI 相關資料、算法、模型等 AI 資産,請點選“了解更多”,AI Gallery等您!

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

繼續閱讀