NSDI'17-論文閱讀[CherryPick:Adaptively Unearthing the Best Cloud Configurations for Big Data Analytics]

CherryPick是在剛過去的NSDI2017上發表的一篇文章。很欣喜地看到頂會論文作者上出現了阿里的身影。雖然不知道阿里在裏面是什麼角色……不過相對於只能看到微軟或者谷歌的好多了

這兩年,不管是NSDI,還是OSDI,都有關於資源推薦預測的論文,可以看出這塊現在關注度還挺高的。上次去參加的技術沙龍,和一家國內雲廠商經理聊天,他們的下一步也是要做資源預測來輔助調度。

那我們來一起看看這篇論文是怎麼做的。首先描述一下CherryPick解決的問題的場景:

    你需要在公有云上運行一個大數據相關批處理任務。這時候你來到阿里雲界面上,準備買幾臺虛擬機。但是玲琅滿目的可選虛擬機的配置,讓你不知道應該選哪種配置好。如果買最高的配置吧,費用又太高了(畢竟阿里雲也不便宜)。如果買低配吧,可能程序運行的時間又會太慢了。這時候,就可以用CherryPick了。你輸入你的預算花費、能夠接受的程序運行時間,CherryPick就能給你推薦一個花費少、時間短的機器配置。waoooo,amazing~

從上面的場景描述可以看出,CherryPick用於最佳公有云機器配置推薦,也可以理解爲對任務的運行時間估計,也可以理解爲對任務所需資源的估計。下面我們詳細看看CherryPick的設計。

一、背景介紹

在如今呢,是越來越多的大數據分析在雲端運行,比如說有Map-Reduce、深度學習等等。這些應用在提交時,需要選擇所需的機器配置。但是一般數據科學家們並不知道如果選擇機器配置。據統計,在同樣的運行時間下,不同的機器配置所需的花費,最多相差了12倍。因此一個自動的預測推薦功能是有存在的價值的。

敲黑板啊:CherryPick的面向的場景是對於週期性的重複性作業進行推薦。因爲CherryPick會進行多次運行迭代逼近較優方案,因此需要任務本身會週期運行。同時據統計40%的作業都是週期性重複作業,所以只做重複性作業也是有價值的。

二、預測難點及現有方案

難點

預測並不是一件簡單的事情,其中存在很多難點。
1.性能模型畢竟複雜
任務的運行時間並不是和資源配置呈線性相關的。同時,在公有云環境下,多租戶之間的競爭,也導致了運行時間不是固定的。
2.費用模型
費用和性能一般來說是相互衝突的,性能越高,運行時間越短,費用花費可能就越高,當然不是絕對的。因此需要在花費和性能之間做一個平衡。
3.任務類型的多樣
Job種類比較多,有計算密集型的、IO密集型等等,不同的配置,對任務產生的效果是不一樣的。

這裏寫圖片描述

任務的運行時間其實還和計算模型本身的設置有關,比如說Map-Reduce任務可以自己設置要多少個map和reduce數量。已經有其他研究做了,因此本文不考慮這個因素,只考慮機器配置

現有工作

現在的解決方案主要分爲兩種類型。
1.通過構建任務模型來預測
通過對Job本身結構的分析,來對其結構上建模。現在還挺多工作是按照這個方法來的,比如說Ernest(NSDI’16),就將所有類型的任務分成了幾種模型(一對多,多對多等等),然後求出一個整體模型來進行預測。本文的作者也說了,這種方法存在弊端,並不是通用的模型(如SQL like情況下Ernest效果比較差)。同時呢,也需要對任務本身的結構進行深入分析,如果分析的不好的話,建模也建不好,不太穩定。
2.靜態查找最佳的配置
這種方法就是直接試不同的配置會有什麼樣的效果。這樣的方法就是需要試很多種不同的配置,對系統的負載會很大,花的時間會比較長。但是這種的好處就是把Job當黑盒來處理,不用深入研究Job本身的特性。

CherryPick就是基於第二種方法,但是有一定的改進。

三、CherryPick設計

CherryPick的基本思想並不是直接選到最優的配置,是從一堆候選的配置中,每次選擇比較優的配置,不斷逼近最佳配置或接近最佳位置。
相對於上面提到的“現有工作“中的第二種,CherryPick並不是傻瓜式地依次去測試哪種配置好, 而是有選擇性地選擇新的配置,更加快速地逼近最優解。
這裏寫圖片描述

整體運行流程如上圖所示。

1.先運行一種配置看看效果
2.讓性能模型觀察這次的運行,來修正性能模型
3.根據性能模型,選出一個新配置
4.重複第一步,直到滿意爲止

那CherryPick依據什麼來每次選擇每輪中的最優配置呢?核心就是CherryPick的性能模型[performance model]。整片論文的核心就是如何建立這個性能模型,以及如何通過性能模型來選擇下一輪需要測試的配置。

那我們現在來講講這個核心是如何設計的。重點來啦(敲黑板,後排的李二狗不要睡了)

Performance Model

A.問題形式化

我們規定,X爲一種配置(如2G內存,2核),C(X)爲在X配置下所需要花費的總費用;P(X)爲單位時間下X配置的價格;T(X)爲在X配置下,該Job的運行總時間。因此很原始的費用模型就出來了:總價=單價*數量,對應到這裏,目標是最小化總花費,即

> minimize           C(x) = T(x)* P(x) -----    公式 1
  subject to          T(x)<ExpectTime

因此我們的目標就是最小化C(x)。那問題來了,怎麼去降低C(x)呢。

這裏,就用到了機器學習的方法了。既然C(x)由於各種因素,比較隨機,那就直接按照隨機過程來處理,這裏用的是高斯過程模型。至於爲什麼選高斯過程,後面作者有詳細說明。

從上面的流程圖可以看出,中間的性能模型,整體是用的Bayesian Optimization(貝葉斯優化,BO)。在每次計算中,首先選擇一個配置,比如說配置A。貝葉斯優化可以通過配置A的運行情況,計算出總花費的一個置信區間,如有90%的可能性價格是落在在20元-30元的區間。然後再根據這次的結果,在下一輪計算中,選擇一個新的配置B,通過在配置B的運行下,BO又算出一個置信區間,這次結果是90%可能性落在20-25之間。就這樣不斷不斷降低時間,選擇配置,最後得到一個最優或接近最優的配置。


在文章的最後回答這幾個問題

  1. 研究問題是什麼?爲什麼這是個有意義的問題?爲什麼這是個有挑戰性的問題? 爲什麼已有工作在這個研究問題上不足?在哪方面、哪種情況下不足?
  2. 爲什麼提出的新方法能有效地解決該研究問題?究竟是什麼內涵使得這種新方法區別與已有的工作?表現在哪裏?
  3. 新方法是怎麼運作的?它有什麼假設?爲什麼這些假設可行? 新方法的可用性與有效性如何?它的使用場景和條件是什麼?是否適用於實用場景?
  4. 新方法是如何與已有工作進行比較的?這樣的比較是否有效?是否有隱藏的正確性威脅因素?
  5. 新方法是否有什麼不足?在什麼情況下會表現出來?是否有改進的可能?爲什麼及如何做?

電腦沒電了…… Updating

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章