Facebook利用人工智能調(diào)整網(wǎng)絡服務器性能
機器學習近年來已被用于調(diào)整機器學習本身的性能,那么為什么不用機器學習來提高網(wǎng)絡服務器的性能呢?
Facebook的研究人員就是這樣做的,他們近日發(fā)表了有關用機器學習調(diào)整運行在社交網(wǎng)絡服務器基礎設施上的服務器設置的文章。
Benjamin Letham、Brian Karrer、Guilherme Ottoni和Eytan Bakshy的文章發(fā)表在_Bayesian Analysis_期刊上,作者還在Facebook的人工智能研究博客上發(fā)了博文。
Facebook與所有互聯(lián)網(wǎng)服務一樣也運行所謂的A/ B測試,目的是評估服務器在各個變量發(fā)生變化時的運行情況。有些人調(diào)整過不同版本的網(wǎng)頁,例如改變按鈕的外觀或文本的布局,他們就知道,調(diào)整(例如在一個商業(yè)網(wǎng)站上的調(diào)整)可以優(yōu)化諸如點擊率或購物車使用之類的東西。
Facebook的科學家在這項研究中研究了實時生產(chǎn)系統(tǒng)(JIT:Just- in-time)編譯器選項的改變對性能的影響,編譯器將Python轉(zhuǎn)換為Facebook用于提供HTTP請求的開源Web服務器內(nèi)的本機x86服務器代碼,即“HipHop虛擬機”。
例如,可以將JIT設置為執(zhí)行給定代碼塊的內(nèi)嵌之類的操作。這樣的調(diào)整會令代碼更大些,因此需要進行A / B測試,原因是更大的代碼會消耗更多的服務器內(nèi)存,因而有必要確定是否值得這樣做。
文章的作者用了名為“貝葉斯分析”的方法,貝葉斯分析是一種機器學習算法,基本思想是強調(diào)使用過去或先前的信息來確定最佳解決方案。貝葉斯分析在過去十年里被廣泛用來優(yōu)化“超參數(shù)”機器學習,例如用來確定批量的大小或?qū)W習速度參數(shù)的大小。由于貝葉斯優(yōu)化可以代替人手做超參數(shù)設計的苦差事,有人將用了貝葉斯優(yōu)化的機器學習稱為“自動化”機器學習。
文章的作者在使用JIT編譯器的設置運行A / B測試時在各種不同的地方用了貝葉斯。這樣做最大的好處是速度。由于必須在生產(chǎn)環(huán)境中進行測試以觀察不同設置的影響,因此希望能夠快速完成測試,以便將更改進一步用于網(wǎng)絡服務器。
作者在文章里表示,典型的A / B測試是在每一次只測試一個配置的改變,而貝葉斯優(yōu)化則“允許我們用更少的測試共同調(diào)整更多的參數(shù)并找到更好的值。”
這里的關鍵是“共同”這個詞:貝葉斯機制可以從給定的A / B測試推斷出其他參數(shù),以縮小“可行的“配置,因而無需進行相應的實際A / B測試就能排除某些配置選擇。作者用了廣泛搜索能力的字眼,稱“連續(xù)空間里參數(shù)值的測試不僅為我們提供了關于這些參數(shù)結(jié)果的信息,而且還提供了關于附近點的信息。” 貝葉斯模型可以從前期測試結(jié)果中獲得了新的經(jīng)驗數(shù)據(jù),這些經(jīng)驗數(shù)據(jù)又可以用于進一步縮小搜索潛在最優(yōu)配置的范圍,因此整個A / B測試逐步地就越來越高效了。
Facebook這項貝葉斯優(yōu)化研究的新貢獻是處理噪聲。作者指出,在A / B實驗中測試服務器設置與優(yōu)化機器學習網(wǎng)絡不同,這時的測試結(jié)果和測量均存在很多噪音,在現(xiàn)實世界中,設置的變化對服務器性能的影響可以是各種各樣的,而且還存在“噪聲”約束,例如服務器內(nèi)存的使用需要在合理的范圍之內(nèi)。文章的作者提出了在貝葉斯算法中解決這種噪聲的方法,他們得出的結(jié)論是,用新方法比用其他類型的貝葉斯方法更容易得到最優(yōu)解。
用了此方法的A / B測試方法存在一個有趣的小問題,有些配置從不會被用到:因為貝葉斯優(yōu)化分析的預測完全排除了那些配置,相應的變量已在測試中被移除。文章的作者則認為這是個好處,可以減少用戶進行大量不同實驗的煩惱。