最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Netflix開源Python框架Metaflow有何提升性能的魔法?

2020-01-26 20:45 作者:啵嘰玉桂狗勾  | 我要投稿



Metaflow 是由 Netflix 開發(fā),用在數(shù)據(jù)科學領(lǐng)域的 Python框架,于 2019 年 12 月正式對外開源。據(jù)介紹,Metaflow 解決了數(shù)據(jù)科學家在可擴展性和版本控制方面面臨的一些挑戰(zhàn),通過有向圖中的一系列步驟來構(gòu)建處理流水線。Metaflow 可以更容易地將本地流水線搬移到云資源上運行(不過目前僅支持 AWS 云)。每個步驟都在又向流程圖中的獨立節(jié)點上運行,并且具有唯一的依賴關(guān)系,Metaflow 則負責處理節(jié)點之間的內(nèi)部通信。今天,我們就為大家介紹 Metaflow,希望對大家有所幫助。?? ? ? ?

? ? ? ?Metaflow 簡介?Metaflow 在 ?Netflix 內(nèi)部已經(jīng)被用于各個方面的機器學習任務(wù),例如優(yōu)化廣告投遞,視頻編碼等。Metaflow 其出現(xiàn)是為了提高模型的部署效率,讓整個模型開發(fā),部署,更新流程更加系統(tǒng)化,從而提高部署速度。?對數(shù)據(jù)科學家而言,他們更關(guān)注的是模型設(shè)計和特征工程等直接與模型性能相關(guān)的工作,并且希望能快速部署模型從而驗證模型是否能在生產(chǎn)環(huán)境中有所提升,而不想在諸如環(huán)境依賴,版本控制,數(shù)據(jù)倉庫管理等基本流程任務(wù)中浪費精力,Metaflow 的出現(xiàn)就是為了解決這個問題。? ? ? ?

? ? ? ?Metaflow 可以簡化甚至自動完成底層任務(wù),讓數(shù)據(jù)科學家能更輕松,快速地部署模型,從而集中精力來提升模型性能以及在實際工程環(huán)境中的表現(xiàn),提高生產(chǎn)力。因此,這是一款以人為中心的框架。近期,Netflix 也透露,Metaflow 已經(jīng)將 Netflix 機器學習項目部署時間的中位數(shù)從四個月縮短到了僅僅7天。接下來將主要介紹Metaflow的工作原理和特點。?基本工作原理? ? ? ?

? ? ? ?如上圖,可以用一個有向非循環(huán)圖來表示工作流程,圖中的每個節(jié)點都表示一個流程中的一個階段,這些階段可以是任意的 Python 代碼,在上圖的例子中,Metaflow 并行的訓練兩個不同版本的模型,并選擇性能最好的那個。這是一種單機并行處理的方式,類似于 Python 中的 ?multiprocessing 包。如果要部署到云資源,只需要額外指定一個命令行參數(shù) --with batch,即可告知 Metaflow 在云上運行代碼。目前只支持亞馬遜的 Web 服務(wù)器,不過應(yīng)該很快就會支持更多云服務(wù)器。?每個階段的末尾都有一個檢查點,可以在以后的階段中從任意檢查點恢復(fù)執(zhí)行,以幫助調(diào)試。但是你不能逐行檢查您的代碼。?版本控制?機器學習的版本控制頗具挑戰(zhàn)性,因此 Metaflow 也特別照顧了這個問題。每個步驟的運行代碼和數(shù)據(jù)都是散列(hash)的,圖中每個節(jié)點的執(zhí)行都被記錄下來,并且超參數(shù)設(shè)置和運行結(jié)果都被存儲:


from?metaflow?import?FlowSpec,?Parameter,?step
class FitModelFlow(FlowSpec): ? ?alpha = Parameter('alpha', ? ? ? ? ? ? ? ? ? ? ?help='Learning rate', ? ? ? ? ? ? ? ? ? ? ?default=0.01)
? ?@step ? ?def start(self): ? ? ? ?print('alpha is %f' % self.alpha) ? ? ? ?self.data = load_data() ? ? ? ?self.next(self.fit)
? ?@step ? ?def fit(self): ? ? ? ?self.model = fit(self.data) ? ? ? ?self.next(self.end)
? ?@step ? ?def end(self): ? ? ? ?print(f'Results for LR={self.alpha}: {eval(self.model)}')
if __name__ == '__main__': ? ?FitModelFlow()
超參數(shù)的設(shè)置可以很容易地通過命令行參數(shù)來完成:


python metaflow_parameter.py run --alpha 0.001
元數(shù)據(jù)以 JSON 格式存儲在文件系統(tǒng)中,可以訪問存儲在任何階段的變量數(shù)據(jù),也可以很容易地獲取最后一次成功運行的結(jié)果。


run = Flow(flow_name).latest_successful_run
依賴管理?Metaflow 還提供了依賴管理機制,可以在圖階段或節(jié)點階段通過裝飾器來指定,并且可以指定特定的Python版本或特定的包:


from metaflow import FlowSpec, step, conda, conda_base
@conda_base(python='3.6.5')class FitModelFlow(FlowSpec):
? ?@step ? ?def start(self): ? ? ? ?self.data = load_data()
? ?@conda(libraries={"scikit-learn": "0.19.2"}) ? ?@step ? ?def fit(self): ? ? ? ?from sklearn import svm ? ? ? ?self.model = svm.LinearSVC( ... )
# ...
例如可以從命令行運行時指定 conda 環(huán)境標志:


python metaflow_conda.py --environment=conda run
開始使用Metaflow?可以通過pip命令來安裝metaflow:




Netflix開源Python框架Metaflow有何提升性能的魔法?的評論 (共 條)

分享到微博請遵守國家法律
墨江| 永康市| 邳州市| 五指山市| 富民县| 罗平县| 临桂县| 上饶县| 慈溪市| 彩票| 深圳市| 新安县| 青浦区| 昌黎县| 德江县| 龙岩市| 九龙城区| 洛宁县| 罗定市| 洮南市| 金川县| 本溪市| 镇平县| 阿勒泰市| 甘孜县| 正镶白旗| 汉川市| 延边| 如皋市| 邻水| 丰原市| 大洼县| 万安县| 龙陵县| 桂阳县| 伊宁市| 武邑县| 双辽市| 闸北区| 含山县| 赣州市|