1,摘要
儲存系統的引數調整是儲存系統優化的乙個重要方法,當前的引數調整實踐通常涉及大量的基準調整週期,耗時耗力,所以需要乙個無監督模型來進行引數調優,深度學習+增強學習可以實現這樣乙個無監督的儲存系統優化模型,小到客戶端-服務端系統,大到到資料中心,都可以使用這個模型。
2,問題
引數調優主要有四個問題:(1)由於電腦是乙個非線性系統,各種變數相互關聯,這使得改變某個引數後很難**產生的效果。(2)action和reward之間有延遲,因此很難判定系統輸入(action)和系統輸出(reward)之間的關係。(3)可調節的引數空間,範圍巨大。(4)需要24x7的工作量。
深度學習+增強學習可以解決上述問題,尤其是能夠解決action和reward之間的延遲問題,具體來說主要的解決方法是q-learning與經驗重放相結合。
capes的主要優點在於:(1)不需要預先了解目標系統。(2)它只需要對目標系統進行很少的更改,設定各項引數時所需的停機時間也很少。(3)它可以連續執行以適應工作負載的動態變化。(4)它可以動態地為靜態設定的引數選擇最優值。
3,技術背景
hyperparameter: 超參,屬於機器學習演算法裡面的引數,用來區別目標系統裡面的引數。超參主要用來調節改變機器學習演算法,也就是在機器學習訓練中,通過調超參,來改變演算法本身,超引數優化的常用方法有貝葉斯優化、隨機搜尋和基於梯度的優化。這裡與目標系統裡的引數相區別,目標系統的引數是作為狀態(state)來使用的。
q-learning: 即agent如何在環境中採取action來最大化reward, 最終通過reward來學習到q值經驗。agent對系統進行action輸入,獲得reward和observation(state)。
馬爾科夫決策過程: 由於在agent對系統進行actions後,得到的結果不一定就是**好的,即得到的結果一部分是隨機的,一部分處於agent的控制下,因此agent與環境之間的互動通常被構建為馬爾科夫決策過程。
capes: 在capes環境中,我們將目標系統視為環境,調優模組作為agent新增到環境中,agent觀察目標系統的狀態,然後對目標系統採取action,採取action之後會得到相應的獎勵和新的state。
q-learning: q(s,a) = r + γ max q(s',a') ,r代表獎勵reward。這個公式被稱為貝爾曼公式,它能夠解決信貸分配問題(也就是前面提到得action和reward之間的延遲問題),因為迭代求解這個方程不需要知道動作和獎勵之間的延遲。但是只使用q-learning的貝爾曼公式有乙個致命問題,那就是狀態空間過大的話,q-table會變得無限大,解決這個問題的辦法是通過神經網路實現q-table。輸入state,輸出不同action的q-value。神經網路通常使用非線性動作值函式逼近器來表達q-function,然而,當使用非線性函式逼近器時,強化學習是不穩定的,甚至是發散的,所以這種就要使用經驗重放來解決這個問題。
經驗重放: 強化學習由於state之間的相關性存在穩定性的問題,因為智慧型體去探索環境時採集到的樣本是乙個時間序列,樣本之間具有連續性,所以需要打破時間相關性,解決的辦法是在訓練的時候儲存當前訓練的狀態到記憶體m,更新引數的時候隨機從m中抽樣mini-batch進行更新。具體地,m中儲存的資料型別為 ,m有最大長度的限制,以保證更新採用的資料都是最近的資料。經驗重放的最終目的是防止過擬合。
4,演算法
整個儲存系統調優模型如圖所示:(1) monitor agent 用來收集performance indictors(即state)和reward,併發送到後台介面程式。(2)後台介面程式將performance indictors 和reward放入replay db,replay db中儲存的資料型別為 ,replay db的設計就是為了上述所講的經驗重放。(2)深度增強學習引擎呼叫replay db中的資料進行訓練,在固定的時間間隔中,深度增強學習引擎將action傳送到後台介面程式,然後後台介面程式將action傳送到control agent ,control agent 根據action對目標系統做出相應的改變。
演算法過程總結如下:
1.隨機初始化乙個狀態 s,初始化記憶池(replay db),設定觀察值。
2.迴圈遍歷(是永久遍歷還是只遍歷一定次數這個自己設定):
(1)根據策略選擇乙個行為(action)。
(2)執行該行動(aaction),得到獎勵(reward)、執行該行為後的狀態 s`和遊戲是否結束 done。
(3)儲存 s, a, r, s`, done 到記憶池裡。
(4)判斷記憶池裡的資料是否足夠(即:記憶池裡的資料數量是否超過設定的觀察值),如果不夠,則轉到(5)步。
① 在記憶池裡隨機抽取出一部分資料做為訓練樣本。
② 將所有訓練樣本的 s`做為神經網路的輸入值,進行批量處理,得到 s`狀態下每個行為的 q 值的表。
③ 根據公式計算出 q 值表對應的 target_q 值表。
公式:q(s, a) = r + gamma * max[q(s`, all actions)]
④ 使用 q 與 target_q 訓練神經網路。
(5)判斷遊戲(目標系統是否執行結束)是否結束。
① 遊戲結束,給 s 隨機設定乙個狀態,再執行(1),(2),(3),(4)。
① 未結束,則當前狀態 s 更新為 s`(意思就是當前的狀態變成 s`,以當前的 s`去action,得到r,得到執行該行為後的狀態 s`'和遊戲是否結束 done)。
5,具體實現過程
目標系統:lustre 檔案系統,red hat enterprise linux/centos
7, python 3.5
**編寫實現:python3
深度神經網路實現:tensorflow
replay db:sqlite
工作負載採用filebench實現
主要的難點:系統環境的搭建!!
6,實驗過程與結果分析
(1)隨機讀寫比率如下:9 : 1, 4 : 1, 1 : 1, 1 : 4, 1 : 9
我們可以看到,當寫佔據主導時,調優系統的作用比較明顯,同時可以看到,訓練24小時的效果明顯好於訓練12小時。因此,訓練需要較長時間來進行聚集,擬合。
(2),filebench檔案伺服器調優:filebench檔案伺服器是一種合成負載,用來模擬忙碌的i/o檔案負載,這種檔案負載大型資料儲存中心很常見,具體filebench模擬過程參考filebench操作。
連續寫調優:對採用連續寫的工作負載進行調節。
從實驗結果我們可以看到,對於filebench fileserver,採用12小時訓練的capes,調優效果不明顯,甚至有變差的趨勢,這是因為使用q-learning時,系統的狀態空間過大,q-learning的訓練還有沒擬合,因此需要更長的時間進行聚合,可以看到24小時的聚合效果更好,i/o生產量增長了17%。
7,總結與展望
在這個實驗中,capes能夠找到分布式儲存系統的最佳擁塞視窗大小,最佳i/o速率限制等值。相比較人工調整儲存系統引數,capes是基於無監督學習的,能夠隨時隨地自動調整,而且由於是非入侵式的,在調整時不影響系統的正常工作,結合深度學習,capes能夠在幾乎無限的引數空間中找到最佳值。因此capes能夠減少管理成本和提公升計算機效率。
雖然實驗用在了分布式儲存系統上,但實驗沒有做任何前提假設,而且capes不需要對系統有前提認知,因此capes可以用在任何儲存系統的優化上。
深度學習 1 有監督學習和無監督學習
什麼是人工智慧?人類用各種方式讓機器擁有與人類相仿的 智慧型 就是人工智慧。什麼是機器學習?機器學習就是實現人工智慧的一種方式。什麼是深度學習?深度學習就是實現機器學習的一種技術。為什麼要機器學習呢?你想啊,人類這麼聰明是為什麼,還不是因為在整個人類歷史中,人類不斷學習,所以才有現在的智慧型。既然要...
9 無監督學習simclr中的資料增強
重新評估資料增強方式是simclr取得成功的關鍵之一,之前的文章設計了一系列複製的資料增強,我們發現只需要隨機裁剪就夠了 如圖3所示,它建立了一系列包含上述兩個任務的 性任務。資料增強操作的組成對於學習良好的表示形式至關重要 為了系統地研究資料擴充的影響,我們在這裡考慮幾種常見的擴充。一類擴充涉及資...
機器學習7 模型儲存 無監督學習
def linear3 嶺回歸的優化方法對波士頓房價 獲取資料 boston load boston 劃分資料集 x train,x test,y train,y test train test split boston.data,boston.target,random state 22 標準化 ...