在這個演示中,我們通過DataBricks進行真實的數據科學和機器學習用例,顯示數據團隊的不同成員如何在DataBricks平台上進行交互和協作。Beplay体育安卓版本
我們也展示了如何MLflow磚上簡化和簡化端到端的機器學習工作流程,使用MLflow跟蹤服務器跟蹤和編目每個模型訓練運行,以及MLflow model Registry引導ML模型通過測試和staging環境進入生產,直接從Databricks。
視頻成績單
歡迎來到磚。lakehouse是一個簡單而開放的數據平台,用於存儲和管理所有數據,支持所有的Beplay体育安卓版本分析和AI用例。在這裏,數據科學家、數據工程師、ML工程師和分析師可以協作準備和分析數據,構建模型並將其部署到生產中。
今天,我們將重點關注數據科學家,正如你們在這裏看到的,他們試圖從健康指標數據來解釋預期壽命。在這個過程中,我們將看到我們的平台如何支持從數據攝取到生產的整個生命周期。Beplay体育安卓版本
點擊展開文字記錄→
點擊可折疊文字記錄→
你在這裏看到的基於Notebook的環境是Databricks。您可以編輯、運行和共享代碼、文檔、可視化和輸出多種語言。筆記本可以連接到現有的集群,或者,如果需要,可以旋轉一個新的集群。
我們將分三個部分來研究這個問題:數據訪問和準備、建模和解釋,以及最後的部署。在這裏,我們隻簡單回顧一下Databricks中數據工程師的工作。她的目標是使原始數據可用。這包括修複輸入中的錯誤,或者標準化表示,並連接不同的數據以生成供建模師和分析人員使用的表。
這裏的輸入隻是來自世界衛生組織和世界銀行的CSV文件,以及額外的藥物過量數據集,我們包括瀏覽為一個因素。並且它們可以直接讀取,從分布式存儲作為Spark DataFrame。請注意,這些數據源可以像SQL數據庫或JSON文件或拚影文件一樣容易地播放。在CSV的情況下,可以自動讀取或推斷模式。
這些文件包含16個發達國家在過去幾十年裏的大約2000種不同的健康和人口特征。研究的目標是了解這些特征如何預測預期壽命,以及哪一兩個特征是最重要的。
因此,數據工程師可能願意在SQL和Scala中工作。除了Python和R,數據科學家可能更願意,Databricks還支持這些數據。甚至可以在一個筆記本中使用。
沿途,即使是數據工程師也可以用SQL查詢數據,並查看類似於此類可視化的結果。他們可能希望早日看待數據,我們看到,2000年至2016年期間預期潮流的趨勢看起來與美國不同。它很低,下降。問題是為什麼。
因此,在數據工程工作流程的最後,三個數據源被連接在國家和年份上,並寫入一個注冊的Delta Lake表。因此,對於數據科學家來說,這種表述並沒有產生太多直接的影響。它隻是一個表,可以像其他任何數據源一樣讀取。但是Delta Lake提供事務性寫操作,並允許數據工程師更新和修複來自壞消息的數據,或者優雅地修改模式,或者對數據實施某些約束。這對數據科學家來說很重要。
任何麵對數據庫中可能以微妙或無聲的方式破壞或改變的轉儲數據建模的人,都會意識到這些因素可能導致下遊的真正的數據科學問題,而Delta Lake可以幫助解決這些問題。
或者,舉例來說,考慮需要準確地回憶用於生成治理或可重複性模型的數據。以Delta Lake表的形式管理數據允許數據科學家查詢上一個時間點的數據。這當然有助於再現性。請注意,每個人都可以在這個筆記本上協作,可能會留下類似這樣的評論。
所以,我們從數據科學家的世界中挑選。她的目標是探索數據,進一步豐富和細化數據,以便在這裏進行特定的分析,並生成另一個用於建模和生產部署的特征化數據表。因此,合作的開始很簡單:讀取數據工程師生成的這個數據表。本筆記本使用Python,其生態係統可能對數據科學更熟悉,也更有用。不過,Spark API是相同的,數據表也以完全相同的方式可用。
現在你不必隻使用Spark和Databricks。例如,在返回Spark之前,我們切換到Pandas來填充一些缺失的值。您也可以為利用熊貓的Spark定義高效的udf或用戶定義的函數。
Python生態係統也提供了可視化庫,同樣,使用Databricks,你也可以隻使用這些庫。像Matplotlib和Seaborn這樣的常用庫已經內置在ML運行時中,其他庫也可以很容易地添加。
在這裏,數據科學家使用Seaborn生成了一些特征的一對圖表,如預期壽命、識字率和人均阿片類藥物死亡。它可以突出相關性,比如人均醫療支出與GDP之間的相關性,還可以揭示一個明顯的異常值。因此,在阿片類藥物死亡方麵,美國將再次成為例外。
經過一些額外的功能化,數據被寫為另一個Delta湖桌。
現在,數據集足夠小,可以使用XGBoost和Pandas這樣的工具進行操作和建模,這些工具都已經在運行時中可用了。但Spark在不久之後仍將發揮重要作用。
數據科學家在這裏使用XGBoost開發建模代碼。它將作為輸入中留下的千分之一的函數來回歸壽命。但構建模型真的意味著構建數百個以便發現模型的超參數的最佳設置。
通常,數據科學家可能會對這些值執行網格或隨機搜索,然後等待數小時,而平台會連續地搜索每個值。Beplay体育安卓版本然而,Databricks在運行時提供了一個名為HyperOpt的貝葉斯優化框架,這是一種現代而高效的並行搜索方式。
所以給出了搜索空間,Hyperopt在群集中並行運行模型的變化,從而學習,因為它的設置越來越好。Hyperopt可以使用Spark並行運行這些變化,即使此處的簡單建模不需要Spark本身。這種並行性可以大大降低這些超參數搜索所采取的壁鍾時間。
使用MLFLIPS在DataBreicks中自動跟蹤結果。這提供了快速查看在此筆記本中創建的建模運行。我們可以進入實驗視圖。
這是MLFLOW跟蹤服務器,此實驗顯示了這些試驗的更詳細概述。我們可以使用它來搜索運行,甚至將它們與此處進行比較。例如,我們可能希望使用並行坐標繪圖進行比較所有運行。通過這種方式,弄清楚Quand參數的哪種組合似乎產生了最佳損失。
例如,這個詳細視圖還顯示了誰創建了模型,使用了什麼版本的筆記本,創建的時間,以及包括丟失在內的超參數的所有詳細信息。它還包括模型本身,以及數據科學家創建的特征重要圖。
現在可以將模型注冊到model Registry中,作為當前的“分期候選”模型進行進一步的分析。模型注冊中心是由Databricks管理的一個集中的邏輯模型存儲庫。它管理該模型的工件和版本,並通過登台到生產來管理它們的提升。
這個特定的模型有幾個被注冊為相同邏輯模型版本的版本,它們可以存在於像Staging和Production這樣的狀態中。模型注冊表也可以在左側導航欄中訪問。
而不是管理模型,例如,係數寫在一些文件的列表,或pickle文件存儲在一個共享驅動器,注冊了更正式的工作流模型不僅在跟蹤模型的構件,但是哪些是準備生產部署階段。
因此,接下來,經理可能會回顧模型和情節。這是一個由Shap創建的特征重要性圖,它顯示了對預期壽命影響最大的特征是癌症、糖尿病和心髒病的死亡率。藍色的低死亡率,表示較高的預期壽命似乎可以解釋正1到負1.5年的預期壽命。其次是“年”,它反映了隨著時間的推移,健康狀況改善的許多累積效應,這一點並不令人意外。
因此,請注意,藥物相關的死亡似乎並不是整體的最佳解釋特征 - 其他疾病仍然是占主導地位的。因此,在審查模型和其他地塊之後,經理最終可能批準此模型以進行生產。
部署工程師在這裏接管。她從模型注冊表中加載最新的生產模型,該模型已被批準用於部署。但是,MLFLUP會自動將其轉換為火花UDF或用戶定義的函數。這意味著它可以應用於尺度與Spark,隻需一行代碼。
現在,這可以在批量評分工作或具有流媒體工作中同樣工作。因此,將其與例如軟件工程師的模型或甚至隻能將其進行比較,以嚐試將模型遞送到軟件工程師中,以便正確地重新實現作為在生產中運行的代碼。這裏的數據科學家的確切模型是由生產工程師提供的,而且翻譯中沒有任何東西丟失。
因此,以生產工作為例,數據應用於2017年至2018年的輸入,而預期壽命的數字是未知的。這可以結合到2016年的數據來完成我們之前看到的圖表,顯示出推斷出的趨勢。
現在,請注意,這不僅可以在Python中作為UDF注冊,而且可以在SQL中注冊。所以請注意,預測出現相當平坦。但這主要是因為在以後的幾年內缺少了超過一半的功能數據。此模型也可以部署為REST API或作為Amazon Sagemaker或Azure ML的服務。
因此,這是一個簡單的例子,說明Databricks如何支持從數據工程到數據科學和建模的整個生命周期,以及最後的MLOps任務,如模型管理和部署。
準備好開始了嗎?