Facebook开源Horizon:首个用于大规模产品和服务的强化学习平台
Horizon是首個(gè)使用應(yīng)用強(qiáng)化學(xué)習(xí)(RL)在大規(guī)模生產(chǎn)環(huán)境中優(yōu)化系統(tǒng)的端到端開源平臺(tái)。
這個(gè)版本中包含的工作流和算法是以開放框架為基礎(chǔ)構(gòu)建的——PyTorch 1.0、Caffe2和Spark——使得任何大規(guī)模使用RL的人都可以使用Horizon。
在過去的一年里,我們內(nèi)部已經(jīng)在多個(gè)應(yīng)用程序中開使用了Horizon,包括幫助定制M建議、發(fā)送更有意義的通知以及優(yōu)化流媒體視頻質(zhì)量。
今天,我們開源了Horizon,一個(gè)端到端的應(yīng)用強(qiáng)化學(xué)習(xí)平臺(tái),使用RL來(lái)優(yōu)化數(shù)十億人使用的產(chǎn)品和服務(wù)。我們開發(fā)這個(gè)平臺(tái)是為了彌補(bǔ)RL在研究領(lǐng)域日益增長(zhǎng)的影響力和在生產(chǎn)領(lǐng)域歷來(lái)狹窄的應(yīng)用范圍之間的差距。過去一年,我們?cè)贔acebook部署了Horizon,提高了該平臺(tái)把RL基于決策的方法運(yùn)用到大規(guī)模應(yīng)用程序的能力。雖然人們都在開發(fā)增強(qiáng)學(xué)習(xí)應(yīng)用程序,但Horizon是第一個(gè)用于生產(chǎn)的開源RL平臺(tái)。
雖然我們正在進(jìn)行各種強(qiáng)化學(xué)習(xí)項(xiàng)目,這些項(xiàng)目使用反饋來(lái)提高性能,但是,Horizon主要關(guān)注的是將RL應(yīng)用于大型系統(tǒng)。這個(gè)版本包括模擬環(huán)境的工作流以及用于預(yù)處理、訓(xùn)練和導(dǎo)出生產(chǎn)環(huán)境模型的分布式平臺(tái)。該平臺(tái)已經(jīng)為Facebook帶來(lái)了性能優(yōu)勢(shì),包括發(fā)送更相關(guān)的通知、優(yōu)化流媒體視頻比特率以及改進(jìn)Messenger中的M建議。但是,Horizon的開放設(shè)計(jì)和工具集也有可能讓該領(lǐng)域的其他人受益,特別是那些有興趣使用應(yīng)用RL從大量信息中學(xué)習(xí)策略的公司和研究團(tuán)隊(duì)。Horizon不僅僅證明了我們?cè)赗L領(lǐng)域的持續(xù)投入,也證明了這個(gè)有前途的人工智能研究領(lǐng)域現(xiàn)在可以運(yùn)用到實(shí)際的應(yīng)用程序中。
大規(guī)模決策:Horizon如何把RL運(yùn)用到生產(chǎn)環(huán)境
機(jī)器學(xué)習(xí)(ML)系統(tǒng)通常會(huì)生成預(yù)測(cè),但隨后需要工程師將這些預(yù)測(cè)轉(zhuǎn)換為策略(即行動(dòng)策略)。另一方面,RL創(chuàng)建的系統(tǒng)能夠做出決策、采取行動(dòng),然后根據(jù)反饋進(jìn)行調(diào)整。這種方法有可能優(yōu)化一組決策,而不需要手工制定策略。例如,RL系統(tǒng)可以根據(jù)其他ML系統(tǒng)的估計(jì)和視頻緩沖區(qū)的狀態(tài),直接為特定播放中的視頻選擇高比特率或低比特率。
雖然RL的策略優(yōu)化能力在研究中顯示出了良好的效果,但人工智能社區(qū)很難使用這些模型處理生產(chǎn)環(huán)境中有很大差別的實(shí)際需求。借助Horizon,我們關(guān)注的是如何將兩種完全不同類型的應(yīng)用連接起來(lái):復(fù)雜但終究有限的研究用模擬器環(huán)境;基于ML的策略優(yōu)化系統(tǒng),依賴于存在固有噪聲的、稀疏的、任意分布的數(shù)據(jù)。與游戲中基于RL的機(jī)器人可以對(duì)一組有限且可預(yù)見、可重復(fù)的規(guī)則做出反應(yīng)不同,現(xiàn)實(shí)場(chǎng)景很難模仿,反饋更難以納入已部署代碼,與在可控的實(shí)驗(yàn)環(huán)境中相比,任何修改通常都需要更加小心。
就像深度學(xué)習(xí)徹底改變了神經(jīng)網(wǎng)絡(luò)的應(yīng)用那樣,像Horizon這樣的項(xiàng)目有可能將定義科學(xué)家和工程師如何將RL應(yīng)用到生產(chǎn)環(huán)境中,使用策略優(yōu)化來(lái)產(chǎn)生影響。特別地,Horizon考慮了特定于生產(chǎn)環(huán)境的問題,包括特征規(guī)范化、分布式訓(xùn)練、大規(guī)模部署和服務(wù)、具有數(shù)千種不同特征類型和分布的數(shù)據(jù)集,以及高維離散的連續(xù)動(dòng)作空間。
Horizon的管道包括三個(gè)組件:
(1)時(shí)間軸生成,運(yùn)行在數(shù)千個(gè)CPU上;
(2)訓(xùn)練,跨多個(gè)GPU;
(3)服務(wù),這也跨越了數(shù)千臺(tái)機(jī)器。
這個(gè)管道允許Horizon擴(kuò)展到Facebook的數(shù)據(jù)集。對(duì)于策略學(xué)習(xí)(例如使用OpenAI Gym), Horizon可以選擇在一個(gè)閉環(huán)中將數(shù)據(jù)直接提供給訓(xùn)練過程。
Horizon還解決了大規(guī)模構(gòu)建和部署RL系統(tǒng)所帶來(lái)的獨(dú)特挑戰(zhàn)。RL通常以在線方式訓(xùn)練,系統(tǒng)從隨機(jī)選擇動(dòng)作開始,然后實(shí)時(shí)更新。考慮到這些系統(tǒng)在Facebook的規(guī)模和影響,這種隨機(jī)性和實(shí)時(shí)更新目前還不是一個(gè)選項(xiàng)。相反,我們的模型是從在一個(gè)產(chǎn)品工程師設(shè)計(jì)的策略上訓(xùn)練開始的。這些模型必須離線訓(xùn)練,使用off-policy方法和反事實(shí)策略評(píng)估(CPE)來(lái)估計(jì)RL模型在過去的決策中會(huì)做什么。一旦CPE結(jié)果被接受,我們將在一個(gè)小實(shí)驗(yàn)中部署RL模型,收集結(jié)果信息。有趣的是,我們發(fā)現(xiàn),與之前相對(duì)穩(wěn)定的系統(tǒng)不同,RL系統(tǒng)會(huì)隨著時(shí)間的推移不斷學(xué)習(xí)和改進(jìn)。
行業(yè)數(shù)據(jù)集通常包含數(shù)十億條記錄,以及數(shù)千個(gè)具有任意分布和高維離散連續(xù)動(dòng)作空間的狀態(tài)特征。通過研究和觀察,我們發(fā)現(xiàn),與傳統(tǒng)的深度網(wǎng)絡(luò)相比,應(yīng)用RL模型對(duì)噪聲和非規(guī)范化數(shù)據(jù)更敏感。Horizon使用Apache Spark并行對(duì)這些狀態(tài)和動(dòng)作特征進(jìn)行預(yù)處理,我們的Spark管道也包含在開源版本中。在對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)處理之后,我們使用基于PyTorch的算法在圖形處理單元上進(jìn)行規(guī)范化和訓(xùn)練。
雖然Horizon可以在單個(gè)GPU或CPU上運(yùn)行,但該平臺(tái)的設(shè)計(jì)側(cè)重于大型集群,一次在多個(gè)GPU上進(jìn)行分布式訓(xùn)練,使工程師可以使用數(shù)百萬(wàn)個(gè)樣本來(lái)解決問題,并更快地迭代他們的模型。我們?cè)赑yTorch中使用數(shù)據(jù)并行和分布式數(shù)據(jù)并行功能進(jìn)行分布式訓(xùn)練。該版本包括深度Q網(wǎng)絡(luò)(DQN)、參數(shù)化DQN和深度確定性策略梯度(DDPG)模型。在訓(xùn)練過程中,我們還運(yùn)行CPE,并將評(píng)估結(jié)果記錄到TensorBoard上。訓(xùn)練完成后,Horizon將使用ONNX導(dǎo)出這些模型,以實(shí)現(xiàn)大規(guī)模地高效服務(wù)。
在許多RL領(lǐng)域中,你可以通過嘗試來(lái)度量模型的性能。在Facebook,我們希望確保在大規(guī)模部署模型之前對(duì)它們進(jìn)行徹底地測(cè)試。由于Horizon解決了策略優(yōu)化任務(wù),訓(xùn)練工作流還自動(dòng)運(yùn)行了幾種最先進(jìn)的策略評(píng)估技術(shù),包括時(shí)序雙魯棒性策略評(píng)估和MAGIC。生成的策略評(píng)估報(bào)告從訓(xùn)練流中導(dǎo)出,可以使用TensorBoard進(jìn)行觀察。評(píng)估可以與異常檢測(cè)相結(jié)合,在將策略公開部署之前,如果模型再次迭代的性能與前一個(gè)迭代相比有很大的差別,就會(huì)自動(dòng)向工程師發(fā)出警報(bào)。
在工作中學(xué)習(xí):Horizon對(duì)Messenger、360視頻等的影響
自從我們開始在內(nèi)部使用Horizon以來(lái),該平臺(tái)已經(jīng)示范了RL如何利用即時(shí)反饋來(lái)做出提高性能的決策,從而對(duì)生產(chǎn)應(yīng)用程序產(chǎn)生影響。
例如,Horizon使我們可以通過實(shí)時(shí)優(yōu)化比特率參數(shù)來(lái)提高Facebook上360視頻的圖像質(zhì)量。該平臺(tái)既考慮了可用帶寬的數(shù)量,也考慮了已緩沖視頻的數(shù)量,以確定是否有可能轉(zhuǎn)換到更高質(zhì)量的視頻。這個(gè)過程利用了RL隨時(shí)產(chǎn)生獎(jiǎng)勵(lì)的能力,使用新的無(wú)監(jiān)督數(shù)據(jù)——它在給定的視頻正在播放時(shí)工作,而不是事后再分析性能和仔細(xì)標(biāo)注的數(shù)據(jù)。
反事實(shí)策略評(píng)估為在離線環(huán)境中部署RL模型的工程師提供了見解。這個(gè)圖比較了幾種CPE方法和日志策略(最初生成訓(xùn)練數(shù)據(jù)的系統(tǒng))。得分1.0意味著RL和日志策略在性能上是匹配的。這些結(jié)果表明,RL模型的累積獎(jiǎng)勵(lì)大約是日志系統(tǒng)的兩倍。
這個(gè)高級(jí)圖表說明了Horizon的反饋循環(huán)。首先,我們對(duì)現(xiàn)有系統(tǒng)記錄的一些數(shù)據(jù)進(jìn)行預(yù)處理。然后,我們訓(xùn)練一個(gè)模型并分析離線環(huán)境下的反事實(shí)策略結(jié)果。最后,我們將模型部署到一組人員中,并度量真正的策略。來(lái)自新模型的數(shù)據(jù)反饋到下一次迭代中,大多數(shù)團(tuán)隊(duì)每天都部署一個(gè)新模型。
Horizon還過濾了Messenger中智能助手M的建議。M在人們的開放式對(duì)話中提供相關(guān)內(nèi)容的建議,豐富人們的交流方式,在Messenger中完成工作。Horizon使用RL——比基于規(guī)則的對(duì)話學(xué)習(xí)策略方法更具可擴(kuò)展性、前瞻性、更能響應(yīng)用戶的反饋——幫助M逐步學(xué)習(xí)。例如,如果人們更有規(guī)律地與一個(gè)建議交互,M可能會(huì)更多地提供這個(gè)建議。在Horizon的幫助下,M變得更加智能化和高度個(gè)性化,因?yàn)樗刻於寄軒椭鷶?shù)百萬(wàn)人進(jìn)行交流。
該平臺(tái)還改進(jìn)了我們使用人工智能的方式,幫助我們決定向用戶發(fā)送哪些Facebook通知,以及多久發(fā)送一次。在過去,我們不是發(fā)送所有可能的通知(說明有新帖子、評(píng)論等),而是使用ML模型來(lái)幫助預(yù)測(cè)哪些可能最有意義或最相關(guān),并過濾掉其他的。但這些模型依賴于監(jiān)督學(xué)習(xí),沒有考慮到發(fā)送通知的長(zhǎng)期價(jià)值。例如,每天多次訪問該平臺(tái)的人可能不需要系統(tǒng)為他們本來(lái)會(huì)看到的帖子發(fā)出通知,而不太活躍的人可能會(huì)從通知中受益,這可以確保他們不會(huì)錯(cuò)過家人和朋友發(fā)表的值得關(guān)注的帖子。
為了更好地處理這些長(zhǎng)期信號(hào)——并使通知按照預(yù)期工作,為平臺(tái)上的所有人提供價(jià)值——我們使用Horizon訓(xùn)練了一個(gè)離散動(dòng)作DQN模型,用于發(fā)送推送通知。當(dāng)某人參與了他們可能會(huì)錯(cuò)過的帖子時(shí),這個(gè)模型會(huì)收到獎(jiǎng)勵(lì),而發(fā)送通知?jiǎng)t會(huì)受到懲罰。RL模型僅在對(duì)用戶的價(jià)值(例如,讓他們注意到好友或家人發(fā)布的值得關(guān)注的帖子)高于懲罰值(在他們的設(shè)備上彈出額外的警告)時(shí)才允許通知。該模型還定期更新大量的狀態(tài)轉(zhuǎn)換,使其能夠逐步改進(jìn),并最終調(diào)整通知的數(shù)量。自從我們將以前的基于監(jiān)督學(xué)習(xí)的系統(tǒng)替換為基于Horizon的版本之后,我們觀察到,通知的相關(guān)性得到了改善,而發(fā)送通知的總數(shù)沒有增加。與通過點(diǎn)擊或單擊通知來(lái)定義相關(guān)性不同,我們可以更廣泛、更深入地查看信息以確保它們提供了真正的好處。
使任何人都可以在生產(chǎn)環(huán)境中部署RL的工具
這些好處突顯了RL能為行業(yè)提供的東西,即能夠直接從以前的次優(yōu)策略下收集樣本,并從中學(xué)習(xí)最優(yōu)策略。盡管我們已經(jīng)確定了非常適合RL的具體場(chǎng)景和應(yīng)用程序,但這僅僅是激動(dòng)人心的旅程的開始。鑒于人工智能社區(qū)的集體才華和創(chuàng)造力,我們迫不及待地想看到Horizon所激發(fā)的創(chuàng)意、功能和產(chǎn)品。
任何使用機(jī)器學(xué)習(xí)來(lái)做決定的人都可以試試Horizon。第一步是記錄傾向(采取行動(dòng)的概率)和備選方案(其他可能的行動(dòng))。Horizon使用傾向性和備選方案來(lái)了解何時(shí)可以采取更好的行動(dòng)。第二步,定義并記錄獎(jiǎng)勵(lì)(采取行動(dòng)所獲得的價(jià)值)。在收集到這些數(shù)據(jù)之后,就可以運(yùn)行Horizon的訓(xùn)練循環(huán),導(dǎo)出一個(gè)能夠做出新決策并最大化總回報(bào)的模型。
Horizon是我們致力于AI開放開發(fā)的一部分——它是Facebook的內(nèi)部平臺(tái),我們現(xiàn)在正在開放源代碼,它使用的工具我們已經(jīng)提供給社區(qū),包括PyTorch 1.0和Caffe2。雖然Horizon已經(jīng)針對(duì)在生產(chǎn)環(huán)境應(yīng)用進(jìn)行了優(yōu)化,但我們使用該平臺(tái)的經(jīng)驗(yàn)也揭示了與RL集成到其他系統(tǒng)相關(guān)的重要研究。我們正利用Horizon平臺(tái)探索基于模型的RL和“獎(jiǎng)勵(lì)塑造(reward shaping)”的新技術(shù),并利用該平臺(tái)在Facebook更廣泛地挖掘其他應(yīng)用,比如數(shù)據(jù)中心資源分配和視頻推薦。我們還計(jì)劃添加更多的模型和工作流,以幫助其他人將RL的長(zhǎng)期承諾轉(zhuǎn)化為即時(shí)行動(dòng)。
有關(guān)詳細(xì)信息,請(qǐng)閱讀關(guān)于Horizon開發(fā)和內(nèi)部用例的完整白皮書:https://arxiv.org/abs/1811.00260
除了對(duì)新應(yīng)用程序產(chǎn)生影響外,Horizon還可以改變工程師和ML模型協(xié)同工作的方式。不再通過編寫難以理解和維護(hù)的規(guī)則來(lái)驅(qū)動(dòng)模型,我們?cè)O(shè)想,在工程師和他們使用的模型之間有一個(gè)雙向?qū)υ?#xff0c;工程師可以指定他們的高層目標(biāo),并與機(jī)器學(xué)習(xí)協(xié)同實(shí)現(xiàn)這些目標(biāo),把它們應(yīng)用到一個(gè)不斷變化的決策環(huán)境中。Horizon是這個(gè)旅程的第一步,我們邀請(qǐng)您復(fù)制我們的GitHub庫(kù)并進(jìn)行試用。
查看英文原文:
https://code.fb.com/ml-applications/horizon/
總結(jié)
以上是生活随笔為你收集整理的Facebook开源Horizon:首个用于大规模产品和服务的强化学习平台的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET CORE 之 在IIS上
- 下一篇: 绝地求生98k爆头技巧(《绝地求生》将于