創建和管理Serverless實時推理端點
重要的
這個文檔已經退休了,可能不會被更新。產品、服務或技術中提到的這些內容不再支持。
本文中的指導是模型的預覽版本服務功能,以前Serverless實時推理。磚建議您遷移模型的工作流服務可用的一般功能。看到模型服務與磚。
預覽
這個特性是在公共預覽。
本文描述了如何創建和管理使用磚的端點Serverless實時推理。
重要的
API定義和工作流過程中如有變更,恕公共預覽。
如果你依靠水蟒,審查服務條款請注意附加信息。
需求
Serverless實時推理隻是用於麵向MLflow MLflow模型中的模型注冊注冊表。你必須聲明所有模型conda環境依賴性或要求文件。
如果你沒有注冊模式,看到筆記本的例子預包裝模型可以使用設置和運行與Serverless實時推理端點。
必須啟用您的工作區Serverless實時推理。使模型服務Serverless實時推理,你必須有集群創建權限。
如果你從一個私人使用自定義庫或庫鏡像服務器與你的模型,看看使用自定義Python庫模型在你創建模型端點。
創建一個模型服務端點
您可以創建Serverless實時推理模型服務的端點磚機器學習API或磚機器學習的UI。端點可以注冊任何Python MLflow模型在模型中注冊中心注冊。
使用API
您可以使用啟用服務API來創建一個服務端點模型。在接下來的例子中,ElasticNet
的名稱注冊模型。
文章https:// < databricks-instance > . . / api / 2.0 /預覽/ mlflow / endpoints-v2 /啟用{“registered_model_name”:“ElasticNet”}
使用用戶界麵
你讓一個模型為其服務注冊頁麵模型磚的機器學習的UI。
單擊服務選項卡。如果模型是服務尚未啟用,使Serverless實時推理按鈕出現。
點擊使Serverless實時推理。服務選項卡出現了狀態顯示為等待。幾分鍾後,狀態更改好了。
修改計算配置的端點
使端點模型之後,您可以根據需要設置計算配置API或UI。這個配置是特別有用如果你需要額外的資源模型。工作負載大小和計算配置發揮關鍵作用的資源分配給您的模型。了解更多關於WorkloadConfigSpec對象。
使用API
配置的狀態更新可以跟蹤config_update_status
場的端點版本狀態。
把/預覽/ model-serving-api / endpoints-v2 / update-compute-config
在下麵,填充desired_workload_config_spec
與WorkloadConfigSpec
屬性。
{“registered_model_name”:“ElasticNet”,“舞台”:“登台|生產”,“desired_workload_config_spec”:{“WorkloadConfigSpec”}}
評分模型端點
取得一個部署模型,你可以發送一個REST API請求URL或使用UI模型。
你應該叫一個模型通過調用API的階段。例如,如果版本1的生產階段,它可以使用這你的得分:
https:// < databricks-instance > / model-endpoint / iris-classifier /生產/調用
可用模型uri列表的頂部模型版本選項卡上的服務選項卡。
請求格式
請求應該被發送通過構造一個JSON與下麵的一個鍵和一個JSON對象對應的輸入格式。
有四個輸入JSON格式取決於您的用例:
dataframe_split
json序列化熊貓Dataframe在嗎分裂
取向。{“dataframe_split”:{“指數”:(0,1),“列”:(“花萼長度(厘米)”,“花萼寬(cm)”,“花瓣長度(厘米)”,“花瓣寬度(cm)”),“數據”:[[5.1,3.5,1.4,0.2),(4.9,3.0,1.4,0.2]]}}
dataframe_records
json序列化熊貓Dataframe在嗎記錄
取向。請注意
這種格式不能保證保存列排序,和
分裂
格式是首選的記錄
格式。{“dataframe_records”:({“花萼長度(厘米)”:5.1,“花萼寬(cm)”:3.5,“花瓣長度(厘米)”:1.4,“花瓣寬度(cm)”:0.2},{“花萼長度(厘米)”:4.9,“花萼寬(cm)”:3,“花瓣長度(厘米)”:1.4,“花瓣寬度(cm)”:0.2},{“花萼長度(厘米)”:4.7,“花萼寬(cm)”:3.2,“花瓣長度(厘米)”:1.3,“花瓣寬度(cm)”:0.2}]}
實例
張量是一種tensors-based格式,接受行格式。使用此格式如果所有輸入張量有相同的六月十維度。從概念上講,每個實例列表中的張量可以與其他同名的張量列表的其餘部分來構建完整的輸入張量模型,這隻會是可能的如果所有的張量有相同的六月十維度。{“實例”:(“一個”,“b”,“c”]}
或
在下麵的例子中,有三個維度,具體每個輸入三個張量。
{“實例”:({“t1”:“一個”,“t2”:(1,2,3,4,5),“t3”:[[1,2),(3,4),(5,6]]},{“t1”:“b”,“t2”:(6,7,8,9,10),“t3”:[[7,8),(9,10),(11,12]]}]}
輸入
發送查詢與張量柱狀格式。這實際上要求是不同的,因為有一個不同數量的張量的實例t2
(3)比t1
和t3
,所以它代表的輸入是不可能的實例
格式。{“輸入”:{“t1”:(“一個”,“b”),“t2”:[[1,2,3,4,5),(6,7,8,9,10),(11,12,13,14,15]],“t3”:[[[1,2),(3,4),(5,6]],[[7,8),(9,10),(11,12]]]}}
使用API
你可以發送一個請求通過REST API使用得分標準磚的身份驗證。下麵的例子演示使用個人身份驗證訪問令牌。
給定一個MODEL_VERSION_URI
就像https:// < databricks-instance > /模型/ iris-classifier /生產/調用
,在那裏< databricks-instance >
是磚實例的名稱和磚REST API的令牌DATABRICKS_API_TOKEN
,下麵是例子的片段如何評分模型。
評分模型接受dataframe記錄輸入格式。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json內容類型:\- d{“dataframe_records”:({“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=json。轉儲({“dataframe_records”:數據。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})),內容={“dataframe_records”:Json。FromValue(數據集)}]))在responseList,predictionList=列表。結合(列表。變換(表。分裂(數據集,256年),(x)= >call_predict(x))),predictionsTable=表。FromList(predictionList,(x)= >{x},{“預測”}),datasetWithPrediction=表。加入(表。AddIndexColumn(predictionsTable,“指數”),“指數”,表。AddIndexColumn(數據集,“指數”),“指數”)在datasetWithPrediction
名稱查詢你想要的模型名稱。
打開高級查詢編輯器為你的數據集和應用模型的功能。
看到以下筆記本為例如何測試你的Serverless實時推理端點與Python模型:
更新模型版本的一個端點
模型版本必須是在分期或生產模型中注冊才可以服務端點。
得到模型端點的狀態
使用API
磚提供了以下的檢查一個端點的狀態。了解更多關於EndpointStatus對象。
/ / mlflow / endpoints-v2預覽/獲得狀態
{“registered_model_name”:“ElasticNet”}
這返回EndpointStatus
對象屬性:
{“endpoint_status”:{“EndpointStatus”}}
得到模型端點的狀態版本
你可以得到特定端點的狀態已經部署的版本。這可以讓您:
跟蹤服務版本。
跟蹤這些版本的狀態。
檢查一個特定的模型版本是否可以使用了。
使用API
磚提供兩個api來檢查端點的狀態版本。檢查所有端點的狀態版本特定注冊模式,您可以使用ListVersions
。了解更多關於EndpointVersionStatus對象。
/ / mlflow / endpoints-v2預覽/ list-versions
{“registered_model_name”:“ElasticNet”}
這將返回EndpointVersionStatus
對象屬性:
{“endpoint_statuses”:(“EndpointVersionStatus”]}
或者,如果你已經知道你想知道狀態的特定版本,您可以使用GetVersions
。
/ / mlflow / endpoints-v2預覽/ get-version-status
{“registered_model_name”:“ElasticNet”,“endpoint_version_name”:“1”}
這將返回EndpointVersionStatus
對象屬性:
{“endpoint_status”:{“EndpointVersionStatus”}}
禁用服務模型
調試模式端點
請注意
你隻能調試您的端點通過UI模型。
你可以調試和排除端點登錄查看模型,端點版本的UI選項卡中數據磚機器學習。日誌中所有副本模型的合並所有副本選項卡。
除了模型的日誌,您可以查看重大服務事件有關的模型模型的事件選項卡。
核心API的對象
本節包含了設計模式和語法Serverless實時推理的核心API對象。
重要的
API定義公共預覽期間可能發生變化。
工作負載配置
WorkloadConfigSpec
描述了配置用於規模計算一個特定的階段。
“WorkloadConfigSpec”:{“workload_size_id”:“小|中|大”,“scale_to_zero_enabled”:假}
ComputeConfig
代表配置用於規模計算特定階段的元數據。
在下麵,填充workload_spec
通過替換“WorkloadConfigSpec”
與前麵定義的屬性的WorkloadConfigSpec
對象。
“ComputeConfig”:{“舞台”:“登台|生產”,“creation_timestamp”:12345678,“user_id”:“first.last@m.eheci.com”,“workload_spec”:{“WorkloadConfigSpec”}}
端點狀態
端點的健康狀況反映出的任何階段是否可以得分或資源生成的特定版本的模型。
在接下來的EndpointStatus
對象,填充compute_config
通過重用你的前麵定義的屬性ComputeConfig
作為一個數組對象和其他屬性。
“EndpointStatus”:{“registered_model_name”:“ElasticNet”,“狀態”:“待準備好| |失敗”,“state_message”:“國家信息”,“compute_config”:(“ComputeConfig和附加屬性作為數組”]}
端點版本狀態
一個端點版本特定URI,可以查詢。URI表示單個模型版本目前正在服役的計算計算配置設置為其配置的階段。
在接下來的EndpointVersionStatus
對象,填充配置
字段,service_status
和config_update_status
——通過替換“ComputeConfig”
與前麵定義的屬性的ComputeConfig
對象。
“EndpointVersionStatus”:{“registered_model_name”:“ElasticNet”,“endpoint_version_name”:“1”,“service_status”:{“狀態”:“SERVICE_STATE_UNKNOWN | SERVICE_STATE_PENDING | SERVICE_STATE_READY | SERVICE_STATE_UNKNOWN”,“消息”:“準備好了”,“配置”:{“ComputeConfig”}},“config_update_status”:{“狀態”:“SERVICE_STATE_UNKNOWN | SERVICE_STATE_PENDING | SERVICE_STATE_READY | SERVICE_STATE_UNKNOWN”,“消息”:“等待”,“配置”:{“ComputeConfig”}}}
筆記本的例子
以下筆記本包括不同的模型,您可以使用設置和運行與Serverless實時推理端點。模型的例子可以導入到工作區中遵循的方向導入一個筆記本。你選擇之後,創建一個模型的一個例子,MLflow模型中的注冊表注冊它,然後遵循UI工作流模型的步驟。