Databricks 開源 MLflow 平台,解決機器學習開發四大難點
雷鋒網 AI 研習社按:機器學習開發有著遠超傳統軟體開發的複雜性和挑戰性,現在,Databricks 開源 MLflow 平台有望解決其中的四大痛點。
嘗試過機器學習開發的同學們都知道,它的複雜性遠超軟體開發,且伴隨著多種全新的挑戰。在 Databricks,我們與上百家用到機器學習的公司共事,反覆聽到如下顧慮:
五花八門的工具。在機器學習生命周期的每個階段,從數據準備到模型訓練,都有成百上千的開源工具。然而,不同於傳統的軟體開發(每個階段選擇一種工具),在機器學習開發中,你通常想要嘗試每種可用的工具(如演算法),看是否能提升實驗結果。這樣一來,需要使用和產品化許多庫。
實驗難以追蹤。機器學習演算法中有許多可配置參數,不管你是獨立開發者還是處於團隊中,都難以追蹤每個實驗中用於生成模型的參數、代碼和數據。
實驗結果難以復現。由於缺乏精細的追蹤能力,團隊在使用相同代碼再次實驗時往往會陷入困境。不管是數據科學家將訓練代碼交給工程師用於生產,還是你打算返回到之前的研究對問題進行調試,重現機器學習工作流程都很重要。
機器學習難以部署。將模型轉化為產品極具挑戰,因為部署工具和模型運行環境(如 REST serving、批推理、移動端應用)太多了。由於沒有將模型從庫轉移到工具中的標準方法,導致每一次新的部署都伴隨全新風險。
鑒於上述挑戰,毫無疑問,為了使機器學習開發像傳統軟體開發一樣,具有魯棒性、可預測性以及廣泛傳播,它必須得到大幅進化。為此,許多組織都開始打造內部機器學習平台來管理機器學習生命周期。例如,Facebook,Google 和 Uber 已經打造 FBLearner Flow,TFX 和 Michelangelo 來管理數據準備、模型訓練和部署。然而,即使是這些內部機器學習平台,也存在限制:只支持少量內置演算法或者單個 ML 庫,並且綁定的是自家公司的基礎架構。用戶不能輕鬆利用新的 ML 庫,也很難將自己的研究分享到更廣的社群。
在 Databricks,我們相信有更好的方式來管理機器學習生命周期,基於此我們推出全新的開源機器學習平台 MLflow。目前,alpha 版本已發布。Github 鏈接:
https://github.com/databricks/mlflow
MLflow:全新的開源機器學習平台
MLflow 從現有 ML 平台中得到靈感,在設計上擁有以下兩項開放理念:
開放的交互界面:MLflow 被設計成支持所有 ML 庫、演算法、部署工具和語言,它圍繞 REST API 和可以從多種工具中應用的簡單數據格式(如將模型看作 lambda 函數 )建立,而不是僅支持少量內建功能。這帶來一個立竿見影的好處:可以輕易將 MLflow 加入現有代碼中,同時,在組內分享可執行的使用任意 ML 庫的代碼也變得簡單。
開源:MLflow 是一個開源項目,用戶和工具庫開發者能對其進行擴展。另外,如果你希望開源自己的代碼,得益於 MLflow 的開放格式,在組織間共享工作流步驟和模型十分簡單。
MLflow 現在仍為 alpha 版,但是我們認為該版本在處理 ML 代碼上已非常有用,我們也樂意收到大家的反饋。接下來是對 MLflow 以及相關組件的詳細介紹。
組件
MLflow alpha 版由以下 3 個組件構成:
MLflow Tracking
MLflow Tracking 是一個 API,當你在運行機器學習代碼打算後續可視化時,它是展示參數記錄、代碼版本、metric 和輸出文件的 UI。只需幾行簡單的代碼,你就能夠追蹤參數,metric 和 artifact:
你可以在任何環境(獨立腳本、notebook 等)下使用 MLflow Tracking 將結果記錄到本地文件或者伺服器,之後再將多次操作進行對比。藉助網頁 UI,你可以查看和對比多次輸出。團隊也能使用這些工具來比較不同用戶的實驗結果。
圖:MLflow Tracking UI
MLflow Projects
MLflow Projects 提供打包可重用代碼的標準格式。每個 project 只是一個代碼目錄或 Git 庫,使用一個 descriptor 文件來說明其依賴關係以及如何運行代碼。MLflow Project 由一個簡單的 YAML 文件(MLproject)定義。
project 能藉助 Conda 環境來說明其依賴關係。一個 project 可能存在多個調用程序的 entry 點(已經指定參數)。你可以使用 mlflow run 命令工具運行來自本地文件或 Git 庫中的 project。
MLflow 將自動為 project 設置正確的環境並運行。另外,如果你在 project 中使用 Tracking API,MLflow 將會記住執行的 project 版本和參數。你能夠輕鬆再運行相同的代碼。
project 格式使得分享可重用的代碼變得更加簡單。配合 MLflow Tracking,MLflow Project 可以為你提供在復現、擴展和實驗中極其好用的工具。
MLflow Model
MLflow Model 是一種約定,它將機器學習模型打包成多種格式(稱為 flavor)。MLflow 提供多種工具來幫助你部署不同 flavor。每個 MLflow Model 作為一個目錄保存,包含 arbitrary 文件和一個 MLmodel descriptor 文件(該文件中列出了它適用的 flavor)。
在上面這個例子中,該模型可與支持 sklearn 和 python_function 模型 flavor 的工具一起使用。
MLflow 提供將常見模型部署到不同平台上的工具。例如,任何支持 python_function flavor 的模型都能部署到基於 Docker 的 REST 伺服器或 Azure ML、AWS SageMaker 等雲平台上。
開始使用 MLflow
按照mlflow.org(https://www.mlflow.org/)的使用說明,或前往GitHub查看已經發布的代碼。期待大家的反饋。
下一步
MLflow 才剛剛起步,所以還有不少工作要做。除了 project 的更新,我們還計劃介紹重要的全新組件(如 Monitoring)、庫集成和我們已經發布的擴展功能(如對更多環境的支持等)。大家可關注我們的博客以獲取更多信息。
via Databricks
雷鋒網 AI 研習社編譯。
7 個開發者應該知道的機器學習相關 Github 項目
※谷歌發布最大圖像標註數據集,190 萬張圖片開啟公開圖像挑戰賽
※狗狗視角看世界,用視覺數據預測狗的行為
TAG:AI研習社 |