本申請涉及計算機技術,特別涉及一種分布式機器學習方法和平臺。
背景技術:
大數(shù)據(jù)處理技術逐步發(fā)展,可以利用大數(shù)據(jù)構建在業(yè)務上應用的數(shù)據(jù)模型,并將該數(shù)據(jù)模型應用于對業(yè)務結果的預測。當數(shù)據(jù)量規(guī)模很小的時候,單臺計算機的運算能力已足夠;但是當數(shù)據(jù)量規(guī)模比較龐大的時候,就需要一個分布式的計算平臺進行整套的建模過程。相關技術中,在分布式計算平臺進行建模時,可以將建模過程包括的多個功能模塊,分別部署在不同的設備上進行計算處理,但是,在將各個功能模塊串接時,由于模塊之間較為復雜的依賴關系,使得模塊串接不流暢,比如,手動解析串聯(lián)各模塊,由此也使得數(shù)據(jù)處理的效率較低。
技術實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N分布式機器學習方法和平臺,以提高數(shù)據(jù)處理的效率。
具體地,本申請是通過如下技術方案實現(xiàn)的:
第一方面,提供一種分布式機器學習平臺,所述平臺包括:
邏輯構架模塊,用于構建數(shù)據(jù)處理任務的執(zhí)行邏輯,所述數(shù)據(jù)處理任務包括多個算法模塊,每個所述算法模塊包括:輸入部分、算法部分、輸出部分,且所述輸入部分和輸出部分具有相同的接口格式,以供所述多個算法模塊之間根據(jù)所述接口格式進行串接;所述輸入部分包括本算法模塊與其他算 法模塊之間的依賴信息;
算法執(zhí)行模塊,用于根據(jù)所述邏輯架構模塊構建的執(zhí)行邏輯,分別執(zhí)行所述各個算法模塊,且根據(jù)所述算法模塊中的算法部分,調用資源層中的算法庫進行運算。
第二方面,提供一種分布式機器學習方法,包括:
根據(jù)構建的數(shù)據(jù)處理任務的執(zhí)行邏輯,分別執(zhí)行所述數(shù)據(jù)處理任務中包括的多個算法模塊;每個所述算法模塊包括:輸入部分、算法部分、輸出部分,且所述輸入部分和輸出部分具有相同的接口格式;根據(jù)所述算法模塊中的算法部分,調用資源層中的算法庫進行運算;
根據(jù)所述算法模塊中的輸入部分包括的本算法模塊與其他算法模塊之間的依賴信息,以及所述接口格式,進行所述多個算法模塊之間的串接。
本申請?zhí)峁┑姆植际綑C器學習方法和平臺,通過將建模過程包括的多個算法模塊,分別部署在不同的設備上進行計算處理,并且,各個算法模塊可以通過相同的接口格式,實現(xiàn)流暢的串接,從而提高了數(shù)據(jù)處理的效率,在應用分布式機器學習平臺建模的例子中,提高了建模效率。
附圖說明
圖1是本申請一示例性實施例示出的一種分布式機器學習平臺的框架;
圖2是本申請一示例性實施例示出的一種算法模塊的結構設計;
圖3是本申請一示例性實施例示出的算法模塊的串接示意圖;
圖4是本申請一示例性實施例示出的一種分布式機器學習方法的流程圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一 些方面相一致的裝置和方法的例子。
本申請實施例提供了一種分布式機器學習平臺,數(shù)據(jù)挖掘師可以使用該平臺執(zhí)行數(shù)據(jù)處理任務,例如,該數(shù)據(jù)處理任務可以是根據(jù)獲取到的數(shù)據(jù)建立預測模型,并評估該預測模型的準確率。
圖1示例了該分布式機器學習平臺的框架,如圖1所示,該平臺包括邏輯構架模塊11、算法執(zhí)行模塊12和資源層13。其中,在執(zhí)行數(shù)據(jù)處理任務時,比如構建模型的過程中,將使用到各種算法,資源層13作為底層支撐,可以集成多種算法庫,例如圖1中示例的,r、python等單機版算法庫,還有hadoop、odps、spark等分布式算法庫,此外,還可以包括mllib、mahout、xlib等其他算法庫,不再一一列舉顯示在圖1中。
上述的資源層13相當于執(zhí)行數(shù)據(jù)處理任務的底層支撐,例如,建模過程中的數(shù)據(jù)處理、特征選擇、模型訓練等都將使用到各種各樣的算法,將調用資源層13中的算法庫執(zhí)行具體的處理。邏輯構架模塊11用于構建數(shù)據(jù)處理任務的執(zhí)行邏輯,例如,該數(shù)據(jù)處理任務可以包括多個算法模塊,參見圖1的示例,該分布式機器學習平臺可以在邏輯構架模塊11構建dag(directedacyclicgraph,有向無環(huán)圖)執(zhí)行邏輯,該dag執(zhí)行邏輯可以表示數(shù)據(jù)處理任務的各個算法模塊之間的調用關系。
圖1示意了算法模塊之間的dag邏輯,例如,算法模塊1可以是對原始采集數(shù)據(jù)進行數(shù)據(jù)處理的模塊,算法模塊2可以是在對原始數(shù)據(jù)處理后進行特征分析的模塊,可以進行特征選擇或特征降維等,算法模塊3可以是根據(jù)算法模塊2得到的特征進行模型訓練獲得模型的模塊,而算法模塊n可以是對訓練得到的模型進行效果預測的模塊。上述例子僅是示意,實際應用中可以按照數(shù)據(jù)處理任務的特點劃分多個算法模塊,并通過搭建dag圖表示該任務的執(zhí)行過程。
算法執(zhí)行模塊12可以根據(jù)邏輯構架模塊11構建的執(zhí)行邏輯,分別執(zhí)行各個算法模塊,在執(zhí)行算法模塊時可以是通過調用資源層13中的算法庫進行運算。本例子中,資源層13中包括單機版算法庫和分布式算法庫,盡可能的 使得資源層13中包括較為全面的多種類型的算法庫,算法執(zhí)行模塊12在執(zhí)行某個算法模塊時,可以根據(jù)本次處理的數(shù)據(jù)量大小、對算法的準確性要求等因素,在資源層13中選擇調用合適的算法庫執(zhí)行。比如,圖1中示例了對于其中一個在邏輯構架模塊11構建的算法模塊,算法執(zhí)行模塊12可以從資源層13中的hadoop、odps和spark中選擇一個算法庫執(zhí)行運算。
通過上述的描述,可以了解本例子的分布式機器學習平臺的大體架構,即,邏輯構架模塊11可以搭建數(shù)據(jù)處理任務的dag執(zhí)行邏輯,表示出該數(shù)據(jù)處理任務包括的各個算法模塊及其相互關系,而算法執(zhí)行模塊12可以根據(jù)邏輯構架模塊11構建的執(zhí)行邏輯,調用資源層13中的算法庫執(zhí)行各個算法模塊。其中,本實施例中,將各個算法模塊設計為統(tǒng)一的結構格式,以方便模塊之間的串接和分布式部署。
圖2示例了一個算法模塊的結構設計,如圖2所示,每個算法模塊可以包括:輸入部分21、算法部分22和輸出部分23。輸入部分21(input)作為算法部分(algorithm)的輸入,輸出部分23(output)作為算法部分的輸出,該輸入和輸出具有相同的接口格式,其信息類型可以是如下三種的至少之一:數(shù)據(jù)(data)、模型(model)或結果(evaluation)。例如,數(shù)據(jù)可以是采樣的數(shù)據(jù)、拆分后的數(shù)據(jù)等,模型可以是根據(jù)數(shù)據(jù)訓練得到的某個模型,結果可以是根據(jù)模型預測得到的結果。
輸入部分21還可以包括本算法模塊與其他算法模塊之間的依賴信息,例如,可以使用算法模塊的模塊標識表示所依賴的是哪個算法模塊,比如,本模塊依賴于上一個模塊的數(shù)據(jù)、模型或結果。輸入部分21所依賴的其他算法模塊的數(shù)量可以為至少一個。算法部分22用于表示使用何種算法對輸入數(shù)據(jù)21輸入的信息進行處理。而輸出部分23可以用于闡述該算法模塊是否存在數(shù)據(jù)、模型或結果的產(chǎn)出。
如下通過一個例子,示意下算法模塊的結構設計:
上述的例子,對算法模塊的輸入部分inputs、算法部分algorithm以及輸出部分outputs都各自進行了標準定義,每一個算法模塊都按照這種結構進行設計。例如,參見上面的例子中,輸入inputs部分,依賴于的算法模塊的taskid是‘10002’,并且,該算法模塊‘10002’的數(shù)據(jù)、模型和結果,都作為本算法模塊的輸入。再參見上述例子的輸出outputs部分,本算法模塊的輸出,包括數(shù)據(jù)和結果(true),沒有輸出模型(false)。本算法模塊的算法部分algorithm中,使用的算法稱是邏輯回歸算法logisticregression。
此外,為了dag邏輯的清晰性,可以規(guī)定每個算法模塊只能產(chǎn)出唯一一個數(shù)據(jù)、模型或結果,但可以引入多個數(shù)據(jù)、模型或結果。例如,在上面的例子中,輸入部分inputs所依賴的算法模塊只有taskid為‘10002’的算法模塊,這個模塊的數(shù)據(jù)、模型和結果作為本算法模塊的輸入。在其他的應用場景中,輸入部分inputs所依賴的算法模塊可以有更多個。
示例性的,如下示意一種多個輸入的例子,參見該例子的輸入部分inputs,本算法模塊的輸入依賴了三個,包括taskid分別為‘10002’、‘10003’和‘10004’的三個算法模塊,將‘10002’輸出的數(shù)據(jù)data、‘10003’輸出的模型models以及‘10004’輸出的結果evaluations,均作為本算法模塊的輸入。當然,實際應用中還可以是其他場景,例如,輸入部分可以只有數(shù)據(jù)data和模型models,而沒有結果evaluations,不再詳舉。
本實施例中,還對各個算法模塊輸出的信息類型也進行統(tǒng)一定義,例如,對于數(shù)據(jù)data,可以將中間結果的數(shù)據(jù)暫存在本地或分布式系統(tǒng)上,使用一個schema文件即可在不同的算法模塊之間傳遞數(shù)據(jù)。對于模型models,可以用pmml(predictivemodelmarkuplanguage,預測模型標記語言)表達模型參數(shù),pmml是一種事實標準語言,用于呈現(xiàn)數(shù)據(jù)挖掘模型,并且pmml可以用于不同的算法模塊之間共享預測分析模型。對于結果evaluations,可以使用json的形式存放模型評估的結果數(shù)據(jù),并且,該結果數(shù)據(jù)還可以進行可視化展示。
可以看到,本申請將數(shù)據(jù)處理任務分成了多個獨立的算法模塊,并且這些算法模塊具有統(tǒng)一的接口格式,這種特點使得可以將這些算法模塊進行分布式部署,并且該統(tǒng)一接口格式將用于方便各個算法模塊之間的流暢串接。例如,參見圖3的示例,該圖3示例了三個算法模塊g1、g2和g3,其中,g1輸出的數(shù)據(jù)和模型、以及g2輸出的數(shù)據(jù)和結果,都可以作為g3的輸入,而g3輸出的模型又可以作為其他模塊的輸入。在該過程中,g1、g2與g3的串接,由于g1(或g2)的輸出與g3的輸入具有相同的格式定義,都是數(shù)據(jù)、模型或結果,很容易實現(xiàn)模塊之間的串接,不會產(chǎn)生接口標準方面的沖突。因此,通過相同的接口格式,各模塊拼接即可組裝為一個完整的dag邏輯以供執(zhí)行。
在采用本例子的分布式機器學習平臺進行建模時,可以將建模過程包括的多個算法模塊,分別部署在不同的設備上進行計算處理,并且,各個算法模塊可以通過相同的接口格式,實現(xiàn)流暢的串接,從而提高了數(shù)據(jù)處理的效率,在應用分布式機器學習平臺建模的例子中,即提高了建模效率。
圖4示例了使用本申請的分布式機器學習平臺執(zhí)行的分布式機器學習方法,如圖4所示,該方法可以包括:
在步驟401中,根據(jù)構建的數(shù)據(jù)處理任務的執(zhí)行邏輯,分別執(zhí)行所述數(shù)據(jù)處理任務中包括的多個算法模塊;每個所述算法模塊包括:輸入部分、算法部分、輸出部分,且所述輸入部分和輸出部分具有相同的接口格式;根據(jù)所述算法模塊中的算法部分,調用資源層中的算法庫進行運算。
在步驟402中,根據(jù)所述算法模塊中的輸入部分包括的本算法模塊與其他算法模塊之間的依賴信息,以及所述接口格式,進行所述多個算法模塊之間的串接。
上述的401和402的執(zhí)行順序并不限制,例如,分布式機器學習平臺可以一邊執(zhí)行dag邏輯中的算法模塊,一邊將各個算法模塊進行串接。此外,在根據(jù)算法模塊進行算法庫的調用時,可以是根據(jù)算法模塊中的算法部分algorithm,調用資源層中的算法庫進行運算。并且,本實施例的機器學習平臺可以將分布在不同位置的同一算法進行封裝,并根據(jù)數(shù)據(jù)量、算法運算要求等因素,選擇合適的算法庫執(zhí)行algorithm的運算。
例如,邏輯回歸算法logisticregression的訓練模塊在r、python中均有提供單機版算法庫,同時在mahout、mllib上也存在分布式算法庫,但是無論是單機版還是分布式算法庫,算法本身的參數(shù)并無太大差異,本例子的機器學習平臺可以將這些算法庫進行統(tǒng)一封裝。并且,平臺的算法執(zhí)行模塊可以根據(jù)數(shù)據(jù)量大小、算法的穩(wěn)定性、準確性要求等因素,評估選擇合適的算法庫運行。例如,如果數(shù)據(jù)量較小,可以選擇單機版算法庫,數(shù)據(jù)量較大時,可以選擇分布式算法庫以提高處理速度。
此外,數(shù)據(jù)處理任務中使用到的算法類型可以有多種,例如,數(shù)據(jù)處理 方面的算法、特征工程方面的算法、模型訓練評估方面的算法。在數(shù)據(jù)處理方面,可以進行數(shù)據(jù)采樣處理、數(shù)據(jù)拆分處理、缺失值處理等,在特征工程方面,可以進行特征重要性計算、特征交叉計算、特征離散化處理、特征選擇等,在模型訓練評估方面,可以進行模型訓練、模型參數(shù)表達的pmml智能組裝、模型的預測和評估、模型參數(shù)的智能尋優(yōu)等。
本申請實施例的分布式機器學習平臺,可以實現(xiàn)多種算法庫的共享,盡可能包括較為全面的多種算法庫;還可以構建dag邏輯清晰的表達模型的建模過程以及各個算法模塊的關聯(lián);并且,通過設計統(tǒng)一的算法模塊接口格式,使得各個算法模塊既可以相對獨立的分布式部署,又可以保證模塊之間的順暢串接,從而提高數(shù)據(jù)處理效率。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。