精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Meson:支持Netflix的機器學習工作流

責任編輯:editor004

作者:俠天

2016-07-07 12:26:22

摘自:INFOQ

清晰/預處理數據:使用Python腳本創建兩個用戶集來確保并行路徑;并行路徑:一個路徑使用Spark構建和分析全局模型,并保存到HDFS作為臨時存儲。每步一旦被調度,Meson調度器從Mesos申請到實際的資源,并把任務注冊到Mesos master。

Netflix的目標是能預測顧客之所想觀看的電影,也即推薦預測。為了做到這一點,每天會運行大量機器學習工作流,而為了支撐創建這么多機器學習工作流和有效利用資源,Netflix的工程師開發了Meson。

Meson是一個通用的工作流和調度框架,它可以跨異質性系統進行ML管道管理、執行工作流。Meson維護構建、訓練和驗證個性化算法(視頻推薦等)的ML管道的生命周期。

Meson的主要目標之一是提高算法實驗的速度、穩定性和可重復性,同時允許工程師使用他們自己選擇的技術。

機器學習管道的強大面孔

Netflix當前幾種生成機器學習管道的關鍵角色是Spark, MLlib, Python, R和Docker。

下面來了解下一個典型的視頻推薦的機器學習管道,以及它們在Meson中是如何表示和處理的。

  工作流涉及到如下幾點:

選擇用戶集:通過Hive查詢來選擇用戶集來做人群行為分析;
清晰/預處理數據:使用Python腳本創建兩個用戶集來確保并行路徑;并行路徑:一個路徑使用Spark構建和分析全局模型,并保存到HDFS作為臨時存儲。另外一個使用R來構建區域模型。區域的數量是基于人群選擇分析而動態變化。在流程圖中,Build Regional Model和Validate Regional Model 對于每個區域是重復的,運行時擴展,并且以不同的參數集來執行,見下圖;驗證:Scala代碼用來測試兩個并行路徑收斂時的模型穩定性。在這步中,如果模型不穩定,我們也需要再返回、重復整個流程;發布新模型:建立一個Docker容器來發布新模型,以便被其它生產系統使用。

上圖展示了一個運行的工作流(前面描述的):

用戶集選擇和數據預處理已完成,圖中綠色部分;流程中的并行路徑:Spark分支完成模型生成和驗證;for-each分支分出四個不同的區域模型,它們都在運行中,圖中黃色部分。模型選擇的Scala部分已激活,如圖中藍色部分所示。這表明一個或者多個輸入分支已完成,但是它仍然沒有被調度執行。其原因是輸入分支還有未啟動或者正在進行的。運行時環境和參數會根據業務策略傳遞到工作流當中。

深度解密

接下來讓我們揭開Meson神秘的面紗,去理解Meson是如何跨系統運行和生態系統不同組件間是怎樣交互的。工作流在運行的過程中有各種資源要求和期望,Meson是利用Apache Mesos來實現的。Mesos提供CPU、內存、存儲和其它計算資源的任務級別的隔離和抽象。Meson利用這點特性來實現對任務的高擴展性和容錯性。

  Meson調度器

Meson調度器被注冊為一個Mesos框架,進行管理各種工作流的啟動、流控制和運行時。Meson把實際的資源調度發到Mesos,包括各種內存和CPU要求。Meson依賴Mesos進行資源調度,但是Meson的調度器設計成可插入的,所以也可以選擇其它框架來做資源調度。

每步一旦被調度,Meson調度器從Mesos申請到實際的資源,并把任務注冊到Mesos master。

Meson Executor

Meson Executor是一個定制化的Mesos Executor。寫入一個executor允許我們保持Meson間通訊通道,這對長連接任務(框架消息發送到Meson調度器)非常有用。Meson Executor也使得使用者可以傳入定制化的豐富數據,而不僅僅傳入一些退出代碼或者狀態信息。

一旦Mesos調度一個Meson任務,它會在slave端下載所有任務依賴后啟動一個Meson executor。當核心任務被執行,executor會發送心跳、完成百分比、狀態信息等。

DSL

Meson提供一個基于Scala的DSL,使得開發人員更容易的使用和創建定制化的工作流。下面展示前述工作流是如何使用DSL來定義:

val getUsers = Step("Get Users", ...)val wrangleData = Step("Wrangle Data", ...)...val regionSplit = Step("For Each Region", ...)val regionJoin = Step("End For Each", ...)val regions = Seq("US", "Canada", "UK_Ireland", "LatAm", ...)val wf = start -> getUsers -> wrangleData ==> ( trainGlobalModel -> validateGlobalModel, regionSplit **(reg = regions) --< (trainRegModel, validateRegModel) >-- regionJoin) >== selectModel -> validateModel -> end// If verbs are preferred over operatorsval wf = sequence(start, getUsers, wrangleData) parallel { sequence(trainGlobalModel, validateGlobalModel) sequence(regionSplit, forEach(reg = regions) sequence(trainRegModel, validateRegModel) forEach, regionJoin)} parallel sequence(selectModel, validateModel, end)

Meson架構擴展

Meson很容易擴展,增加定制化的步驟和擴展功能,比如,Spark Submit Step, Hive Query Step、Netflix的微服務或者其它像Cassandra的系統。

Artifacts

在Meson里,工作流的每步輸出都作為“一等公民”對待,并存儲為Artifacts。工作流會根據artifact id的存在與否來決定每步的重試是否可跳過。我們也可以通過Meson UI來對Artifacts進行定制的可視化。比如,存儲特征重要性作為一個artifact,然后插入一個定制的可視化來比較過去N天特征的重要性。

  Mesos Master / Slave

Meson的定制化Mesos executor是跨slave機器發布的。下載所有jar包和定制化的artifact,并發送消息/上下文/心跳到Meson調度器。從Meson提交的Spark作業共享相同的Mesos slave來運行Spark作業啟動的任務。

原生Spark支持

支持原生Spark是Meson的一個重要要求。 在Meson里提交Spark作業后可以監控Spark作業過程,并能提供Spark步驟的重試或者殺死Spark作業。Meson也支持指定Spark版本。

Meson支持具有挑戰性的Spark多租戶環境。Meson能夠高效的利用有限的資源,通過匹配潛在滿足資源需求和服務等級協議(SLA)需要的Mesos slave。也可以對Mesos slave標簽化分組。

ML結構

隨著Meson的使用增加,大規模的并行問題(比如,參數掃描、復雜的bootstrap算法和交叉驗證)也出現了。

Meson提供一個簡單的‘for-loop’ 結構,它允許數據科學家和科研人員在成千上萬的docker鏡像中表達參數掃描算法。這個結構的使用者可以實時的監控成千的任務過程,通過UI找到失敗的任務,打印日志到一個位置來簡單的管理并行任務。

結論

Mesos在去年已經完成多ML管道的成百上千的并發作業。它能提高算法團隊對推薦算法的效率。

Netflix后期計劃在幾個月后開源Meson。

英文原文:Meson: Workflow Orchestration for Netflix Recommendations

譯者介紹:俠天,專注于大數據、機器學習和數學相關的內容,并有個人公眾號:bigdata_ny分享相關技術文章。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 青田县| 浦北县| 工布江达县| 平邑县| 霍州市| 资兴市| 阆中市| 安陆市| 宣恩县| 永泰县| 景宁| 财经| 丹巴县| 公安县| 巴林左旗| 榆社县| 温宿县| 邓州市| 彩票| 奉新县| 微山县| 洞口县| 炎陵县| 渝中区| 城固县| 子洲县| 沽源县| 景东| 疏勒县| 仁布县| 东兴市| 克山县| 绍兴市| 津南区| 思南县| 乌兰察布市| 同心县| 如东县| 郸城县| 孝昌县| 贵溪市|