開始
加載和管理數據
處理數據
政府
引用和資源
更新6月29日,2023年
給我們反饋
預覽
這個特性是在公共預覽。
重要的
這個文檔已經退休了,可能不會被更新。產品、服務或技術中提到的這些內容不再支持。
本文中的指導是遺產MLflow模型服務。磚建議您遷移模型的服務工作流模型增強模型的服務端點部署和可伸縮性。有關更多信息,請參見模型服務與磚。
遺留MLflow模型服務允許您從模型注冊REST端點主機機器學習模型,基於的可用性模型自動更新版本和階段。它使用一個單節點集群運行在自己的賬戶在現在所謂的經典數據平麵。這個數據平麵包括虛擬網絡及其相關計算資源集群等筆記本和工作,職業和經典SQL倉庫,和遺留模型服務端點。
當你使模型對於一個給定的注冊服務模型、磚自動創建一個獨特的集群模型和部署模型的所有non-archived版本集群。磚重新啟動集群時如果發生錯誤,並終止集群禁用模型服務的模型。模型服務自動同步模型注冊並部署任何新注冊模型版本。部署模型版本可以查詢標準REST API請求。使用其標準磚對請求進行身份驗證的模型驗證。
該服務在預覽,磚建議使用低吞吐量和非關鍵應用程序。吞吐量是200每秒和目標可用性目標是99.5%,雖然沒有保證了。此外,有一個16 MB的每個請求的負載大小限製。
每個模型版本是使用MLflow部署模型部署並運行在Conda環境中由其指定依賴項。
請注意
隻要保持集群服務啟用,即使不存在活躍的模型版本。終止服務集群,禁用模型為注冊服務模型。
集群的集群被認為是萬能的,通用的工作負載的定價。
全球init腳本不是服務集群上運行模型。
蟒蛇inc .)更新他們的服務條款為anaconda.org頻道。基於新的服務條款你可能需要一個商業許可證如果你依靠蟒蛇的包裝和分布。看到蟒蛇商業版常見問題解答為更多的信息。你使用任何蟒蛇的通道是由他們的服務條款。
MLflow模型記錄之前v1.18(磚運行時的8.3毫升或更早)與conda默認登錄違約通道(https://repo.anaconda.com/pkgs/作為一個依賴項。因為這個許可改變,磚已經停止使用違約渠道模式登錄使用MLflow v1.18以上。默認通道記錄是現在conda-forge,點在社區管理https://conda-forge.org/。
違約
conda-forge
如果你登錄一個模型之前MLflow v1.18沒有排除違約通道從conda環境模型,該模型可能有依賴違約頻道,你可能沒有。手動確認模型是否有這種依賴性,你可以檢查通道的價值conda.yaml打包的文件與記錄模型。例如,一個模式conda.yaml與一個違約通道的依賴可能看起來像這樣:
通道
conda.yaml
渠道:- - - - - -違約依賴關係:- - - - - -python = 3.8.8- - - - - -皮普- - - - - -皮普:- - - - - -mlflow- - - - - -scikit-learn = = 0.23.2- - - - - -cloudpickle = = 1.6.0的名字:mlflow-env
因為磚不能確定你使用的水蟒庫與模型進行交互是允許你和蟒蛇的關係下,磚不是迫使其客戶進行任何更改。beplay体育app下载地址如果你使用Anaconda.com回購通過使用磚是允許在蟒蛇的條件下,您不需要采取任何行動。
如果你想換頻道中使用模型的環境中,你可以注冊模型到模型中注冊一個新的conda.yaml。你可以通過指定的通道conda_env參數的log_model ()。
conda_env
log_model ()
更多的信息log_model ()API,看到MLflow味道你正在與文檔模型,例如,為scikit-learn log_model。
的更多信息conda.yaml文件,請參見MLflow文檔。
遺留MLflow模型用於Python MLflow服務模型。你必須聲明所有模型conda環境的依賴性。看到日誌模型依賴。
使模型服務,你必須有集群創建權限。
在注冊表磚從模型的模型服務是可用的。
你讓一個模型為其服務注冊頁麵模型。
單擊服務選項卡。如果模型是服務尚未啟用,支持服務按鈕出現。
點擊支持服務。服務選項卡出現了狀態顯示為等待。幾分鍾後,狀態更改好了。
禁用一個服務模型,點擊停止。
從服務選項卡中,您可以發送一個請求到服務模型和視圖響應。
每個部署模型版本被分配一個或多個獨特的uri。至少,每個模型版本分配URI構造如下:
< databricks-instance > /模型/ < registered-model-name > / <模型版本> /調用
例如,調用模型注冊的版本1iris-classifier使用這個URI:
iris-classifier
https:// < databricks-instance > /模型/ iris-classifier / 1 /調用
你也可以叫一個模型版本的階段。例如,如果版本1的生產階段,也可以使用這個URI得分:
https:// < databricks-instance > /模型/ iris-classifier /生產/調用
頂部的可用模式uri列表出現在服務選項卡頁麵模型的版本。
所有活動部署(non-archived)模型版本,你可以使用uri查詢。磚時自動部署新的模型版本的注冊,並自動刪除舊版本時存檔。
所有部署版本注冊模型共享相同的集群。
模型訪問權限繼承模型注冊表。啟用或禁用服務功能需要“管理”權限的注冊模型。任何閱讀權利可以得分的任何部署的版本。
取得一個部署模型中,您可以使用UI或發送一個REST API請求的URI模式。
這是最簡單和最快的方式來測試模型。你可以插入模型以JSON格式輸入數據並單擊發送請求。如果模型記錄了一個輸入的例子(如圖形所示上圖),點擊負載的例子加載輸入示例。
你可以發送一個請求通過REST API使用得分標準磚的身份驗證。下麵的例子演示使用個人身份驗證訪問令牌MLflow 1. x。
作為一個安全最佳實踐進行身份驗證時使用自動化工具,係統、腳本和應用程序,磚建議您使用OAuth令牌或個人訪問令牌屬於服務主體而不是用戶工作區。為服務主體,創建令牌管理個人訪問令牌服務主體。
給定一個MODEL_VERSION_URI就像https:// < databricks-instance > /模型/ iris-classifier /生產/調用(< databricks-instance >是磚實例的名稱)和一個磚REST API的令牌DATABRICKS_API_TOKEN下麵的例子顯示如何查詢服務模型:
MODEL_VERSION_URI
< databricks-instance >
DATABRICKS_API_TOKEN
下麵的例子反映了評分模型格式創建MLflow 1. x。如果你喜歡使用MLflow 2.0,你需要更新你的請求負載格式。
片段查詢模型接受dataframe輸入。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json內容類型:\- d”({“sepal_length”: 5.1,“sepal_width”: 3.5,“petal_length”: 1.4,“petal_width”: 0.2}]“
片段查詢模型接受張量輸入。張量的輸入應格式化中描述TensorFlow服務的API文檔。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json內容類型:\- d{“輸入”:[[5.1,3.5,1.4,0.2]]}”
進口numpy作為np進口熊貓作為pd進口請求defcreate_tf_serving_json(數據):返回{“輸入”:{的名字:數據(的名字]。tolist()為的名字在數據。鍵()}如果isinstance(數據,dict)其他的數據。tolist()}defscore_model(model_uri,databricks_token,數據):頭={“授權”:f“不記名{databricks_token}”,“內容類型”:“application / json”,}data_json=數據。to_dict(東方=“記錄”)如果isinstance(數據,pd。DataFrame)其他的create_tf_serving_json(數據)響應=請求。請求(方法=“職位”,頭=頭,url=model_uri,json=data_json)如果響應。status_code! =200年:提高異常(f“請求失敗狀態{響應。status_code},{響應。文本}”)返回響應。json()#接受大熊貓DataFrames評分模型數據=pd。DataFrame([{“sepal_length”:5.1,“sepal_width”:3.5,“petal_length”:1.4,“petal_width”:0.2}))score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,數據)#得分一個接受張量的模型數據=np。asarray([[5.1,3.5,1.4,0.2]])score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,數據)
可以得分數據集掌權BI桌麵使用以下步驟:
打開數據集你想得分。
去轉換數據。
在左邊麵板中右鍵單擊並選擇創建新的查詢。
去視圖>高級編輯器。
用下麵的代碼片段,替換查詢身體後填入一個適當的DATABRICKS_API_TOKEN和MODEL_VERSION_URI。
(數據集作為表)作為表= >讓call_predict=(數據集作為表)作為列表= >讓apiToken=DATABRICKS_API_TOKEN,modelUri=MODEL_VERSION_URI,responseList=Json。文檔(網絡。內容(modelUri,(頭=(#“內容類型”=“application / json”,#“授權”=文本。格式(無記名# {0},{apiToken})),內容=Json。FromValue(數據集)]))在responseList,predictionList=列表。結合(列表。變換(表。分裂(數據集,256年),(x)= >call_predict(x))),predictionsTable=表。FromList(predictionList,(x)= >{x},{“預測”}),datasetWithPrediction=表。加入(表。AddIndexColumn(predictionsTable,“指數”),“指數”,表。AddIndexColumn(數據集,“指數”),“指數”)在datasetWithPrediction
名稱查詢你想要的模型名稱。
打開高級查詢編輯器為你的數據集和應用模型的功能。
服務頁麵顯示狀態指標服務集群以及各個模型版本。
檢查服務集群的狀態,使用模型的事件選項卡,顯示一個列表的所有服務事件模型。
檢查單個模型的狀態版本,單擊模型版本選項卡並滾動到視圖日誌或版本的事件選項卡。
定製服務集群,使用集群設置選項卡上的服務選項卡。
修改內存大小和數量的核心服務集群,使用實例類型下拉菜單中選擇所需的集群配置。當你點擊保存,現有的集群是終止並創建一個新的集群與指定的設置。
添加一個標簽,類型的名稱和值添加標簽字段並單擊添加。
編輯或刪除現有的標簽,點擊一個圖標的行動列的標簽表。
遺留模型可以自動查找服務從在線商店發布特性值。
. .aws:
磚遺產MLflow模型服務支持自動功能查找從這些在線商店:- - - - - -亞馬遜DynamoDB(半.3.8和以上)- - - - - -亞馬遜極光(MySQL- - - - - -兼容的)- - - - - -亞馬遜RDSMySQL. .azure::磚遺產MLflow模型服務支持自動功能查找從這些在線商店:- - - - - -Azure宇宙DB(半.5.0和以上)- - - - - -Azure數據庫為MySQL
ResolvePackageNotFound:pyspark = 3.1.0
這個錯誤可能發生取決於如果一個模型pyspark和記錄使用磚運行時的8.倍。如果你看到這個錯誤,指定pyspark版本明確記錄模型時,使用“conda_env”參數。
pyspark
未被認可的內容類型參數:格式
這個錯誤可能發生的新的MLflow 2.0得分協議格式。如果你看到這個錯誤,你可能使用一個過時的得分請求格式。解決錯誤,您可以:
更新你的得分請求格式的最新協議。
下麵的例子反映了得分格式在MLflow 2.0中引入的。如果你喜歡使用MLflow 1。x,你可以修改log_model ()API調用,包括所需的MLflow版本依賴的extra_pip_requirements參數。這樣做可以確保使用適當的得分格式。
extra_pip_requirements
mlflow。<味道>。log_model(…,extra_pip_requirements=(“mlflow = = 1 *”。])
查詢模型接受大熊貓dataframe輸入。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json內容類型:\- d”{“dataframe_records”: [{”sepal_length (cm)”:5.1,“sepal_width (cm)”:3.5,”petal_length (cm)": 1.4, "petal_width": 0.2},{" sepal_length (cm)”:4.2, "sepal_width (cm)": 5.0, "petal_length (cm)": 0.8, "petal_width": 0.5}]}'
查詢模型接受張量輸入。張量的輸入應格式化中描述TensorFlow服務的API文檔。
進口numpy作為np進口熊貓作為pd進口請求defcreate_tf_serving_json(數據):返回{“輸入”:{的名字:數據(的名字]。tolist()為的名字在數據。鍵()}如果isinstance(數據,dict)其他的數據。tolist()}defscore_model(model_uri,databricks_token,數據):頭={“授權”:f“不記名{databricks_token}”,“內容類型”:“application / json”,}data_dict={“dataframe_split”:數據。to_dict(東方=“分裂”)}如果isinstance(數據,pd。DataFrame)其他的create_tf_serving_json(數據)data_json=json。轉儲(data_dict)響應=請求。請求(方法=“職位”,頭=頭,url=model_uri,json=data_json)如果響應。status_code! =200年:提高異常(f“請求失敗狀態{響應。status_code},{響應。文本}”)返回響應。json()#接受大熊貓DataFrames評分模型數據=pd。DataFrame([{“sepal_length”:5.1,“sepal_width”:3.5,“petal_length”:1.4,“petal_width”:0.2}))score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,數據)#得分一個接受張量的模型數據=np。asarray([[5.1,3.5,1.4,0.2]])score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,數據)
如果您的評分要求使用MLflow客戶端mlflow.pyfunc.spark_udf ()MLflow客戶端升級到版本2.0或更高版本,使用最新的格式。了解更多更新的MLflow模型評分MLflow 2.0協議。
mlflow.pyfunc.spark_udf ()
關於輸入數據格式的更多信息接受的服務器(例如,熊貓split-oriented格式),看到的MLflow文檔。