跳轉到主要內容
工程的博客

新特性MLflow v0.6.0

分享這篇文章

今天,我們很高興宣布MLflow v0.6.0在本周早些時候發布新特性。現在可以在PyPIMaven,文檔更新。你可以安裝最近發布的pip安裝mlflow中描述的那樣MLflow快速入門指南

MLflow v0.6.0介紹一些主要的特點:

  • 一個Java客戶機API,可用Maven
  • 對儲蓄和服務支持火花MLlib模型作為MLeap對於低延遲服務
  • 支持標簽與元數據,運行期間和之後運行完成
  • 支持刪除(刪除和恢複)實驗

在這篇文章中,我們將描述新功能,增強,並在這個版本錯誤修複。特別是,我們將關注兩個特性:一個新的Java MLflow客戶機API和火花MLlib MLeap模型集成。

Java客戶機API

給開發人員一個編程語言的選擇,包括Java客戶機跟蹤API類似的功能Python客戶機跟蹤API。兩者都提供CRUD接口MLflow實驗和運行。這個Java客戶機上可用Maven

通過主要的Java類的構造函數MlflowClient ()和它的實例方法,創建列表,刪除日誌或訪問運行及其構件。默認情況下,它連接到跟蹤服務器設置的環境變量MLFLOW_TRACKING_URI,除非顯式實例化MlflowClient (tracking_server_ui)構造函數。

如果你使用了新的MLflow Python API跟蹤和實驗,介紹了MLflow v0.5.2,它在功能上沒有區別。像往常一樣,一些代碼片段將說明其用法。一個完整的示例,可以在示例Java客戶端源代碼的目錄:QuickStartDriver.java

進口java.util。列表;進口java.util。可選;進口org.apache.log4j.Level;進口org.apache.log4j.LogManager;進口org.mlflow.api.proto.Service。*;進口org.mlflow.tracking.MlflowClient;
              / * **這一個示例應用程序使用MLflow跟蹤API來創建管理*實驗運行。* /公共QuickStartDriver{公共靜態無效主要(String[]參數)拋出異常{(新QuickStartDriver ())。過程(arg遊戲);}無效過程(String[]參數)拋出異常{MlflowClient客戶端;如果(arg遊戲。長度exp = client.listExperiments ();System.out.println (“#實驗:”+ exps.size ());exps.forEach (e - > System.out.println (“妳”+ e));/ /創建一個新的實驗createRun (客戶端,expId);System.out.println (“= = = = = =再getExperiment”);GetExperiment。響應exp2 = client.getExperiment (expId);System.out.println (”getExperiment:“+ exp2);System.out.println (“= = = = = = getExperiment的名字”);可選<實驗> exp3 = client.getExperimentByName (expName);System.out.println (”getExperimentByName:“+ exp3);}空白createRun (expId MlflowClient客戶,長){System.out.println (“= = = = = = createRun”);/ /創建運行字符串源文件=“MyFile.java”;RunInfo runCreated = client.createRun (expId,源文件);System.out.println (”CreateRun:“+ runCreated);字符串runId = runCreated.getRunUuid ();/ /日誌參數client.logParam (runId,“min_samples_leaf”,“2”);client.logParam (runId,“max_depth”,“3”);/ /日誌指標client.logMetric (runId,“auc”,2.12F);client.logMetric (runId,“accuracy_score”,3.12F);client.logMetric (runId,“zero_one_loss”,4.12F);/ /更新完成client.setTerminated (runId, RunStatus.FINISHED);/ /運行的細節運行運行= client.getRun (runId);System.out.println (”GetRun:“+運行);}}> < /實驗

火花MLlib MLeap模型集成

真正MLflow設計目標的“開放平台”,支持流行的口味毫升庫和模型,我們添加了另一個Beplay体育安卓版本模型的味道:mlflow.mleap。可以選擇保存在火花MLlib模型MLeap格式。這個新的MLeap格式允許部署火花MLlib模型低延遲生產服務。

實時服務的MLeap框架的性能遠高於火花MLlib原因很多。首先,它使用較輕的重量,高性能DataFrame表示。第二,與火花MLlib管道模型不同,它不需要SparkContext同時評估MLlib管道在Scala中。最後,它已序列化和反序列化機製將PySpark管道模型轉換為Scala對象。

從上麵的圖中,您可以看到MLeap可以預測在個位數毫秒範圍,而火花MLlib達到100 -毫秒範圍。

儲蓄火花MLib模型MLeap味道

對於這個功能,我們已經延長了mlflow.sparkAPI的save_model (…)選擇保存火花MLib MLeap格式的模型,給你選擇部署實時服務的性能模型。一個例子將說明如何拯救這個模型在兩種格式。

讓我們創建一個簡單的火花MLlib模型、對數模型、一些參數,存在火花MLlib和MLeap模型格式。一個額外的參數mlflow.spark.save_model (…)將堅持兩種格式:火花MLlib MLeap。

進口mlflow進口mlflow.sparkpyspark.ml進口管道pyspark.ml.classification進口LogisticRegressionpyspark.ml.feature進口HashingTF,記號賦予器#訓練DataFrame培訓= spark.createDataFrame ([(0,“一個b c d e火花”,1.0),(1,“b d”,0.0),(2,“火花f g h”,1.0),(3,“hadoop mapreduce”,0.0)]、[“id”,“文本”,“標簽”])##測試DataFrametest_df = spark.createDataFrame ([(4,“我火花j k”),(5,“l m n”),(6,“火花hadoop火花”),(7,“apache hadoop”)]、[“id”,“文本”])#創建一個MLlib管道記號賦予器=記號賦予器(inputCol =“文本”outputCol =“單詞”)hashingTF = hashingTF (inputCol = tokenizer.getOutputCol (), outputCol =“特征”)lr = LogisticRegression(麥克斯特=10regParam =0.001)管道=管道(階段=(記號賦予器、hashingTF lr))模型= pipeline.fit(培訓)#日誌參數mlflow.log_parameter (“max_iter”,10)mlflow.log_parameter (“reg_param”,0.001)#日誌mleap格式的模型mlflow.mleap。log_model(模型、test_df“mleap-model”)#這個調用添加test_df參數將節省#在這兩種格式。#現在讓我們堅持它。這個API調用將節省兩種口味#模型:火花MLlib MLeap,都可以使用#在部署pyfunc電話,如果我們提供MLeap味道#參數,如DataFrame輸入,它將保存風味
              mlflow.spark。save_model(模型、test_df“mleap_models”)

其他功能和錯誤修正

除了這些特性外,其他物品,修複bug和文檔都包含在這個版本。有些東西值得注意的是:

  • (API)支持與元數據標記運行,在運行過程中和結束後,完成
  • (API)實驗通過REST API現在可以刪除和恢複,Python跟蹤API和MLflow CLI (# 340, # 344, # 367, @mparkhe)
  • (API)添加list_artifacts和download_artifacts MlflowService與運行的artifactory (# 350, @andrewmchen)
  • (API)添加get_experiment_by_name Python跟蹤API,並相當於Java API (# 373, @vfdev-5)
  • [API / Python]現在版本是通過mlflow暴露。版本
  • (API / CLI) mlflow工件CLI添加到列表,下載,上傳工件運行庫(# 391,@aarondav)
    * (API / CLI) mlflow工件CLI添加到列表,下載,上傳工件運行庫(# 391,@aarondav)
  • (API)添加get_experiment_by_name Python跟蹤API,並相當於Java API (# 373, @vfdev-5)
  • [服務/ SageMaker] SageMaker服務以一個AWS地區參數(# 366,@dbczumar)
  • (UI)添加圖標源名稱MLflow實驗UI (# 381, @andrewmchen)
  • [醫生]添加綜合的例子做一個多步驟的工作流,鏈接MLflow一起運行和重用結果(# 338,@aarondav)
  • (文檔)添加綜合的例子做hyperparameter調優(# 368,@tomasatdatabricks)
  • (文檔)增加mlflow代碼示例。@dmatrix keras API (# 341)
  • (文檔)顯著改善到Python API文檔(# 454,@stbof)
  • [醫生]示例文件夾重構來提高可讀性。現在居住在示例的示例/相反的例子,太(# 399,@mparkhe)

變化的完整列表和貢獻的社區中可以找到0.6.0更新日誌。我們歡迎更多的輸入(電子郵件保護)或通過申請的問題提交補丁在GitHub上。關於MLflow實時問題,我們有一個鬆弛的通道對於MLflow以及可以效仿@MLflow在Twitter上。

閱讀更多

為我們下一步工作的概述,看看路線圖幻燈片我們的演講。

學分

MLflow 0.6.0包括補丁、bug修複和醫生改變從亞倫·戴維森,阿德裏安壯族,亞曆克斯·亞當森,安德魯·陳科裏Zumar, Hamroune查希爾,歡樂Gioa, Jules Damji Krishna Sangeeth馬泰Zaharia哈斯默奇,Shenggan,斯蒂芬妮Bodoff,托馬斯Nykodym,卡通Baeyens, VFDev。

免費試著磚
看到所有工程的博客的帖子
Baidu
map