自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spiral在Facebook通過實(shí)時(shí)機(jī)器學(xué)習(xí)自動(dòng)調(diào)節(jié)服務(wù)

譯文
開發(fā) 后端 機(jī)器學(xué)習(xí)
為了更有效地優(yōu)化眾多服務(wù),可以靈活地適應(yīng)不斷變化、相互聯(lián)系的內(nèi)部服務(wù),我們開發(fā)了Spiral。Spiral這種系統(tǒng)充分利用實(shí)時(shí)機(jī)器學(xué)習(xí)的技術(shù),在Facebook這等規(guī)模的環(huán)境下自動(dòng)調(diào)節(jié)高性能的基礎(chǔ)設(shè)施服務(wù)。由于用Spiral取代了手工調(diào)節(jié)的啟發(fā)法,我們可以在短短幾分鐘內(nèi)而不是幾周內(nèi)優(yōu)化更新后的服務(wù)。

【51CTO.com快譯】對于使用Facebook的數(shù)十億人來說,我們的服務(wù)可能看起來就像一個(gè)統(tǒng)一的移動(dòng)應(yīng)用系統(tǒng)或網(wǎng)站。從公司內(nèi)部來看,情況卻不一樣。Facebook使用成千上萬的服務(wù)構(gòu)建而成,從均衡互聯(lián)網(wǎng)流量、對圖像進(jìn)行轉(zhuǎn)碼處理到提供可靠的存儲,功能不一而足。Facebook作為整體的效率在于結(jié)合了各項(xiàng)服務(wù)的效率,每項(xiàng)服務(wù)通常都以自己的方式加以優(yōu)化,采用的方法可能很難推廣開來或適應(yīng)快節(jié)奏的變化。

為了更有效地優(yōu)化眾多服務(wù),可以靈活地適應(yīng)不斷變化、相互聯(lián)系的內(nèi)部服務(wù),我們開發(fā)了Spiral。Spiral這種系統(tǒng)充分利用實(shí)時(shí)機(jī)器學(xué)習(xí)的技術(shù),在Facebook這等規(guī)模的環(huán)境下自動(dòng)調(diào)節(jié)高性能的基礎(chǔ)設(shè)施服務(wù)。由于用Spiral取代了手工調(diào)節(jié)的啟發(fā)法,我們可以在短短幾分鐘內(nèi)而不是幾周內(nèi)優(yōu)化更新后的服務(wù)。

應(yīng)對規(guī)模挑戰(zhàn)的新方法

在Facebook,變化的步伐很快。Facebook代碼庫每隔幾個(gè)小時(shí)被推送到生產(chǎn)環(huán)境――比如前端的新版本,這是我們持續(xù)部署過程的一部分。當(dāng)下變化萬千,試圖手動(dòng)微調(diào)服務(wù)以保持峰值效率不切實(shí)際。手動(dòng)重寫緩存/許可/驅(qū)逐(caching/admission/eviction)策略及其他手動(dòng)調(diào)節(jié)的啟發(fā)法實(shí)在太難了。我們必須從根本上改變原有的軟件維護(hù)觀念。

為了有效地克服這個(gè)難題,系統(tǒng)需要變成自動(dòng)調(diào)節(jié),而不是依賴手動(dòng)硬編碼的啟發(fā)法和參數(shù)。這種轉(zhuǎn)變促使Facebook的工程師們以新的眼光看待工作:工程師們現(xiàn)在不再查看系統(tǒng)生成的圖表和日志以驗(yàn)證正確高效的運(yùn)行,而是用代碼表達(dá)系統(tǒng)怎樣才算正確高效地運(yùn)行。今天,我們的工程師通過編程實(shí)現(xiàn)向自我調(diào)節(jié)系統(tǒng)提供反饋的方法,而不是指定如何計(jì)算請求的正確響應(yīng)。

傳統(tǒng)的緩存策略看起來像是帶有分支的樹,考慮到了對象的大小、類型及其他元數(shù)據(jù),從而決定要不要緩存它。自動(dòng)調(diào)節(jié)緩存將以不同的方式來實(shí)現(xiàn)。這種系統(tǒng)可以檢查某對象的訪問歷史記錄:如果之前從未訪問過該對象,緩存它可能是個(gè)壞主意。在機(jī)器學(xué)習(xí)語言中,使用元數(shù)據(jù)(特征)和相關(guān)反饋(標(biāo)簽)來區(qū)分對象的系統(tǒng)將是“分類器”(classifier)。該分類器將用于針對進(jìn)入緩存的對象做出決策,系統(tǒng)將持續(xù)被重新訓(xùn)練。這種持續(xù)的重新訓(xùn)練讓系統(tǒng)得以在即使環(huán)境發(fā)生了變化也能保持時(shí)效性。

從概念上來講,這種方法類似聲明性編程。SQL就是這種方法的一個(gè)典型案例:工程師不用指定如何計(jì)算復(fù)雜查詢的結(jié)果,只要指定需要計(jì)算的內(nèi)容,然后引擎就會(huì)找出最佳查詢并執(zhí)行查詢。

對系統(tǒng)使用聲明性編程的挑戰(zhàn)在于,確保正確完整地指定目標(biāo)。與上述的自動(dòng)調(diào)節(jié)圖像緩存策略一樣,如果什么對象應(yīng)該緩存、什么不應(yīng)緩存方面的反饋不準(zhǔn)確或不完整,系統(tǒng)會(huì)很快學(xué)會(huì)提供不正確的緩存決策,這會(huì)降低性能。

幾位谷歌工程師撰寫的這篇論文(https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43146.pdf)詳細(xì)介紹了這個(gè)問題以及與使用閉環(huán)機(jī)器學(xué)習(xí)有關(guān)的其他問題。根據(jù)我們的經(jīng)驗(yàn),精準(zhǔn)定義自動(dòng)調(diào)節(jié)所需的結(jié)果是入手Spiral方面最棘手的部分之一。然而我們還發(fā)現(xiàn),幾次迭代之后,工程師往往在清晰正確的定義上觀點(diǎn)一致。

Spiral:易于集成和實(shí)時(shí)預(yù)測

為了讓Facebook的系統(tǒng)工程師能夠跟上越來越快的變化步伐,F(xiàn)acebook波士頓辦事處的工程師們構(gòu)建了Spiral,這是一個(gè)小巧的嵌入式C++庫,依賴項(xiàng)極少。Spiral使用機(jī)器學(xué)習(xí)為資源受限的實(shí)時(shí)服務(wù)創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)的反應(yīng)式啟發(fā)法。與手工編碼的替代方法相比,該系統(tǒng)大大加快了開發(fā)和自動(dòng)維護(hù)這些服務(wù)的速度。

與Spiral集成包括只需為代碼添加兩個(gè)調(diào)用點(diǎn)(call site):一個(gè)用于預(yù)測,一個(gè)用于反饋。預(yù)測調(diào)用點(diǎn)是用于做出決策的智能啟發(fā)法的輸出,比如“應(yīng)該許可該條目進(jìn)入緩存嗎?”預(yù)測調(diào)用作為快速本地計(jì)算來實(shí)現(xiàn),旨在針對每個(gè)決策來執(zhí)行。 

Spiral在Facebook通過實(shí)時(shí)機(jī)器學(xué)習(xí)自動(dòng)調(diào)節(jié)服務(wù)

圖1

反饋調(diào)用點(diǎn)用于提供偶爾的反饋,比如“該條目因根本未命中而失效退出緩存,所以我們可能不應(yīng)該緩存這樣的條目。”

Spiral在Facebook通過實(shí)時(shí)機(jī)器學(xué)習(xí)自動(dòng)調(diào)節(jié)服務(wù) 

圖2

庫可以在完全嵌入的模式下運(yùn)行,或者可以向Spiral后端服務(wù)發(fā)送反饋和統(tǒng)計(jì)數(shù)字,該后端服務(wù)可顯示用于調(diào)試的實(shí)用信息,將數(shù)據(jù)記錄到長期存儲供以后分析,以及執(zhí)行訓(xùn)練和選擇模型方面的繁重任務(wù),這些模型在嵌入模式下訓(xùn)練起來太耗費(fèi)資源,但運(yùn)行起來并不太耗費(fèi)資源。 

Spiral在Facebook通過實(shí)時(shí)機(jī)器學(xué)習(xí)自動(dòng)調(diào)節(jié)服務(wù)

圖3

發(fā)送到服務(wù)器的數(shù)據(jù)采用反偏差采樣,避免類別不平衡偏差滲入到樣本中。比如說,如果一段時(shí)間內(nèi)我們收到的負(fù)樣本比正樣本多1000倍,我們只要將1000個(gè)負(fù)樣本中的1個(gè)記錄到服務(wù)器,同時(shí)表示它的權(quán)重為1000。服務(wù)器深入了解數(shù)據(jù)的全局分布,通常帶來比任何一個(gè)節(jié)點(diǎn)的本地模型更好的模型。除了鏈接到庫和使用上面兩個(gè)函數(shù)外,這一切都不需要任何設(shè)置。

在Spiral中,一旦反饋進(jìn)入,學(xué)習(xí)就開始。隨著生成的反饋越多,預(yù)測質(zhì)量會(huì)逐漸提高。在大多數(shù)服務(wù)中,可在幾秒鐘到幾分鐘內(nèi)獲得反饋,所以開發(fā)周期很短。主題專家可以添加新的特征,在幾分鐘內(nèi)看看它是否有助于改進(jìn)預(yù)測質(zhì)量。

與硬編碼的啟發(fā)法不同,基于Spiral的啟發(fā)法可以適應(yīng)不斷變化的條件。以緩存許可策略為例,如果某些類型的條目不太頻繁地請求,反饋將重新訓(xùn)練分類器,以減小在不需要人為干預(yù)的情況下許可這類條目的可能性。

案例研究:反應(yīng)式緩存啟發(fā)法實(shí)現(xiàn)自動(dòng)化

Spiral的第一個(gè)生產(chǎn)級用例恰好吻合Phil Karlton的著名引言:“計(jì)算機(jī)科學(xué)界只有兩個(gè)難題:緩存失效和命名。”(我們已為自己的項(xiàng)目取了貼切的名稱,所以我們實(shí)際上使用Spiral立即解決了緩存失效。)

在Facebook,我們推出了一個(gè)反應(yīng)式緩存,以便Spiral的“用戶”(我們的其他內(nèi)部系統(tǒng))訂閱查詢結(jié)果。從用戶的角度來看,該系統(tǒng)提供查詢結(jié)果和針對該結(jié)果的訂閱。只要外部事件影響查詢,它自動(dòng)將更新后的結(jié)果發(fā)送到客戶端。這為客戶端減輕了輪詢的負(fù)擔(dān),并減輕了計(jì)算查詢結(jié)果的Web前端服務(wù)的負(fù)載。

用戶提交查詢時(shí),反應(yīng)式緩存先將查詢發(fā)送到Web前端,然后創(chuàng)建訂閱,緩存并返回結(jié)果。除了原始結(jié)果外,緩存還收到計(jì)算結(jié)果時(shí)涉及的對象和關(guān)聯(lián)列表。然后,它開始監(jiān)控針對查詢訪問的任何對象或關(guān)聯(lián)源源不斷的數(shù)據(jù)庫更新。每當(dāng)它看到可能影響其中一個(gè)活躍訂閱的更新,反應(yīng)式緩存會(huì)重新執(zhí)行查詢,并將結(jié)果與緩存內(nèi)容進(jìn)行比較。如果結(jié)果確實(shí)發(fā)生變化,它將新結(jié)果發(fā)送到客戶端,并更新自己的緩存。

該系統(tǒng)面臨的一個(gè)問題是,有大量的數(shù)據(jù)庫更新,但只有很小一部分影響查詢的輸出。如果某個(gè)查詢想知道“我的哪些朋友贊過此帖?”,沒必要獲得“該帖最近一次查看”方面的持續(xù)更新。

這個(gè)問題類似垃圾郵件過濾:面對一封郵件,系統(tǒng)應(yīng)該將它分類成垃圾郵件(不影響查詢結(jié)果)還是非垃圾郵件的正常郵件(確實(shí)影響查詢結(jié)果)?第一個(gè)解決方法是,手動(dòng)創(chuàng)建靜態(tài)黑名單。這是可行的,因?yàn)榉磻?yīng)式緩存工程團(tuán)隊(duì)認(rèn)識到超過99%的負(fù)載來自一小組查詢。對于低容量查詢而言,他們只是假設(shè)所有更新都是正常郵件,重新執(zhí)行查詢,以便對象的每次更新被查詢引用。針對一小組高容量查詢,他們創(chuàng)建了黑名單,為此精心觀察查詢執(zhí)行,確定每個(gè)對象中的哪些字段實(shí)際上影響了查詢的輸出。對于每份黑名單,這個(gè)過程通常需要工程師花幾周時(shí)間。使情況進(jìn)一步復(fù)雜化的是,這一組高容量查詢在不斷變化,因此黑名單很快過時(shí)了。每當(dāng)使用緩存的服務(wù)改變它所執(zhí)行的查詢,系統(tǒng)就要改變垃圾郵件過濾策略,這需要工程團(tuán)隊(duì)更多的工作量。

一種更好的解決方案:Spiral垃圾郵件過濾

重新執(zhí)行查詢后,只要將新的查詢結(jié)果與舊的查詢結(jié)果進(jìn)行比較,就很容易確定觀察到的更新是垃圾郵件還是正常郵件。該機(jī)制用于向Spiral提供反饋,以便它為更新創(chuàng)建分類器。

為了確保無偏差采樣,反應(yīng)式緩存維護(hù)并只提供來自一小組訂閱的反饋。緩存并不過濾這些訂閱的更新;只要修改了相關(guān)對象或關(guān)聯(lián),就重新執(zhí)行查詢。它將新的查詢輸出與緩存版本進(jìn)行比較,然后用它來向Spiral提供反饋――比如說,告訴它更新“上一次查看”并不影響“點(diǎn)贊數(shù)”。

Spiral從所有反應(yīng)式緩存服務(wù)器收集該反饋,并用它為每種不同類型的查詢訓(xùn)練分類器。這些分類器定期推送到緩存服務(wù)器。為新查詢創(chuàng)建過濾器或更新過濾器以響應(yīng)Web層不斷變化的行為不再需要工程團(tuán)隊(duì)的任何手動(dòng)干預(yù)。新查詢的反饋到來后,Spiral會(huì)自動(dòng)為那些過濾器創(chuàng)建新的分類器。

Spiral:更快的部署和更多的機(jī)會(huì)

使用一種基于Spiral的緩存失效機(jī)制,反應(yīng)式緩存中支持新查詢所需的時(shí)間從幾周縮短到幾分鐘。在Spiral之前,反應(yīng)式緩存工程師必須通過運(yùn)行實(shí)驗(yàn)和手動(dòng)收集數(shù)據(jù)來檢查每個(gè)新查詢的副作用。但是有了Spiral,大多數(shù)用例(映射到查詢)可由本地模型在幾分鐘內(nèi)自動(dòng)學(xué)習(xí),所以可以立即獲得本地推斷。

對于大多數(shù)用例而言,服務(wù)器能夠在10到20分鐘內(nèi)使用來自多臺服務(wù)器的數(shù)據(jù)訓(xùn)練模型。一旦發(fā)布到所有單臺服務(wù)器,這個(gè)更高質(zhì)量的模型可用于精準(zhǔn)度改進(jìn)的推斷。查詢更改后,服務(wù)器能夠適應(yīng)變更,一旦收到更新后的查詢,就重新學(xué)習(xí)新的重要性模式。

我們繼續(xù)致力于使后端服務(wù)實(shí)現(xiàn)自動(dòng)化,并運(yùn)用機(jī)器學(xué)習(xí),以獲得更好的運(yùn)營體驗(yàn)。 Spiral未來的潛在應(yīng)用包括使用貝葉斯優(yōu)化的連續(xù)參數(shù)優(yōu)化、基于模型的控制,以及針對每秒請求數(shù)(QPS)很高的實(shí)時(shí)服務(wù)和離線(批量)系統(tǒng)的在線強(qiáng)化學(xué)習(xí)技術(shù)。我們會(huì)在今后的帖子中繼續(xù)分享我們的工作和成果。

原文標(biāo)題:Spiral: Self-tuning services via real-time machine learning,作者:Vladimir Bychkovsky、Jim Cipar、Alvin Wen、Lili Hu和Saurav Mohapatra 

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2020-05-28 07:15:00

機(jī)器學(xué)習(xí)TensorFlow人工智能

2017-04-08 17:32:39

人工智能喬丹Ray

2019-01-24 15:30:09

TensorFlow機(jī)器學(xué)習(xí)

2017-11-07 11:00:59

數(shù)據(jù)庫調(diào)優(yōu)DBMS

2020-02-19 10:39:44

機(jī)器學(xué)習(xí)云計(jì)算數(shù)據(jù)

2021-10-09 12:08:23

Facebook編譯器機(jī)器學(xué)習(xí)

2009-03-10 16:11:56

改版Facebook實(shí)時(shí)通信

2009-06-17 13:50:15

實(shí)時(shí)搜索FacebookTwitter

2015-08-12 15:31:18

人工智能深度學(xué)習(xí)Fackbook

2017-07-10 10:05:50

機(jī)器學(xué)習(xí)自動(dòng)駕駛AI

2017-07-07 16:52:54

機(jī)器學(xué)習(xí)人工智能自動(dòng)駕駛

2017-07-10 09:28:19

人工智能機(jī)器學(xué)習(xí)自動(dòng)駕駛

2016-01-11 10:44:38

惡意軟件惡意軟件分析

2009-02-02 10:33:43

Facebook扎克伯格市場調(diào)查

2017-09-11 09:44:24

機(jī)器學(xué)習(xí)自動(dòng)化AML

2022-06-02 11:11:43

AI深度學(xué)習(xí)

2018-01-15 15:58:17

機(jī)器學(xué)習(xí)色彩還原k-means算法

2021-04-11 18:09:57

機(jī)器學(xué)習(xí)業(yè)務(wù)價(jià)值人工智能

2023-12-01 10:21:00

機(jī)器學(xué)習(xí)算法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號