開始
用戶指南
管理指南
參考指南
資源
2022年10月14日更新
給我們反饋
預覽
此功能已在公共預覽.
重要的
本文中的指導是針對經典MLflow模型服務的。Databricks建議您將模型服務工作流遷移到無服務器實時推理,以增強模型端點部署和可伸縮性。有關更多信息,請參見提供無服務器實時推理的模型.
經典MLflow模型服務允許您將模型注冊表中的機器學習模型作為REST端點托管,這些REST端點根據模型版本及其階段的可用性自動更新。
當您為給定的注冊模型啟用模型服務時,Databricks會自動為模型創建一個唯一的集群,並將模型的所有非歸檔版本部署到該集群上。如果發生錯誤,Databricks將重新啟動集群,並在禁用為模型服務的模型時終止集群。模型服務自動與模型注冊表同步,並部署任何新的注冊模型版本。部署的模型版本可以通過標準的REST API請求進行查詢。Databricks使用其標準身份驗證對模型的請求進行身份驗證。
雖然該服務處於預覽狀態,但Databricks建議將其用於低吞吐量和非關鍵應用程序。目標吞吐量為200 qps,目標可用性為99.5%,但這兩者都不能保證。此外,每個請求的有效負載大小限製為16 MB。
每個模型版本都使用MLflow進行部署模型部署並在由其依賴項指定的Conda環境中運行。
請注意
隻要服務被啟用,集群就會被維護,即使不存在活動的模型版本。要終止服務集群,請禁用為已注冊模型服務的模型。
該集群被認為是一個通用集群,按照通用工作負載定價。
全球init腳本不在服務集群上運行。
蟒蛇公司更新了他們的服務條款為anaconda.org頻道。根據新的服務條款,如果您依賴Anaconda的包裝和分銷,您可能需要一個商業許可證。看到蟒蛇商業版常見問題解答為更多的信息。你使用任何蟒蛇頻道都要遵守他們的服務條款。
MLflow模型以前記錄過v1.18(Databricks Runtime 8.3 ML或更早版本)默認使用conda進行日誌記錄違約通道(https://repo.anaconda.com/pkgs/)作為依賴性。由於此許可證變更,Databricks已停止使用違約通道用於使用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
因為Databricks不能確定在您與Anaconda的關係下是否允許您使用Anaconda存儲庫與您的模型交互,因此Databricks並沒有強迫其客戶進行任何更改。beplay体育app下载地址如果您通過使用Databricks使用Anaconda.com回購是Anaconda的條款允許的,您不需要采取任何行動。
如果您想要更改模型環境中使用的通道,您可以使用新的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環境中聲明所有的模型依賴項。
要啟用模型服務,您必須具備集群創建權限.
模型服務可在模型注冊中心的Databricks中獲得。
您啟用一個模型,以便從它提供服務注冊頁麵模型.
單擊服務選項卡。如果模型尚未為服務啟用,則支持服務按鈕出現。
點擊支持服務.出現的服務選項卡狀態顯示為等待。幾分鍾後,狀態更改好了。
單擊,禁用服務的模型停止.
從服務選項卡,您可以向所服務的模型發送請求並查看響應。
為每個部署的模型版本分配一個或幾個惟一的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的列表出現在服務頁麵的model Versions選項卡的頂部。
部署了所有活動(非歸檔)模型版本,您可以使用uri查詢它們。Databricks在注冊新模型版本時自動部署新模型版本,並在存檔舊版本時自動刪除舊版本。
注冊模型的所有部署版本共享相同的集群。
模型訪問權限從模型注冊中心繼承。啟用或禁用服務特性需要注冊模型上的“管理”權限。任何具有讀權限的人都可以對部署的任何版本進行評分。
要對已部署的模型進行評分,您可以使用UI或向模型URI發送REST API請求。
這是測試模型最簡單、最快的方法。您可以插入JSON格式的模型輸入數據並單擊發送請求.如果模型已經記錄了一個輸入示例(如上圖所示),單擊負載的例子加載輸入示例。
可以通過使用的REST API發送評分請求標準磚的身份驗證.下麵的示例演示使用個人訪問令牌進行身份驗證。
作為安全最佳實踐,在使用自動化工具、係統、腳本和應用程序進行身份驗證時,Databricks建議您使用屬於服務主體的訪問令牌,而不是工作區用戶。有關更多信息,請參見管理服務主體.
給定一個MODEL_VERSION_URI就像https:// < databricks-instance > /模型/ iris-classifier /生產/調用(< databricks-instance >是Databricks實例的名稱)和Databricks的REST API令牌調用DATABRICKS_API_TOKEN,這裏有一些如何查詢服務模型的例子片段:
MODEL_VERSION_URI
< databricks-instance >
DATABRICKS_API_TOKEN
代碼段來查詢接受數據幀輸入的模型。
curl -X POST -u token: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 token:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json內容類型:\- d'{"inputs": [[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()#評分一個接受熊貓數據幀的模型數據=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,數據)
您可以使用以下步驟在Power BI Desktop中對數據集進行評分:
您想要評分的開放數據集。
轉到轉換數據。
右鍵單擊左側麵板並選擇創建新的查詢.
去查看>高級編輯器.
在填寫適當的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
用您想要的模型名稱命名查詢。
打開數據集的高級查詢編輯器,並應用模型函數。
有關服務器接受的輸入數據格式(例如,麵向分割格式)的更多信息,請參閱MLflow文檔.
服務頁麵顯示服務集群的狀態指示器以及各個模型版本。
要檢查服務集群的狀態,請使用模型的事件選項卡,該選項卡顯示此模型的所有服務事件的列表。
要檢查單個模型版本的狀態,請單擊模型版本選項卡並滾動以查看日誌或版本的事件選項卡。
要自定義服務集群,請使用集群設置選項卡上的服務選項卡。
如果需要修改服務集群的內存大小和內核數,請使用實例類型下拉菜單選擇所需的集群配置。當你點擊保存,終止現有的集群,並使用指定的設置創建一個新的集群。
中鍵入名稱和值即可添加標記添加標簽字段並單擊添加.
控件中的圖標之一可編輯或刪除現有標記行動列的標簽表格
ResolvePackageNotFound:pyspark = 3.1.0
如果模型依賴於pyspark並使用Databricks Runtime 8.x進行記錄。如果看到此錯誤,請指定pyspark版本顯式地記錄模型時,使用“conda_env”參數.
pyspark