MLOps虛擬事件
可按需
隨著組織不斷發展他們的機器學習(ML)實踐,對能夠處理整個機器學習生命周期的健壯可靠平台的需求越來越大。Beplay体育安卓版本mlop的出現是有希望的,但仍存在許多挑戰。
現在注冊,觀看Databricks麵向自動化mlop的最新發展——包括新的Git和CI/CD集成,實驗的自動記錄,模型可解釋性和模型服務。
我們還將介紹:
- 從領域專家到大規模操作ML的最佳實踐,從實驗到生產
- 您將需要的功能、常見缺陷以及技術和組織挑戰(以及如何克服它們)的清單
隨著組織不斷發展他們的機器學習(ML)實踐,對能夠處理整個機器學習生命周期的健壯可靠平台的需求越來越大。Beplay体育安卓版本mlop的出現是有希望的,但仍存在許多挑戰。
現在注冊,觀看Databricks麵向自動化mlop的最新發展——包括新的Git和CI/CD集成,實驗的自動記錄,模型可解釋性和模型服務。
我們還將介紹:
演講將通過演示、成功故事和專家的經驗得到加強,這些專家已經為預測分析部署了此類管道的真實例子。現場問答和討論將使本次活動吸引數據科學從業者和領導者。
議程
開幕式主題
產品演示
客戶的故事
現場問答
活動信息:
可按需
演講者:
演講者1:
數據很大,但它的潛力更大。與人工智能數據相結合,有望治愈疾病、拯救生命、扭轉氣候變化,並改變我們的生活方式。我們相信,未來取決於數據,並釋放其無限的潛力。我們就是來實現這一目標的。
演講者1:
Databricks是一家數據和人工智能公司。我們幫助數據團隊、工程師、分析師和科學家共同努力,發現數據中的價值,並解決世界上最棘手的問題。因為我們作為企業、作為人、作為一個星球所麵臨的挑戰並不容易。它們不能孤立地解決。這不是一個人能解決的。我們需要所有的數據,所有的科學,所有的腦力。我們需要所有人齊心協力,在一個地方。在唯一一個用於數據管理、商業分析和機器學習的開放統Beplay体育安卓版本一平台上,這改變了一切。它擴展了我們對可能性的認識。這讓事情變得簡單。 It turns weeks into minutes. So data teams can innovate faster, because that’s how innovation should happen. Collaborative and fast.
演講者1:
所以讓我們拋開假設。打破常規。繪製每個基因組。治愈所有癌症。瘋狂地觀看宇宙。洞穴般的黑洞。讓每一個聲音都被聽到。破解黑客。(聽不清00:01:33)。進行更多的登月計劃並讓它們著陸。
發言人2:
天堂已經成為人類世界的一部分。
演講者1:
從現在起,你和你的數據、你和答案之間沒有任何障礙,因為數據的力量就是了解的力量。現在你知道了。
西爾維婭Simion:
歡迎每一個人。感謝您參加我們的MLOps虛擬活動。我叫西爾維亞·西蒙。我在Databricks做產品營銷,我很高興今天能作為你們的主持人來到這裏,也很高興能和我們的演講者一起,因為我們有一個非常令人興奮的陣容,他們為你們準備了一些很棒的演示和演示,討論並向你們展示如何更好地大規模地運行和自動化機器學習的最佳實踐和技術。所以我真的希望你能喜歡聽他們的演講,並更多地了解不同環境下的機器學習實踐。
西爾維婭Simion:
我們將以開幕主題演講和演示拉開帷幕,隨後將有來自H&M、JB Hunt和Artis Consulting的發言人發言。然後我們將在活動結束時進行現場問答,但首先是一些內務和後勤工作。
西爾維婭Simion:
在整個網絡研討會期間,您的音頻連接將被靜音,我們聽不到您的聲音。這一事件的記錄將會提供。請務必訪問Databricks博客了解詳細信息。為了給觀眾最好的體驗,所有的談話都事先錄好了。也就是說,我們把這設計成一個高度互動的活動。我們的發言人和一些來自Databricks的工程師在現場回答問題。如果您在此活動期間有任何問題,請使用聊天框,這是平台的一部分。Beplay体育安卓版本我們還將在活動結束時進行現場問答環節。如果您對某位主持人有疑問,請在提問中注明,我們將直接向相關人員提問。
西爾維婭Simion:
對於那些不熟悉Databricks的人來說,我們的公司是由Apache Spark的最初創造者在七年前創建的。我們的使命是幫助數據團隊解決世界上最棘手的問題。我們的業務專注於通過將整個組織的數據工程師、數據科學家和分析師聚集在一起,幫助企業加速創新。很多人認為我們是一些最好的開源技術的創造者和創始人,從Spark開始,還有Delta Lake, MLflow,最近我們還收購了Redash。
西爾維婭Simion:
讓我們開始吧。讓我們開始吧。我們今天的日程排得滿滿的。我們關於MLOps和ML平台行業現狀的開幕主題演講將由DatabrickBeplay体育安卓版本s的Matei Zaharia和Clemens Mewald發表。Matei和Clemens之後是Sean Owen,他將在Databricks上使用MLflow為Pytorch演示端到端MLOps。
馬泰Zaharia:
大家好,歡迎來到MLOps虛擬活動,大規模自動化機器學習。因此,我認為正如本次網絡研討會上的每個人都意識到的那樣,機器學習正在改變許多主要行業,從醫療保健到物流,再到工業物聯網。旅遊公司已經部署了數千個甚至數百萬個模型來管理日常運營。但與此同時,機器學習與傳統軟件有很大不同,開發和操作機器學習應用程序是複雜的。讓我們來看看它的不同之處。首先,就目標而言。傳統軟件的目標通常隻是滿足某種功能規格。例如,當你按下這個按鈕時,你為某人創建了一個帳戶。基本上這是一個布爾目標,你要麼達到了目標,要麼沒有。一旦你做到了,你就有了可以工作的軟件,就是這樣。 It’s going to keep working.
馬泰Zaharia:
另一方麵,在機器學習中,目標通常是優化預測精度等指標。所以這是你永遠不會完全完成的事情。總有辦法讓他們變得更好。它也可能隨著世界的變化而改變。我們的第二個重要區別是影響質量的因素。在傳統軟件中,軟件的質量隻取決於你所編寫的代碼。你可以檢查代碼,你可以調試它,在某些時候你可以說,好了,它完成了,然後應用程序將繼續正常工作。
馬泰Zaharia:
相比之下,在機器學習中,根據定義,機器學習是從你可以給它們訓練的數據集中泛化的程序。因此,質量很大程度上取決於訓練數據,而這些數據必須隨著時間的推移而變化,因為你周圍的世界在變化,所以你的應用程序的質量也會發生變化。此外,當您更改數據時,現在您可能還需要更改算法的調優參數,這是額外的複雜性。所以很難說,一旦我寫完代碼,我就完成了應用程序,你必須不斷地用新數據訓練它,不斷地調優它,以獲得最好的性能。
馬泰Zaharia:
最後,讓我們看看您使用什麼樣的軟件來構建應用程序以及如何管理它。在傳統軟件中,通常隻選擇一個軟件棧。例如,你選擇一個數據庫,你選擇一個web服務器框架,你選擇一個UI框架等等,然後你隻用這些來構建你的應用程序,就是這樣。
馬泰Zaharia:
相比之下,在機器學習中,因為你的目標是優化某種指標,你總是希望能夠試驗新的庫,新的算法,做你管道的不同部分,也許以一種新的方式組合它們來做相同的測試,因為如果你能將預測精度提高0.5%,0.25個百分點,這對你的業務可能會產生非常大的影響。所以你需要機器學習的基礎設施,讓它很容易切換和試驗不同的庫和算法,不像傳統的軟件。因此,由於這些差異,操作機器學習應用程序非常複雜,這就是為什麼它產生了整個mlop領域。
馬泰Zaharia:
首先,涉及到許多團隊和係統,因為應用程序不僅涉及由ML工程師編寫的一些代碼,還涉及提供事件的數據管道,以及將模型集成到應用程序中的一些工作,然後監視它的行為並提供反饋以改進它。所以它至少涉及到這三個不同的團隊,有時可能需要更多的合作。
馬泰Zaharia:
其次,應用程序需要不斷地更新數據,你需要不斷地計算和重新計算指標,以了解它的運行情況。所以你需要的不僅僅是一個由背後的一整套數據管道運行的應用程序,這些數據管道不斷地為它提供信息,不斷地對它進行再訓練,並確保它以最高效率工作。
馬泰Zaharia:
最後,對於機器學習,從開發環境轉移到生產環境是相當困難的,因為在開發過程中,你要試驗這麼多不同的庫和方法,你需要以某種方式以可複製的方式捕獲它,並在生產環境中運行或在應用程序中運行,並確保它產生相同的結果。
馬泰Zaharia:
由於這些複雜性之一,我們與業內許多機器學習團隊交談時發現,他們經常不得不花費一半的時間來維護他們已經投入生產的現有模型。而且他們沒有太多的時間來開發新模型。因此,提出一個MLOps過程是非常重要的,它可以盡可能多地實現自動化,這樣這些團隊就可以真正地進行創新,而不僅僅是花時間照看這些模型,並確保它們今天至少和昨天一樣好。
馬泰Zaharia:
因此,他們對這些挑戰的回應是一種全新的軟件,稱為機器學習平台,它有軟件來管理機器學習的開發和操作過程,從實驗數據到生產。Beplay体育安卓版本到目前為止,相當多的公司已經建立了內部ML平台。Beplay体育安卓版本一些例子包括穀歌、Facebook和Uber等最大的網絡公司,但許多其他企業也在建設中。開源社區也做了很多工作來設計它們,特別是Databricks,我們啟動了MLflow,這是這個領域中使用最廣泛的開源項目之一。這些ML平台通常提供一係列Beplay体育安卓版本功能。它們可以包括數據管理、實驗管理、減法度量、模型管理,以允許您共享模型,以及使部署模型以進行推斷或重現模型或測試監控和應用變得非常容易的功能。它們通過一致的接口來完成所有這些工作,這樣您的團隊就可以采用它們,並以相同的方式使用不同的模型,並不斷為特定的測試尋找並改進最佳模型。
馬泰Zaharia:
在ML平台中有很多不同的組件,但我想談談的一件事是,哪些頂級功能可以決定ML平台的成功或失敗Beplay体育安卓版本,並真正使它們更加成功。因此,根據我們與數千家使用ML的組織合作的經驗,我們發現了三個您應該考慮的非常重要的特性。首先是數據科學家、工程師和模型用戶易於采用ML平台。Beplay体育安卓版本基本上每個人都會參與到這個過程中。所以你需要詢問他們需要做多少工作才能使用這個平台,特別是如果他們有現有的代碼或現有的數據管道或現有的應用程序,你想采用這個平台。Beplay体育安卓版本你還需要問它支持什麼機器學習庫,什麼部署環境等等。
馬泰Zaharia:
這些事情中的大部分都會產生巨大的不同。如果平台易於采Beplay体育安卓版本用,那麼數據科學家、數據工程師等將開始使用它,您將開始從管理和操作數據應用程序的主要方式中獲得所有這些好處。如果很難接受,這將是一場艱苦的戰鬥,人們可能會認為開始使用它太麻煩了。這是我們嚐試優化的主要內容之一,例如MLflow。
馬泰Zaharia:
第二個重要因素是與數據基礎設施的集成。正如我所說的,機器學習應用程序都以數據為基礎,對於機器學習團隊來說,想要返回並更改數據管道、收集新類型的數據等或自己管理數據集是非常常見的,例如,創建版本,以便他們可以進行可重複的模型訓練和實驗。
馬泰Zaharia:
因此,對於MLOps基礎設施來說,與數據基礎設施、新功能(如數據移動、監控、治理和API集以及用戶界麵)集成是非常重要的,這些新功能可以使數據人員和機器學習工程師輕鬆協作。當然,這也是我們花費大量精力的地方。
馬泰Zaharia:
我們發現的最後一件非常有用的事情是擁有協作功能,允許團隊在公司內部的中心位置共享代碼、數據、功能、實驗和模型。當然,這樣做是安全的,這樣你就可以控製誰可以訪問什麼。這是因為許多機器學習項目可以從以前的項目中受益。也因為涉及到很多不同類型的密鑰和用戶,所以對於人們來說,能夠找到一個模型的最新版本,或最新版本的數據集等等,並可靠地在其上進行構建,而不是僅僅通過電子郵件發送確切的文件等等,這是非常重要的。
馬泰Zaharia:
這些教訓激勵了我們支持mlop和數據庫的方式,然後也激勵了我們團隊開發的開源項目。所以基本上我們關於mlop的理念是雙重的。首先,我們認為每個組織的需求都會略有不同,因為他們的業務內部,他們擁有的數據,或者他們擁有的專業知識等等,它會隨著時間的推移而改變,因此,我們可能會提供一個非常通用的平台,很容易與你公司中可能有的各種工具集成。Beplay体育安卓版本這允許你隨著時間的推移改變你如何進行機器學習的細節,並且仍然有一個主要的方法來管理它,以及一個主要的方法來讓團隊使用和操作你使用ML構建的應用程序。我們可以通過使用三個支柱來做到這一點。
馬泰Zaharia:
第一個是Databricks的Workspace,它基本上是一個統一的開發環境,數據科學家、機器學習工程師、數據工程師和分析師都可以在這裏合作處理相同的數據和相同的代碼,這有助於我們保持一致。然後是兩個開源項目,Delta Lake是雲存儲的數據管理層文檔,它是提供事務版本控製的Amazon S3,以及一大堆豐富的管理特性,可以讓您輕鬆地在團隊中使用這些大型數據集。MLflow是一個開源的機器學習平台,你可以與許多流行的編程語言、庫、部署工具等集成,來完成我所說的Beplay体育安卓版本很多功能,比如實驗管理、監控、集中共享模型等。
馬泰Zaharia:
因此,在本次網絡研討會上,我們將更詳細地討論mlop的需求和其中一些技術。我們將討論我們和其他組織是如何大規模執行mlop的。我們將有一些演示來展示這一點,以及我們的兩個大型ML客戶的經驗,關於他們在這個過程中學到了什麼。beplay体育app下载地址最後,我們將在節目最後與主持人進行現場問答。我希望你們喜歡這次網絡研討會。
克萊門斯Mewald:
好吧。馬泰,謝謝你的概述。我將向您介紹Databricks如何解決其中一些問題。所以Databricks提供了很多不同的功能,但在這次演講中,我想從ML平台的角度來看待Databricks。Beplay体育安卓版本所以在這次演講中,我將逐一介紹這些盒子,並描述Databricks如何解決這些挑戰。我們將從數據科學工作區開始。數據科學工作空間實際上是數據工程師、數據科學家、ML工程師和數據分析師可以聚集在一起,就世界上最棘手的問題進行合作的環境。使用筆記本的數據科學工作空間中的核心用戶界麵。而Databricks也有相當獨特的筆記本產品。
克萊門斯Mewald:
首先,它實際上支持多語言。這意味著每個筆記本都有一種默認語言。你可以看到這是一個Python筆記本。這意味著筆記本中的每個季度,默認情況下都將被解釋為Python,但每個單元格實際上都可以聲明自己的語言。所以你可以在同一個筆記本上閱讀Scala、SQL、Python或R語言。這不僅給了你很大的靈活性,而且還促進了合作。因此,數據工程師可以在同一個筆記本上使用Scala,而數據科學家可以使用Python。這些筆記本也有雲原生協作功能,你可以從其他產品中使用這些功能,比如在筆記本中進行評論。beplay娱乐ios當你共享一個筆記本電腦時,我們有一個功能叫做“共同存在”,你有一個“共同存在”指示器,它會告訴你其他人在同一個筆記本電腦上。如果這個人有編輯權限,你可以實時看到他們的光標和他們的編輯。 So you can really in real time collaborate on the same notebook and on the same code.
克萊門斯Mewald:
現在,筆記本電腦非常適合探索和實驗,但我們也想確保我們能促進將其投入生產。因此,我們引入了一個名為基於Git的項目的新功能,它允許你將[聽不清00:17:58]數據輸入Databricks,然後將數據輸入你的筆記本,輸入你最喜歡的Git提供商,通過代碼審查過程,運行一些測試,運行任何你能想到的CSV自動化,然後將它們帶回Databricks運行生產作業。因此,這真的結合了筆記本電腦的靈活性與CSV和軟件部署係統的嚴謹性。
克萊門斯Mewald:
現在,一旦你有了兩個數據科學工作空間,你真正關心的下一件事是確保你可以訪問所有的數據。因此,Databricks提供了一個非常獨特的產品,叫做Delta Lake,這也是一個開源產品,但也集成到平台中。Beplay体育安卓版本Delta Lake在您的Delta Lake之上提供了一個事務層,因此您的數據保存在您選擇的數據湖中,並且在此基礎上為您提供額外的好處。
克萊門斯Mewald:
首先,您可以從任何來源攝取任何規模的任何格式的數據。所以不管它是CSV文件還是pre-K文件或CSV文件,你都可以攝取它們並使用Delta Lake格式。Delta Lake提供資產交易來實際保證數據的有效性。所以你對Delta表做的任何攝取和任何改變,實際上都會創建一個新的事務,這也促進了一個被稱為時間旅行的特性。因此,每次事務發生時,我們將版本號加到寫頭日誌中。然後你總是可以回到過去,因此得名,並查看特定版本的數據,因為我們忽略了在那個版本之後發生的交易,這是一個非常獨特的功能,實際上有利於再現。為了與MLflow集成,我們實際上創建了一個自動日誌記錄您使用的數據和版本信息。我會在後麵的幻燈片上更詳細地展示給你們。
克萊門斯Mewald:
所以在Databricks,我們真的想專注於訓練機器學習模型。因此,機器學習運行時提供了一個無需devops的環境,該環境是為機器運行預配置和優化的。我們在截圖中提供了幾種不同的口味。你看,我選擇GPU運行時,它為你設置了所有的驅動程序和配置,所以你可以開始工作。當你選擇它時,你隻需要在你選擇的雲上選擇一個[聽不清00:20:24]類型。然後你可以繼續訓練你的GPU模型。
克萊門斯Mewald:
現在,我們在這些運行時中打包了什麼?我們打包了最流行的ML庫。包括TensorFlow、Keras、Pytorch、Scikit-learn,當然還有MLflow。它是在機器學習運行時預配置和預安裝的。我們定期發布機器學習運行時,以確保所有這些都是最新的。我們進行了嚴格的測試,以確保所有這些都能很好地協同工作。您不必擔心自己設置這些環境。我們還包括庫,以更容易地分發您的機器學習,深度學習庫。在這張幻燈片之後我還有一張幻燈片。當然,我們也為超參數調優和autoML構建了庫,我會在一兩張幻燈片中講到。
克萊門斯Mewald:
因此,對於我們的分布式訓練,我們實際上在運行時將支持內置到機器學習中,以分發Keras、TensorFlow和PyTorch模型。當然,你總是可以訓練它們並評估在Spark上分發的模型,但是Horovod運行一個特定的用戶庫,幫助你分發Keras、TensorFlow和PyTorch模型。然後我們還引入了對TensorFlow原生分發策略的支持,這是在TensorFlow 2.0中引入的。
克萊門斯Mewald:
然後對於超參數調優,我們集成了一個叫做Hyperopt的庫,它有一個非常簡單的界麵。我們隻是配置了一個搜索空間,然後你把這個函數叫做admin,然後我們用這個叫做SparkTrials的API擴展了它。如果你隻使用Hyperopt這個開源庫,它會依次運行所有這些試驗。但是在SparkTrials中,我們實際上使用了一個集群來並行試驗,這裏你可以看到大約六個試驗並行,總共有96個試驗。同樣,這並不需要是一個Spark模型,所以你可以在通過它的指令中訓練一個Scikit-learn模型。然後我們基本上隻用Scikit-learn模型同時用不同的超參數訓練六個不同版本的模型。你也會在後麵的幻燈片中看到,但是它會自動與MLflow集成。所以你可以在MLflow中免費跟蹤所有的超參數訓練。
克萊門斯Mewald:
現在你的模型已經訓練好了部署選項是什麼?MLflow確實提供了一組非常靈活和豐富的開箱即用的部署選項。在這張幻燈片上,您可以看到的隻是一些受支持的ML框架的示意圖,如何將其作為MLflow模型記錄在MLflow跟蹤服務器中,然後由MLflow注冊中心管理部署。然後你真的有很多不同的選擇來部署這些模型,無論是docker容器,Spark UDF作為休息端點,還是使用一些開源庫。讓我雙擊其中一個選項,突出顯示關於使用MLflow部署模型的重要部分。
克萊門斯Mewald:
因此,這是用於部署作為MLflow模型記錄為spark UDF的ML模型的核心方法。正如你在這裏看到的,你隻是加載它,在這裏你會引用模型注冊表中的模型,通過名稱和生產階段,然後你把它應用到一個數據幀。這適用於Spark MLLib模型。現在讓我們看看Scikit-learn是什麼樣子的。這是用於Scikit-learn模型的代碼行,這是用於TensorFlow模型的代碼行。為了戲劇效果,讓我回到Spark MLLib, Scikit-learn, TensorFlow。我想你已經注意到了,是的,它們都是一樣的。MLflow格式的好處之一是它有一個稱為Pyfunc的抽象,它將任何ML模型公開為Pyfunc函數。
克萊門斯Mewald:
所以所有的部署選項看起來都是一樣的。所以不管這個模型是用Spark MLLib、Scikit-learn、TensorFlow訓練的,它的工作原理都是一樣的。同樣的語句也適用於所有的部署選項。因此,為MLflow模型構建Docker容器是一樣的,不管我們使用的是什麼MLflow框架。所以這真的很方便,特別是因為我還沒有看到一個企業隻使用一種類型的框架。
克萊門斯Mewald:
既然我們已經討論了完整的整個流,那麼讓我們實際看看MLflow提供的所有這些的基礎,並為您提供端到端mlop和治理功能。在MLflow中,我們引入了這個功能,我們稱之為自動日誌記錄。因此,我們可以自動跟蹤盡可能多的關於您的工作的信息,這與我前麵提到的跟蹤數據源和版本控製相結合。如果你使用數據表
克萊門斯Mewald:
數據源和版本控製的支持。因此,如果您使用數據表,我們將跟蹤您所使用的表本身和前麵描述的版本號。有了這個,你就可以回到事實之後,說,我想看看我在訓練中使用的數據和我當時使用的版本是一樣的。這些信息是自動登錄的。順便說一下,我們確實會掛鉤到Spark數據源API。所以這適用於任何Spark數據源,如果你讀取一個CSV文件,它也同樣有效。然而,當然,如果你閱讀一個CSV文件,我們不需要版本控製和它的時間旅行功能。現在我們也開始為這些模型捕獲模式。
克萊門斯Mewald:
所以你可以看到一個我們必須輸入模式的例子,然後是模型預測列的類型,這在很多方麵都對我們有幫助。其中之一是模型部署。我們實際上可以檢查模式是否與模型的部署時間兼容。這隻是展示了所有Mlflow框架的基本功能,比如自動跟蹤。因此,對於所有這些Mlflow框架,如果您訓練了一個模型並在Mlflow中使用自動日誌記錄,那麼您將獲得所有參數、以百分比為基礎的指標以及我們可以為您自動記錄的所有工件。正如您所看到的,這適用於所有流行的Mlflow框架。
克萊門斯Mewald:
這就是我之前展示的,超參數調優搜索的自動記錄,然後我們可以在平行坐標圖中可視化它。理解這個的方法是每一行都監測試驗。它們是用顏色編碼的優化指標,也就是損失。所以你可以看到所有的藍線都有一個損失,然後你可以直觀地看到每個參數的哪個值實際上會導致一個高質量的模型。同樣,如果你在Databricks上使用機器學習進行參數調優,這將被自動記錄。
克萊門斯Mewald:
我們還開始實現模型可解釋性的自動跟蹤。所以使用一個非常流行的叫做SHAP的庫,我們根據你訓練模型的方式來計算特征的重要性。然後,如果你做一些事情,比如訓練一個圖像模型,我們實際上可以根據圖像中哪些區域有助於預測,來可視化未來的重要性。這是非常強大的,它可以讓你深入了解你的模型在訓練時的表現。
克萊門斯Mewald:
當然,除了所有男性特有的特征,我們還跟蹤代碼本身。當你訓練它的時候,在代碼的簡短版本中,你運行模型時使用的計算機的經典配置,以及你使用的庫的環境配置術語。
克萊門斯Mewald:
一旦模型準備好部署,就可以在Databricks中使用模型注冊表了。這是模型的截圖,在Databricks中注冊的托管模型,在那裏你可以找到模型,它們的版本,以及這些版本在哪個部署階段。我們實際上在每個階段都有多餘的控製來促進不同階段之間的轉換,我們將在下一張幻燈片中看到。
克萊門斯Mewald:
因此,您可以看到,我們在向模型的特定階段請求條件方麵進行了治理。如果有人沒有訪問控製來實際進行轉換,他們隻能看到請求的選項。當然,我們會保留一個審計日誌記錄所有發生在模型上的事情。我們最近也在這裏實現了評論,在這裏你可以評論並與你的同事合作管理這些模型的部署過程。
克萊門斯Mewald:
這張截圖來自某產品和Databricks。這是將Mlflow模型部署為休息端點的最簡單方法。您單擊一個表示啟用服務的按鈕,然後我們打開一個集群,並將模型作為休息端點公開,它還自動知道它們的所有版本和部署階段。所以如果你調用模型名斜杠生產端點你總是會得到你的請求總是會被路由到標記為生產的版本。這隻是一個輸出的屏幕截圖,實際上是使用Spark流進行實時模型監控。這實際上是在計算一個流AMSE,當新的預測和標簽進來時告訴你模型的質量。
克萊門斯Mewald:
所以你可能會猜到,當我們瀏覽所有這些信息時我們一直在跟蹤,我們基本上是在檢查他們在這個重複性檢查表中的所有評論。我們有你用過的代碼你用過的數據,集群配置,你用過的環境規範。所以如果你真的實現了一個可複製的特性,允許你在我們生成你使用的代碼之後,如果你使用了數據表,我們知道你使用的數據版本,我們可以為你重新創建集群或使用精確的配置。我們還可以重新創建你在自己的一端擁有的確切的環境和庫配置,這是非常獨特的,這是因為他們實際上跟蹤所有這些信息,從數據到模型部署。以上就是Databricks作為ML平台的簡要概述。Beplay体育安卓版本接下來,我要把它交給肖恩我們會給你們一個實際產品的演示。
肖恩·歐文:
大家好。我是肖恩·歐文。我是Databricks的主要解決方案架構師,今天我在這裏向您展示Databricks中MLflow的一些新特性。這些功能包括Webhooks和注冊表服務,以及Pytorch和SHAP的新自動日誌功能。但在此過程中,我還想向您展示如何使用我認為的一些有趣的方法,您可以應用這些工具,如Pytorch和SHAP,甚至Delta Lake來解決這個問題。這裏具體的問題是分類圖像,胸部x光片。這些是由國家健康研究所提供的這些數據實際上成為了Kaggle競賽的一部分。所以隨著圖像,我們有標簽,它們是14種不同診斷中的一種或多種,表明x光片可能顯示什麼,在這些情況下胸部可能有什麼問題。這裏的任務是學習,給這些圖像貼上標簽,也許還能解釋為什麼要這樣標記。當然,在這個過程中,我們將使用MLflow來幫助我們。
肖恩·歐文:
提醒一下,我不是醫生,你可能也不是我們要建立的模型很簡單。這可能還不足以用於臨床。這並不一定足夠準確。所以請不要根據這個診斷。不要在家裏嚐試,但我希望它表明這種學習和解釋是非常可能的。就像所有的事情一樣,我們從數據開始,我不會在數據上花太多時間,但我想向你們展示像Delta Lake這樣的技術如何幫助處理所謂的非結構化數據,比如這裏的圖像。你們可能知道,Delta是Lakehouse架構和Databricks的基礎,這意味著你可以做一個大規模操作的數據倉庫,但你也可以在同一個地方分析非tip表格數據,比如圖像,Delta在這兩方麵都能提供幫助。
肖恩·歐文:
我們將從用Spark讀取圖像開始Spark可以很容易地讀取一個滿是圖像的目錄,當我們在Databricks中加載這些時,我們會得到漂亮的縮略圖。然而,我們可能不希望隻是用Spark讀取圖像,而是繼續,然後ETL到Delta表中。所以為什麼?Delta對一個人來說是交易性的。這意味著我們在讀取圖像時不需要擔心是誰在向圖像表寫入數據。它還提供時間旅行。這讓我們可以返回並查詢這個圖像數據集在前一個時間點的狀態。也許當我們三周前建立這個模型時,我們可以查詢那個時候的表。
肖恩·歐文:
但也許更重要的是,深度學習通常涉及某種程度的預處理。我們必須規格化圖像,大小,深度和通道,也許我們希望隻做一次,而不是一遍又一遍地通過數據來建立模型。而且在雲中,一遍又一遍地讀取一堆小文件會有點慢,一直列出這些存儲桶。因此,如果我們必須一遍又一遍地讀取這些blob,那麼ETLing一旦進入一個表,就可以從一個漂亮的壓縮有效的數據存儲(如Delta)中讀取這些blob,這可能具有速度優勢。
肖恩·歐文:
因此,為了達到這個目的,我們將從這一點開始。我們會同意這些圖像,但也會快速地ETL它們成blob我們還需要加載與這些圖像相關的元數據,標簽,並對它們進行一些解析以獲得每個圖像的不同標簽,然後簡單地將它們連接起來。連接圖像數據和標簽後,我們可以簡單地將其寫成Delta表並將其注冊到Meta存儲中。如果我們願意,我們應該可以在這裏看到這個例子。好了,我們沒事了。我們有圖像,專欄,以及大約14種不同的可能診斷。回到筆記本上。
肖恩·歐文:
現在我們來看一下建模的問題。在本例中,我們最終將使用MLflow,因為我想向您展示MLflow如何與Pytorch集成。實際上MLflow集成了一個叫做Pytorch Lightning的東西。因此,對於Pytorch用戶來說,使用Pytorch通常意味著編寫大量的樣板代碼來描述訓練循環並手動運行。Pytorch Lightning將其中的一些內容抽象出來。所以你不需要寫一些樣板文件你可以把關鍵部分寫在這裏。我們馬上就會講到。
肖恩·歐文:
從這裏開始,我們要讀取這個圖像表。由於它沒有那麼大,大約有2.2 gb。我們要把它拉到一隻熊貓。在開始訓練之前做一個簡單的訓練測試。現在,我要說的是,您可以將相同的方法應用於更大的數據集。你可以使用Pytorch和一個叫做Horovod的工具在Spark之上分發訓練。但為了簡單起見,這裏我們不這麼做。我們隻是在一台機器上訓練這個相對較小的數據集。
肖恩·歐文:
我們將在這裏定義幾個輔助函數。Torchvision是Pytorch的配套包,它允許您定義輸入所需的一些附加轉換。例如,在這裏我們需要稍微轉換一下圖像的通道順序,並以一種正確的方式將它們規範化,以便於我們將應用於模型的預訓練層。這是一些細節,但火炬視覺幫助會幫助我們。Pytorch用戶同樣知道,要訪問數據,通常需要定義一個數據集類,該類定義了數據集的大小以及如何獲取單個元素。在這裏,我們使用了這些轉換器等等,我們定義了如何從Delta表中的相對原始數據到Pytorch中為這個特定模型準備好的東西。這實際上隻是讀取圖像,轉換它並返回轉換後的版本。
肖恩·歐文:
現在,在進入Pytorch建模之前,我們將啟用MLflow的這個新特性。MFflow已經支持Scikit-learn、Keras和TensorFlow等一些流行包的自動日誌記錄,現在它還支持Pytorch。因此,通過為Pytorch啟用自動日誌,我們甚至不需要編寫MLflow代碼來獲得一些好處,以便在訓練Pytorch模型時記錄我們正在做的事情。
肖恩·歐文:
我們來建立這個模型。現在,我們將在這裏使用Pytorch閃電,我希望這對沒有見過它的Pytorch用戶來說可能很有趣。與Pytorch一樣,我們需要定義一個模塊,該模塊定義了我們要訓練的網絡以及我們如何訓練它。但我們並沒有直接寫出訓練循環,而是在這裏填一些空白。例如,我們必須定義它是怎樣的,網絡是什麼樣子的這裏實際上是密集的網絡。所以我們加載這個預先訓練好的模型。所以這就是遷移學習,我們不會嚐試重新訓練它,在上麵添加一點dropout,在上麵添加一個完全連接的密集層,以最終建立一個分類器,從這些圖像中預測這14種可能的診斷中的一種或多種。
肖恩·歐文:
這對Pytorch用戶來說非常簡單。最好的事情是找到所有關鍵的部分。前置通道是如何查看數據的,優化器是什麼,如何驗證,如何訓練。我們隻要讓皮托炬閃電在這裏工作就行了。它可以做一些很好的事情比如,自動調優,我們的批大小自動調優,我們的學習率,處理早期停止等等。Pytorch lightning是一個很好的框架,因為它有很多鉤子,MLflow可以鉤進去自動記錄日誌。
肖恩·歐文:
所以我不會在這裏實時運行這個,因為模型訓練在GPU上需要大約17或18分鍾。但是,如果您確實運行了這個程序,您會發現在沒有MLflow代碼的情況下,如果您將單元格運行到MLflow,並且在Databricks中,MLflow被集成到您在這裏看到的這個實驗側欄中,您將得到模型記錄。如果我們把它拿出來,你會看到這個模型是我們從Pytorch auto logging中得到的。它有相當豐富的信息誰運行了這個模型?我做到了。什麼時候,花了多長時間,筆記本的確切修訂版是什麼,以及製作這個模型的代碼是什麼?當然,所有為Pytorch模型定義的關鍵參數關鍵指標,哪個史詩是最好的,最終的驗證損失是什麼?當然,我們得到了模型和最後一個檢查點。我們得到了網絡體係結構的總結、非常有用的信息,甚至還有一些關於以後如何從MLflow加載這個模型的有用提示。
肖恩·歐文:
現在我還想向你們展示,首先我要說的是這個模型,我不打算向你們展示太多關於它的準確性,但請放心,它實際上達到了相當的準確性,與你們可能在介紹這個數據集的論文中看到的結果相當。所以訓練前層和現代工具我們可以做得很好。開箱即用。我相信你可以做得更好,盡管有更多的時間,GPU時間和創造力。
肖恩·歐文:
下一件事很有趣。我想向您展示MLflow的服務模型。MLflow所做的一件關鍵事情是將模型以一種可能更有用的形式交還給您。有時這可能是一個spark UTF,一個你可以用spark應用到一堆數據的函數,但它也可以創建一個模型,一個微服務,一個REST API。你總是能夠將其部署到Azure ML或Amazon SageMaker等服務上。但是最近,MLflow的最新版本,您實際上可以在模型注冊表之外的Databricks中為模型提供服務。這就是我要展示給你們的。這是我這個筆記本的注冊型號。我現在正在做第三個版本如果我願意,我可以為這個注冊的模型提供服務,突然間我有了一個端點,甚至在Databricks中,我可以把圖像發送給你,以獲得它們的分類。
肖恩·歐文:
但我想再多說一點。因此,這些REST API所做的就是公開一個服務,該服務可以接受JSON格式的輸入描述,並將分類作為輸出返回。唯一的問題是這裏的輸入實際上是一張圖像。它是一個張量,在JSON中沒有一個很好的方法來描述它,至少沒有一個可以被MLflow自動轉換為JSON的形式。為了實現這個,我們需要進行一些定製。我認為這在某種程度上說明了MLflow的力量,如果你需要,你可以改變它的工作方式。因此,我們將定義一個自定義MLflow模型,它將包裝我們的Pytorch模型,並使我們能夠接受圖像為base64編碼的字節字符串,從中解析圖像,應用轉換,應用Pytorch模型,然後返回結果。
肖恩·歐文:
所以這並不難。如果你需要,你可以這樣做。這讓我們可以把它變成一個服務我們可以通過JSON接受圖像並返回它們的分類。定義了這個類之後,我們所需要做的就是加載我們實際的Pytorch模型,將它包裝在這個包裝器中並記錄它。這就是我們實際部署到MLflow的模型,現在在Databricks中為注冊表服務。所以你可能看到我已經注冊了它,但隻是作為參考,你會發現你可以通過點擊注冊模型並選擇你感興趣的模型來注冊模型。但我已經注冊了我感興趣的那個。
肖恩·歐文:
為了證明它是有效的,讓我們嚐試一段代碼來加載一張圖像並將其發送到其餘端點。我將從存儲中加載一張圖像。再說一次,Delta Lake House架構的一個優點是你可以把數據當作表格來處理。您也可以將數據作為文件和圖像處理。沒問題。我從數據集中加載一張圖像。這就是它的樣子。也許放射科醫生能理解。我沒有看到任何有趣的東西,但讓我們看看模型是怎麼想的。因此,要使用該服務,我們隻需要對其進行編碼並編碼一個適當的JSON請求,將其發送到API並呈現結果。 And we get that back here as a pandas.DataFrame.
肖恩·歐文:
我們在這裏可能看到的是模型認為這可能是肺不張的一個例子,這是一種肺塌陷或浸潤,但可能不是疝氣。這些是概率。嘿,這很有用。我的意思是,如果這是一個更好的模型,並經過專業人士的審查,你可以想象這可能是一個有用的助手,對於放射科醫生來說,他們想要一些人頭下來,知道他們可能在尋找什麼。也許一個模型可以幫助他們弄清楚什麼是可能的。
肖恩·歐文:
在深入討論這一點之前,我想介紹MLflow最新版本的一個新特性,即Webhooks。因此,模型注冊表,正如您可能在那裏看到的,它的部分角色是管理模型版本的狀態。所以你可能有一個當前的生產版本,你創建一個模型的新版本,它是登台候選,你測試它。在某種程度上,如果你通過測試並獲得許可,你就可以將其投入生產。
肖恩·歐文:
這些都是重要的事件,也許這些事件創建了一個新模型,創建了一個新的測試候選需要觸發一些事情,比如測試作業,CICT作業。這就是為什麼MFflow現在支持Webhooks觸發器來響應這些事件。登記它們是相當容易的。您必須直接訪問REST API,但是您可以這樣做,並有效地偵聽這些事件。現在,對於這個簡單的例子,我將設置一個Webhook來觸發一個消息到Slack通道,這隻是一個簡單的演示目的,但你可以想象做更多的事情,觸發一個lambda,觸發一個CICT作業。所以我已經注冊了這個Webhook來觸發一個ping我的Slack頻道,每當這個注冊模型發生什麼事情,我們應該看看這是否有效。例如,如果我進入一個模型並對它進行評論。我應該會發現它在我們的Slack頻道中注冊了一條新消息。就在那兒。好的。 Pretty good.
肖恩·歐文:
好的。現在我想談談另一個新特性,那就是模型解釋。有時我們想知道模型為什麼要這樣做。有一個流行的開源工具叫做SHAP,它可以幫你做到這一點。它實際上可以在個體預測層麵上解釋,是什麼樣的輸入導致模型做出了這樣的預測。使用SHAP並不難,但在MFflow one 12中,它實際上可以相當自動地完成。隻需一兩行代碼,您就可以讓MLflow為您創建模型解釋,甚至像這裏這樣記錄圖形。這實際上是一個總結圖,總體上說明了模型的重要特征。你可以在這裏看到實際的SHAP值,模型解釋,所以那是可用的。你可以對任何模型這麼做。 For this particular model though, I want to take the opportunity to show you something else you can do with SHAP, not through auto logging, but through a little more manual usage of SHAP that may be more interesting for this dataset.
肖恩·歐文:
所以事實證明,SHAP可以用一種有趣的方式解釋圖像分類。通過一小段代碼,您可以嚐試將圖像與熱圖疊加,以顯示圖像是如何導致模型以這種方式分類的?在這種情況下,我實際上為我的數據集加載了一張圖像,它肯定被分類為滲透,我從SHAP創建了一個解釋器,它可以解釋這個模型,並要求它解釋。實際上是什麼解釋了共振的中間層。其實對不起,是密網的。這就是你從中得到的。你可以在這些x光片上看到左肩有一個黑點右肺底部也有一個黑點。不管出於什麼原因,該模型認為這些在它的分類中特別重要。它的分類在這裏。好的,很好。 92% chance it’s infiltration, maybe edema, maybe atelectasis.
肖恩·歐文:
所以我認為這擴展了一個想法,即這些模型不僅可以預測黑盒預測器,還可以解釋。也許如果我們真的建立了一個更好的模型,這類事情可以讓它對專業人士更有用,他們正在尋找因此,也許你在尋找整體的地方。也許模型可以更容易地看到人眼不能立即看到的東西。這些預測,這些解釋可以與Spark並行創建,寫入Delta表,甚至可以記錄日誌。其中一些是在MLflow中,所以這一切都是一個循環。
肖恩·歐文:
最後我想向你們展示的是Databricks中的一個新功能,叫做Projects。知道Databricks的人都知道你在工作空間中工作,我們通常使用單個筆記本,但通常我們想要使用一組筆記本,因為我們需要把它們放在一起。雖然在項目出現之前,您總是能夠獲得單個筆記本的修訂曆史,但您確實不能同時對筆記本組進行版本和提交更改。這就是"計劃"存在的原因。
肖恩·歐文:
所以它不會改變你處理事物的方式。我實際上是在一個項目中的一個筆記本上工作,而不僅僅是工作空間中的一個浮動筆記本。但這基本上意味著這裏有更深層次的get整合。首先,我可以看一下get分支,抱歉,是這個筆記本和這幾個筆記本所支持的get repo,我可以一次編輯並提交多個筆記本,如果我願意,可以設置一個提交消息。因此,對於那些習慣於版本控製大型項目的人來說,這可能更自然,由多個筆記本電腦組成的項目由get repo支持,而不是簡單地內置版本控製。我們希望隨著時間的推移擴展這一功能,讓你可以在筆記本電腦的同時版本,比如小的配置文件或小的數據文件,因為有時這是更自然的事情。
肖恩·歐文:
因此,我希望您已經聽說並看到MLflow、Webhooks與Pytorch和SHAP集成用於自動日誌記錄的一些新特性。Delta在某些方麵可以用於特定的機器學習問題,使用注冊表為模型提供服務,以及如何與圖像分類器一起工作。最後,簡要介紹一下項目以及它們對您的工作流程可能意味著什麼。
西爾維婭Simion:
謝謝你們,Matei, Clemens和Sean。一個簡短的提醒,如果你想嚐試一些你在之前的股票和演示中看到的東西,請訪問www.eheci.com/trial,在那裏可以使用這些工具。在我們繼續進行演示時,您也可以通過問答麵板提交您的問題。
西爾維婭Simion:
現在讓我們直接聽聽我們的客戶是如何處理機器學習在他們的產品和係統中日益重beplay体育app下载地址要的問題的。更重要的是,他們如何管理組織內與ML計劃相關的資產和整個生命周期?
西爾維婭Simion:
下一位演講者是來自H&M的kevin Wang。kevin將概述H&M的參考架構和傑出的堆棧,這些堆棧旨在解決人工智能和機器學習產品中的一些常見挑戰,如開發效率、互操作性、生產速度等。凱文還會演示製作流程。有請凱文。
凱文王:
大家好。我叫凱文。我在公司工作
凱文王:
大家好。我叫凱文。我在中庭組擔任能力主管。今天,我要講的是mlop我們如何大規模地應用它。我在一個叫AI基金會的組織工作。在AI基金會,我們針對不同的業務問題,從設計采購到物流、銷售管理,以及我們如何與客戶互動,研究了許多不同的用例。幾乎涵蓋了整個中庭價值鏈。這些用例中的每一個都是由一個多學科敏捷產品團隊驅動的。他們從頭到尾地開發和部署產品。在開發這種不同的機器學習產品時,它們有許多共同的挑戰,例如,如果我們隻討論一個單一的模型,如何在大規模的機器學習訓練管道中實現自動化,但它是否可以在我們的數百個南方模型中解決,以及如何提供機器模型的可重複性?
凱文王:
假設半年前,你希望能夠使用相同的代碼和相同的數據,重新訓練完全相同的模型,你的模型審批過程是怎樣的,這樣你就可以有足夠的信心將新模型投入生產。我們試圖通過利用我們的參考架構或繪圖來整體地解決這些不同的挑戰。即使他們正在解決不同的業務問題,他們也共享一個共同的過程。例如,對於模型訓練,它是關於獲取數據,應用一些轉換,訓練模型,最後將模型放入模型存儲庫。對於模型部署,還需要獲取數據,應用完全相同的轉換,做出預測,然後保存結果,交付給最終用戶。在中間,你有一些共同的關鍵問題。例如,如何加速進入和反饋循環,如何監控你的模型性能,你的數據漂移,以及你的基礎設施。
凱文王:
此外,如何不僅對模型進行版本控製,而且對數據進行版本控製,以便您可以像在軟件工件中一樣管理它們。在此基礎上,我們提出了一些技術組件,例如模型訓練、模型管理和模型部署。這裏有一些障礙是很重要的,這樣我們就可以為每個障礙選擇不同的工具,並獨立地發展它們,因為機器學習是一個新興領域。它們是每天、每周、每月都會出現的新工具。我們希望利用最好的杠杆來簡化我們的工作。
凱文王:
經過一年的探索和逃避,我們總結出了一些工具。例如,對於模型訓練,對於新開始的用例,我們有三個堆棧。我們傾向於利用數據中斷世紀架構。然後,對於更成熟的用例,我們正在擴展,自動化也是關鍵。我們傾向於使用氣流或Kubeflow作為主要的機器學習編排器。對於模型管理,和許多其他公司一樣,我們喜歡MLflow用於模型部署,特別是在線模型。對不起,我們也喜歡Kubernetes。而且,像rare這樣的開源工具帶來了許多機器的特定功能。
凱文王:
除此之外,係統可觀測性也是非常重要的。我們喜歡Azure堆棧。所以我們傾向於在大多數情況下使用默認的工具,如Azure Monitor和Power BI,對於Kubernetes的空間應用程序,Grafana和Premises是一個很好的選擇。機器學習產品是[聽不清00:53:33]軟件產品,所以我們可以利用持續集成和持續交付等最佳實踐來自動化學習過程。此外,最後,看著這些複雜的堆棧,我們無法實現適當的基礎設施自動化。
凱文王:
我們來談談模型訓練。對於新開始的用例,我們喜歡交互式模型開發或筆記本。然而,當你的代碼庫增長,你的團隊規模也在增長時,筆記本電腦並不是一種非常可擴展的產品開發方式。如果隻在筆記本上進行開發,你可能會欠下很多技術債。我們現在都處理過了,基本上是把筆記本裏複雜的邏輯提取出來,放到單獨的獨立模型中,我們可以在本地開發,然後使用持續集成把所有的任務放在一起,在數據庫上訓練。
凱文王:
讓我們來看看它究竟是如何工作的。這是一個目前的項目,我將從網上下載一些數據,並修剪隨機強迫模型,然後將模型保存到MLflow中。讓我們來看看這個項目的結構。在這個SFC文件夾中,我有許多python模型,並使用不同的函數捕獲所有不同的模型。例如,配置管理評估方法,其中可以說明一些繪圖和評估方法。準備數據的方法,其中包括一個模型,其中包括一些[聽不清00:55:11]巧妙的數據。
凱文王:
在test文件夾中,我有py測試用例來評估這些python模型。在筆記本文件夾中,我有我的筆記本,你可以得到一些頂部py文件。你可以看到,即使是筆記本,我也可以用ID來計算語法。
凱文王:
現在假設我們已經完成了所有的本地開發,比如編碼和py測試,我們想把這個筆記本上傳到Databricks並編寫。
凱文王:
我把這個腳本叫做。這個腳本所做的隻是打包所有我通過的模型作為備份文件,並上傳到數據庫,然後也上傳我的筆記本電腦到數據庫。現在完成了,讓我們看一看。這是我的數據庫工作區。在這裏我的筆記本已經被放置到一個特定的文件夾結構。這是我的項目名和分支名,我的用戶ID和我的筆記本。在這個筆記本的第一個語句中,它會嚐試安裝這個腳本上傳的egg文件。egg文件也被放置在與我正在處理的分支和我的用戶ID相關的特定結構中,因此我不會覆蓋我同事的工作。
凱文王:
現在讓我們看一下這個筆記本。這裏初始化為隨機種子。現在,準備訓練數據集隻是一個調用方法。然後讓我們開始訓練模型。在這個隨機森林模型中,我想把100改成150。在業務培訓模型中,它還將使用MLflow來跟蹤重要參數和其他指標。這是正確的。
凱文王:
好的。我們已經看到了一些關鍵的誤差指標,最後,它還將評估模型和圖表,一些漂亮的圖表。看起來是個不錯的圖表。假設我們對這個模型,對參數的改變很滿意。現在我們要提交代碼。回到ID。這裏我將應用同樣的變化,從100到150,然後我隻需要推送我的代碼。
凱文王:
現在我的代碼按了。讓我們來看看CI管道。這是我的CI管道,我的模型,新的管道行已經被觸發。讓我們仔細看看。該管道包括兩個任務。在第一項工作中,它將做一項叫做質量檢查的研究。基本上,它將運行所有的py鏈接測試和單元測試,發布測試結果,也發布測試覆蓋率報告。同時,我們還把我的筆記本打包,連同egg文件一起上傳到數據庫裏,在數據庫裏運行筆記本。它將監視筆記本運行,直到完成。
凱文王:
現在搞定了。讓我們來看看。這就是筆記本運行的結果。讓我們看看所有的印刷品。而且,它是MLflow模型注冊表。我們應該看到一種新的模式。好的,版本12。這是我們剛剛訓練的一個新模型,在這個階段仍然是none。
凱文王:
好的。這是第一個演示,我們可以看到,作為一個本地動態可以很好地集成與筆記本電腦開發與Databricks。而且,通過利用持續集成,我們可以自動化該過程,因此提供了一種很好的方法來跟蹤模型元數據,並以與LS軟件工件相同的方式管理模型。除了新成立的產品團隊。我們也有一些更成熟的產品團隊,他們的主要關注點是自動化和可擴展性,因為你需要訓練許多模型。這些產品團隊傾向於為特定的地理區域(如國家)、特定類型的產品(如男士t恤)和特定的時間段培訓特定的模型,而不是培訓單一的模型。
凱文王:
每一個都是考慮我們規模的一個場景。我們可以很容易地在不同的場景中設置。這是他們每天需要訓練的一些模特。對於這種類型的用例,我們傾向於在Kubernetes之上利用基於氣流或Kubeflow的架構,我們可以上下擴展集群,也可以利用外部計算能力,如數據集群,也可以在同一集群的docker容器內運行本地計算。
凱文王:
讓我們繼續討論模型管理,以及模型服務。在高層次上,您可以將整個生命周期分為五個階段:模型開發、回測、模型批準、部署到登台,然後部署到生產事件。我們討論了如何自動進行模型開發,以及在MLflow中生成新模型的結果。回溯測試是將模型部署到開發環境中,運行所有的回溯測試,然後在模型審批過程中,團隊中的某個人可以批準他們的模型。它將把模型版本解壓到開發階段,並將這個新模型部署到登台環境中。之後你可以進行一些係統測試,然後再有人來改進你的模型。在MLflow中將版本從stage提升到prott,然後將模型部署到生產環境中。
凱文王:
讓我們在第二個演示中看看它是如何工作的。但在我們開始演示之前,我還想說幾句關於塞爾登或塞爾登核心的話。Seldon Core是建立在Kubernetes之上的開源庫。它引入了機器學習特定任務的部分功能。例如,它可以讓你輕鬆地將模型打包為微服務。您可以將其公開為gRPC或Rest API。此外,Seldon介紹了一些核心概念,稱為[infrasca 01:02:25]。想想你的模型預測不僅僅是一個步驟,包括異常值檢測,特征轉換。同時,也許你想送你的一個模型到我們的祭壇,這是選擇一個你的模型。與這個特定的要求最相關,然後做出預測。
凱文王:
這些步驟中的每一步都可以在單個豆莢或容器中運行,您可以獨立地獲取和使用它。現在回到MLflow,我們可以看到這個模型的版本11。我的型號,第11版,現在正在生產中。假設我們對版本12很滿意,並希望將其部署到生產環境中。我們打開另一個工具箱庫,我的模型服務,這裏有一個元數據文件。我的模型信息Yami,這裏我指定了我的databricks工作區的位置,這是我的MLflow實例的位置,還有我的數據模型的名稱。現在我想把版本從11改為12。
凱文王:
所以要部署它,我隻需要做一個簡單的工具包推送。現在搞定了。它自動觸發模型部署到管道。但是在我們討論管道之前,讓我們先來看看它是一個Rest API。
凱文王:
這是一個郵遞員。我經常用它來運行一些休息調用。這是我的模型在開發環境中的端點,我可以進行調用。然後我可以從我的模型收到一些響應。看起來不錯。同時,Seldon提出了這個模型元數據API,它可以查詢您的模型的元數據信息。這裏你可以看到模型的名字是我的模型,版本11是昨天創建的。還有,這裏你可以看到一些輸入模式,這裏你也可以看到輸出。
凱文王:
所以在模型部署之後,我們應該看到這個模型版本升級到試用版。讓我們回到CI管道。因此,這是用於模型部署的另一個持續集成管道。在我被推之後,管道就被觸發了,這個包括四個階段。在第一階段,它將從模型中,從MLflow模型注冊表中根據我們給出的版本獲取模型,同時它將是文檔圖像,然後將其推入容器注冊表。
凱文王:
之後,它將把模型部署到開發環境中,然後就可以進行測試了。所以在這裏我使用像Helm這樣的開源工具來術語利用我的部署。因此,為了在開發階段和生產線上部署它,我可以使用相同的設置腳本。現在它被部署到開發環境中。之後,如果我批準它,它也會被部署到階段,然後最終進入生產,也需要人工批準。現在讓我們回到郵差進行另一個休息調用,看看它是否準備好了。我應該把植入物升級,但現在還沒有。這就是為什麼會有一些停機時間。好了,現在你得到答案了,讓我們檢查元數據。現在是版本12。 Looks good. And let’s say we have done some tests in dev environment and decide to approve it to the production environment.
凱文王:
審查。批準。現在它正在部署到一個登台環境。假設在舞台環境中。我們想要運行一些係統測試,來推動負載,看看係統是否表現得盡可能好。我將使用一個叫做Jmeter的工具。在Jmeter中,我可以模擬多達100個客戶端,發送請求並返回一條滑條。還有這個客戶,我兩分鍾內就能搞定。這些客戶機中的每一個都將通過我的模型預測服務發送相同的rest來調用。是一樣的,然後它會計算這裏的結果。 I also deploy some cool feature like auto-scaling in this model. This is my set under current file. Here I specify my [infants scrub 01:08:40] in this caseI only have a single container with a single microservice. And also I specify as a horizontal Potter scaling policy, basically it will monitor my CPU usage. If it’s about 40% is just start to create more replica of my model prediction service up to 500 instances. Let’s watch how many instances there are today.
凱文王:
現在我們有了兩個副本。讓我們開始性能測試。現在我們開始,我們可以看到開始的延遲很好,50 60 70毫秒,但隨著客戶端數量的增加,延遲開始增加。我還添加了一些很酷的功能,比如超時。基本上,我們不希望客戶和……我們不希望我們的最終用戶永遠等待。因此,如果模型不能在一秒內做出預測,它就會返回HB 500。然後我們可以在客戶端輸入一些默認的邏輯來顯示一些默認的結果。此外,在這裏,我們可以看到一個新的副本已經添加,因為有很多開始增加。實例已經添加了。此外,我們可以看到在超過運行幾毫秒後,我們開始看到一些紅色標誌和一些箭頭從模型返回。 Also, now we can see there are more replica has been added. I will not wait until it finish. Let’s assume we are happy with this result.
凱文王:
現在是最後一步。我要回到我們的DevOps部門,批準這個模型並將其部署到生產環境中。在第二個演示中,我們已經看到,通過利用Azure DevOps等工具,我們可以輕鬆地自動化模型部署過程。而涉及到人是一個循環,就像Seldon做的那樣,將模型暴露給預測服務非常容易。
凱文王:
最終外賣和mlop非常複雜。在開始尋找技術堆棧之前,後退一步是很重要的,考慮一下您要解決的是什麼類型的問題。你的設計過程是什麼樣的,然後定義你的架構,最終取決於你的工具。其次,如果你有許多產品團隊都在生產機器學習產品,也許是時候考慮平台方法了。Beplay体育安卓版本讓一個中心團隊開發一些關鍵組件,並將其作為服務提供給你的專業團隊。最後但並非最不重要的是,通過利用雲服務,您可以使用它。你真的可以進化得非常快。非常感謝。非常感謝。
發言人3:
謝謝你,凱文。下一位演講者是J.B. Hunt公司的韋斯利·克拉克和Artis谘詢公司的卡拉·菲利普斯。他們將介紹J.B. Hunt如何在其他價格範圍內實施自助服務實驗和部署框架。本文檔將涵蓋框架的核心價值、概念和約定,然後是如何實現數據資源、代碼和作業的自助自動化部署到Azure DevOps、CI/CD管道的技術演示。歡迎衛斯理和卡拉。
韋斯·克拉克:
謝謝你的加入。我們感謝您的時間,我希望您會發現我們的工作有趣,信息豐富,這將幫助您建立自己的自動化CI/CD管道。我叫韋斯利·克拉克(Wesly Clark),是J.B. Hunt的企業分析和人工智能首席架構師。我的同事,來自Artis谘詢公司的Cara Phillips,和我一起來做一個技術演示。J.B. Hunt成立於1961年,現已發展成為北美最大的運輸和物流公司之一。我們目前在財富500強中排名第346位,我們的數字經紀市場J.B. Hunt 360在創新和技術方麵獲得了廣泛的認可。我們認為高級分析中的機器學習是我們未來成功的關鍵,我很榮幸能夠參與在J.B. Hunt建立這些學科。Artis Consulting成立於2002年,專注於四大支柱:數據和分析、人工智能和機器學習、物聯網和智能應用。他們一直是我們的關鍵合作夥伴,幫助我們將願景轉化為我們的嗡嗡聲生產過程。
韋斯·克拉克:
首先,我想讓您了解分析在創造業務價值中所扮演的角色,強調這個框架關注MLOps生命周期的哪些部分,並討論我們在實現解決方案時所遵循的指導原則。然後,我們將進入您真正想要的技術演示部分,以及您可以采取的實際步驟來創建自己的解決方案。
韋斯·克拉克:
我們想強調的是,我們在分析、數據科學和機器學習方麵所做的一切都應該專注於創造業務價值和實現我們組織的目標。作為科學家,我們很容易在數字中迷失自我。因此,我們有意地將注意力重新集中在我們試圖賦予的人身上,以及我們的解決方案將嵌入的流程上。
韋斯·克拉克:
我看過很多關於數據工程的精彩演講,比如在創建功能存儲時如何使數據水化。
韋斯·克拉克:
它是關於數據工程,為三角洲湖補水和創建特征存儲。同樣,也有大量的演講集中在集裝箱化、服務和生產性能監控上。今天,我想重點介紹一種安全的自助服務框架,用於自動化創建和部署與產品代碼存儲庫的特定項目分支鏈接的計算環境。在向您展示框架體係結構和實現之前,我想簡要介紹一下我們的解決方案所依據的指導原則。
韋斯·克拉克:
我們的目標是可預測性。我們選擇了約定而不是構型。我們希望它是自動化的,因為當用戶不需要記住規則就可以看到它的作用或實現它時,這些約定的真正力量就實現了。我們想在安全和自助服務之間取得平衡。我們試圖賦予用戶權力,同時提供邊界以保證他們的安全。我們希望這個框架通過創建在整個ML生命周期中跟隨代碼的配置構件來強調可重複性,從而確保在環境創建中可重複部署。
韋斯·克拉克:
我們希望引入明確定義的環境。我們不隻是尋求自動化我們已經擁有的工作流程,而是通過我們提供給團隊的工具創造新的可能性。我們介紹了我們的分析師、工程師和科學家。來自企業級軟件工程開發生命周期的一些最健壯的概念。我們希望不受平台和雲的影響。Beplay体育安卓版本我們剛開始做這個的時候還不是多雲,但Databricks是。對我們來說,重要的是選擇可以在任何地方運行的解決方案。我沒有時間詳細介紹我們所做的所有決定,但是我想讓您對框架有一個高層次的理解。
韋斯·克拉克:
我想讓您注意的第一件事是存儲在用戶代碼橋中的一組配置文件。環境配置文件是存儲值的地方,這些值會根據代碼在哪個環境中運行而變化。接下來,庫配置中的集群允許您定義代碼運行所需的依賴項和計算資源。它還允許您指定誰應該訪問您的項目。最後,在作業配置中可以存儲指令,指示代碼在進入生產環境時應該如何部署。接下來,我想顯式地定義將代碼部署到特定環境意味著什麼。
韋斯·克拉克:
這意味著我們的代碼的新副本已被拉入Databricks項目文件夾,並且已與存儲庫橋同步。這也意味著您的代碼運行在一個專用的集群上,以滿足分支配置文件中定義的特定需求。最後,它意味著集群在服務主體的授權下運行,該服務主體隻能訪問相應基礎設施環境(local、dev、test和prod)中的適當資源。這意味著您使用不同的秘密,將數據存儲在不同容器中的文件中,並根據您所運行的環境訪問不同版本的web服務。
韋斯·克拉克:
現在,讓我們稍微討論一下CI/CD管道如何與您的產品代碼一起工作。我們將介紹一個自助服務集群管理場景。讓我們想象一下,一個擁有現有產品代碼存儲庫的用戶將首次開始使用CI/CD框架。值得慶幸的是,CI/CD存儲庫有一個設置管道來幫助它們啟動。第一步說明了設置管道的第一階段,該階段將把我們在前麵的圖中討論的配置文件傳輸到用戶的產品repo中。
韋斯·克拉克:
步驟2顯示,設置管道的第二階段將傳輸一些YAML文件,並在產品中創建子管道以進行repo。其中一個子管道用於將作業部署到新環境,另一個子管道(與此場景相關)偵聽對配置文件所做的已提交更改。一旦初始設置管道完成了在產品存儲庫中傳輸文件和創建子管道,讓我們想象一下,在圖的第三步中,用戶修改集群和庫配置以更改集群的最大節點數量,將第三方庫添加到其依賴項列表中,並修改訪問控製列表以向其項目中添加一個隊友。
韋斯·克拉克:
在第4步中,在用戶向集群和庫配置文件提交更改之後,偵聽器管道將觸發並啟動對CI/CD存儲庫的回調。第5步強調了大部分功能存在於CI/CD存儲庫中,其中YAML管道將執行一係列PowerShell腳本,這些腳本將驗證配置文件的更改,並將其轉換為三個單獨的JSON文件,然後分別發送到Databricks集群、庫和權限api。
韋斯·克拉克:
最後,在第6步中,您將看到,過了一會兒,這些更改將由Databricks api完成,用戶將在Databricks UI中看到更新後的集群,其中加載了新的庫,隻有在訪問控製列表中指定的團隊成員才能訪問。好的,在我們進行技術演示之前,最後一個圖表。我想再次強調這所啟用的工作流。在不與環境發生衝突的情況下持續地對產品進行增強。在這個圖中,您可以看到同一產品的兩個獨立分支正在本地環境中由兩個不同的用戶處理。
韋斯·克拉克:
每個用戶都有一個單獨的產品筆記本和配置文件副本,存儲在其用戶名下的本地項目文件夾中。每個庫都運行在根據用戶配置設置的專用集群上,每個集群可以擁有完全不同的屬性,運行不同版本的庫而不會發生衝突。一旦您完成了本地開發,在任何給定的時間都隻能部署產品的一個分支。在開發環境中,產品的舊版本已經交付了master,正在走向產品化。
韋斯·克拉克:
它已經通過了我們的CI/CD作業部署管道實施的第一個質量門檻,它也有一個單獨的筆記本副本,可以訪問存儲在開發項目文件夾中的fig文件。它使用庫的較舊副本,並運行在滿足較舊版本配置文件規範的專用作業集群上。不幸的是,該代碼未能通過更嚴格的質量門檻,進入更嚴密的測試環境。test和prod仍然在使用以前的主版本標簽中的代碼進行再培訓。這兩個環境都有一個單獨的筆記本和配置文件副本,存儲在test和prod項目文件夾中,並且運行在專用的作業集群上,仍然使用更老版本的庫。
韋斯·克拉克:
在所有環境中,本地、開發、測試和刺激每個集群都在適當的環境服務主體的授權下工作。與表、文件存儲、外部web鉤子和表麵集成的特定環境實例交互,並發布作業事件。這些特定於環境的服務原則還被授予了調用那些已部署作業的權限,以便可以使用服務原則憑據從Databricks外部初始化它們。我知道這涉及到很多概念性的內容。感謝您對框架背後的所有抽象和理論的理解。現在我要把它交給我的朋友卡拉,向你們展示如何一步一步地實現這樣的東西。
西爾維婭Simion:
謝謝韋斯利。大家好!我是Cara Phillips,是Artis Consulting的數據科學和MLOps顧問。正如韋斯利剛才提到的,我將向你們展示這些管道的實際操作。讓我們首先看一下CI/CD回購中的文件結構。首先要注意的是這些YAML文件,它們是包含管道將執行的步驟的模板。在這些文件的上方,我們有一個腳本文件夾。這些都是將在管道的每個步驟中運行的所有腳本。我們決定使用PowerShell腳本,但您可以使用任何可以解析JSON文件並將數據發送到Databricks API的語言。
西爾維婭Simion:
在頂部有兩個文件夾,一個用於數據科學,另一個用於數據工程。數據科學和數據工程團隊都在使用這些管道,這些文件夾包含可以在團隊級別設置的配置默認值。例如,數據科學團隊可以使用這些文件為他們的集群或作業配置設置默認值,設置默認權限或設置始終安裝在他們的集群上的庫。這裏要查看的最後一個文件夾是遠程存儲庫文件夾的文件。
西爾維婭Simion:
這個文件夾包含我們需要複製到產品回購的所有文件。一旦這些文件在管道上複製,就可以在產品回購中構建。複製這些文件和創建管道的過程可以手動完成,也可以像Wesley前麵提到的那樣通過另一個管道完成,我們稱之為setup管道。讓我們轉到產品回購,並仔細查看該文件結構。第一個文件夾是筆記本文件夾。此文件夾包含鏈接到Databricks工作區的所有筆記本。其餘的文件是從CI/CD回收中複製的文件。
西爾維婭Simion:
首先,我們有管道定義文件夾,該文件夾包含將觸發執行存儲在CI/CD repo中的管道步驟的YAML文件。我們要看的最後一個文件是庫中的集群,配置JSON文件,以及作業配置JSON文件。用戶將使用這兩個文件為他們的集群和作業創建和管理配置。一旦建立了回購,用戶需要做的第一步是從master創建一個新的用戶分支。讓我們仔細看看集群和庫配置JSON文件,這是用戶將配置的第一個文件。
西爾維婭Simion:
一旦他們創建了他們的用戶分支,他們就可以開始編輯配置文件。讓我們仔細看看庫中的集群配置文件。他們要配置的第一個參數是工作區名稱。這個值將決定我們的默認配置值將來自CI/CD repo中的哪個文件夾,以及管道將驗證到哪個Databricks工作區。這裏的集群參數包含用戶可以為其集群配置設置的參數子集。大多數這些值的結構直接等價於API所需的JSON結構,除了spark版本。
西爾維婭Simion:
在這裏,我們創建了一個結構,用戶隻需要指定版本號,無論他們是否想要一個默認包含許多機器學習包的ML運行時,以及他們是否需要在他們的集群上使用GPU計算。管道將這些值映射到API所需的正確鍵。在本節中,我想提請注意的最後一組參數是自定義標記。這些標簽對於跟蹤和管理你的Databricks花費是非常重要的。除了您在這裏看到的J.B Hunt特定的標記之外,管道還自動為環境(開發測試或產品)以及觸發集群創建的repo In分支設置標記。
西爾維婭Simion:
下一部分是訪問控製列表。在這裏,用戶列出了在分支中處理他們代碼的每個人的電子郵件。管道我們將使用這個電子郵件列表來設置集群上的權限。這確保了創建的集群專門為在該分支上工作的團隊成員保留。該配置文件的最後一部分用於庫。對於每種庫類型,用戶指定了他們想要安裝在集群上的庫列表,或者Python和CRAN包,如果所需的包repo與默認的repo不同,他們可以使用這裏的包和repo結構指定。
西爾維婭Simion:
現在讓我們在這裏做一些更改,保存文件並觀察集群的創建。我們將把最大工人數更改為7,並保存文件。現在讓我們去看看管道運行。您可以在這裏看到,當我保存文件時,管道被觸發,並且它正在自動運行。在我們等待它完成的同時,讓我們來談談幕後發生了什麼。回到產品回購中,有一個名為pipeline cluster的文件。該文件監聽對集群和庫配置JSON的更改,並回調CI/CD repo以執行存儲在那裏的管道步驟。
西爾維婭Simion:
現在讓我們轉到CI/CD回購,看看這些步驟。在repo的底部,我們有一個名為管道集群配置的YAML文件。這個文件包含創建和管理Databricks集群的所有步驟。這裏的前兩個步驟執行一些管理工作來設置管道環境。然後我們進入生成集群配置步驟。該步驟解析用戶在配置文件中提供的值,將其與集群配置默認模板結合,並創建JSON,以便在下一步中發送到集群API。
西爾維婭Simion:
創建器編輯集群步驟使用解析後的JSON文件創建一個新的集群(如果不存在),或者編輯一個已經存在的集群。一旦創建了集群,我們所要做的就是添加或更新權限。set cluster permission步驟從配置文件中獲取用戶列表,將它們解析為適當的JSON結構,並使用權限API設置集群上的權限。一旦設置了權限,我們現在必須安裝庫。解析所請求的庫步驟取配置文件中的庫並解析它們,下一步取已解析的JSON並安裝任何新的庫並卸載從配置文件中刪除的庫。
西爾維婭Simion:
現在讓我們來看看我們完成的管道。一旦我們開始運行,您可以看到所有步驟都成功完成。這意味著我們應該看到Databricks中運行了一個新的集群,配置文件中指定了配置。讓我們轉到Databricks,看看這個集群。正如您在這裏看到的,我們現在在Databricks中運行了一個集群。該集群的名稱是根據組織命名約定在管道中定義的。正如您所看到的,這裏的配置正是我們在配置文件中指定的。
西爾維婭Simion:
同樣地,在我們的訪問控製列表中指定的用戶也列在這裏的權限下。最後,當我們進入我們的庫時,我們看到除了默認庫文件中指定的兩個庫之外,還安裝了我們請求的庫。最後,第一步是將配置文件中的管道複製到產品回購中,並創建這些管道。完成之後,用戶填寫他們的集群和庫配置文件並保存它。然後管道將自動運行,用戶可以在幾分鍾內使用自己的集群。
西爾維婭Simion:
我們要研究的下一個管道是工作部署管道。該管道提供自動化和安全的作業部署和編輯。讓我們從用戶的工作流程開始產品回收。當用戶準備好將他們的代碼和作業部署到開發環境中時,他們將看到作業配置JSON文件。在這裏,它們將指定將創建多少個作業以及每個作業的配置。他們必須填寫的第一個參數是筆記本的名稱。接下來,它們將指定是使用高並發集群還是作業集群來執行作業。
西爾維婭Simion:
使用高並發性集群而不是作業集群,我們可以在部署作業時減少集群啟動延遲,並允許並行運行作業。接下來,它們將指定集群配置和一組庫。如果他們使用的是高並發集群,如第一個例子所示,那麼集群配置和庫將基於集群和庫配置JSON中的配置進行設置。作業配置中這些參數的值將為空。如果作業將在第二個和第三個示例中的作業集群上運行,那麼這兩個參數有幾個選項。
西爾維婭Simion:
如果用戶為新的集群或庫參數指定了default,相應參數的配置將從集群和庫配置JSON中獲取。此外,如果不需要庫,用戶可以為libraries參數指定none。在第二個作業中,您可以看到為集群配置指定了默認抱怨,並且庫周長設置為none,這表明該作業集群不需要庫。這兩個參數的最後一個選項是指定一個新的集群配置或庫集,如第三個作業中所示。這些配置使用與在集群和庫配置中使用的相同結構指定。
西爾維婭Simion:
我們在這裏和庫配置下麵有集群配置。一旦我們將更改保存回分支並提交所有的coach和master,我們就可以運行作業部署管道。我現在要做的就是運行開發階段。當它運行時,讓我們仔細看看管道在做什麼。回到產品回購,管道作業YAML文件調用存儲在CI/CD回購中的管道作業配置YAML文件中的管道步驟。我們有三個不同的環境,工作將被部署到開發、測試和生產。
西爾維婭Simion:
相同的一般步驟將在每個環境中重複,因此我們將使用一個build steps參數,它允許我們隻需要為這些步驟編寫一次代碼,然後這些步驟將在每個環境中重複。您將注意到這些步驟中的許多步驟與在集群管道中看到的步驟相同,因為這兩個管道之間共享了許多代碼。讓我們仔細看看這些步驟。與集群管道一樣,前兩個步驟隻是做一些管理工作來設置管道環境。然後我們進入生成集群配置步驟。
西爾維婭Simion:
這個腳本將做兩件事。首先,它生成默認集群配置,當用戶選擇使用高並發性集群或當他們為作業集群定義指定default時,將使用該配置。它做的第二件事是解析用戶提供的新作業集群配置。解析完這些圖後,創建或編輯高並發集群步驟將檢查正在部署的作業集是否需要高並發集群,並在需要時創建或更新集群。如果需要高並發集群,下一步是為該集群設置適當的權限。
西爾維婭Simion:
這包括添加開發、測試或刺激服務原則的權限,這將允許集群由其他應用程序(如Azure數據工廠或風流)管理。下一步是解析將要安裝在集群上的庫。與集群配置解析步驟一樣,此步驟將解析默認庫集和用戶指定的任何自定義集。在所有這些配置就緒之後,我們可以在下一步中部署新作業或編輯現有作業。
西爾維婭Simion:
最後,部署作業之後,我們需要設置或更新權限。您可以為CI/CD repo中的teams文件夾中存儲的任務定義一組自定義用戶或組的默認值。除了這些權限之外,開發人員、測試人員或產品服務負責人還將獲得訪問權限,以便他們能夠從外部應用程序編排這些作業。一旦我們找到了所有的步驟,我們就可以在下麵的每個階段執行它們,其中包括在每個環境部署之間的安全和質量檢查。讓我們來看看就業渠道。
西爾維婭Simion:
我們開始運行,我們看到開發階段的所有步驟都成功完成了,這意味著我們在Databricks工作區中創建了三個新作業。讓我們來看看這些。您將看到我們為開發環境創建了三個作業,因為我們在作業配置文件中配置了三個作業。注意這裏每個作業的集群定義。第一項作業使用高並發集群,第二項作業使用默認的集群配置,有1到8個worker,第三項作業使用自定義集群配置,有1到4個worker。
西爾維婭Simion:
讓我們進入第二項工作,看一看配置。在配置選項卡中,您將看到為這次運行創建的作業集群的規格。然後在下麵的高級部分中,我們可以看到管道為兩個服務原則(admin和dev)以及我們在teams文件夾的默認訪問控製模板中指定的三個ACL組提供了正確的權限。要總結作業管道,第一步是用戶在其用戶分支中填寫作業配置JSON。
西爾維婭Simion:
接下來,他們將所有代碼合並並掌握,然後一旦代碼準備就緒,就可以運行作業管道,作業將被創建並運行。今天,我們創建了兩個管道來自動創建和管理作業中的數據庫集群,為用戶提供了一個簡單的自助服務工作流。謝謝大家聽我的技術演示。我希望你學到了一些有趣有用的東西,我把它傳給韋斯利,讓他來總結一下。
韋斯·克拉克:
感謝Cara提供了如此周到的技術演示,並感謝您為實現這個框架的願景所做的所有努力。現在我想簡要回顧一下我們今天討論的內容。我們告訴過你,J.B. Hunt作為一個組織是如何努力實現目標的,我們的團隊是如何集中精力確保我們為實現這一使命做出貢獻的。我們將您的注意力吸引到MLOps生命周期的部分,我們的框架在這裏運行,在這裏我們感覺迭代改進的進展最大。
韋斯·克拉克:
我們描述了在實現解決方案時指導我們的激勵原則。我們用一係列架構圖直觀地表示了框架,以幫助您了解大局。然後Cara為您詳細介紹了一步一步的技術演示。最後,我想說的是,謝謝你花時間和我們在一起。我希望這對你有所幫助,在演示結束後,你可以下載更多的資源和細節,幫助你入門。謝謝你!
發言人3:
謝謝Cara和Wesley,也謝謝之前所有的演講者。現在我們有幾分鍾時間和我們的演講者進行問答,我們馬上回來。