創建和管理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。

  1. 單擊服務選項卡。如果模型是服務尚未啟用,使Serverless實時推理按鈕出現。

  2. 點擊使Serverless實時推理。服務選項卡出現了狀態顯示為等待。幾分鍾後,狀態更改好了。

修改計算配置的端點

使端點模型之後,您可以根據需要設置計算配置API或UI。這個配置是特別有用如果你需要額外的資源模型。工作負載大小和計算配置發揮關鍵作用的資源分配給您的模型。了解更多關於WorkloadConfigSpec對象

使用API

配置的狀態更新可以跟蹤config_update_status場的端點版本狀態

把/預覽/ model-serving-api / endpoints-v2 / update-compute-config

在下麵,填充desired_workload_config_specWorkloadConfigSpec屬性。

{“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_splitjson序列化熊貓Dataframe在嗎分裂取向。

    {“dataframe_split”:{“指數”:(0,1),“列”:(“花萼長度(厘米)”,“花萼寬(cm)”,“花瓣長度(厘米)”,“花瓣寬度(cm)”),“數據”:[[5.1,3.5,1.4,0.2),(4.9,3.0,1.4,0.2]]}}
  • dataframe_recordsjson序列化熊貓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)比t1t3,所以它代表的輸入是不可能的實例格式。

    {“輸入”:{“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]]]}}

響應格式

端點的響應是在以下格式。模型的輸出是包裹在一個“預測”鍵。

{“預測”:“從模型> < JSON輸出”}

使用用戶界麵

發送請求使用UI是最簡單快捷的方法來測試模型。你可以插入模型以JSON格式輸入數據並單擊發送請求。如果模型記錄了一個輸入的例子(如圖形所示上圖),點擊顯示的例子加載輸入示例。

使用API

你可以發送一個請求通過REST API使用得分標準磚的身份驗證。下麵的例子演示使用個人身份驗證訪問令牌。

請注意

作為一個安全最佳實踐進行身份驗證時使用自動化工具,係統、腳本和應用程序,磚建議您使用OAuth令牌或個人訪問令牌屬於服務主體而不是用戶工作區。為服務主體,創建令牌服務主體的管理令牌

給定一個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(數據,pdDataFrame)其他的create_tf_serving_json(數據)響應=請求請求(方法=“職位”,=,url=model_uri,json=data_json)如果響應status_code! =200年:提高異常(f“請求失敗狀態{響應status_code},{響應文本})返回響應json()#接受大熊貓DataFrames評分模型數據=pdDataFrame([{“sepal_length”:5.1,“sepal_width”:3.5,“petal_length”:1.4,“petal_width”:0.2}))score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,數據)#得分一個接受張量的模型數據=npasarray([[5.1,3.5,1.4,0.2]])score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,數據)

可以得分數據集掌權BI桌麵使用以下步驟:

  1. 打開數據集你想得分。

  2. 去轉換數據。

  3. 在左邊麵板中右鍵單擊並選擇創建新的查詢

  4. 視圖>高級編輯器

  5. 用下麵的代碼片段,替換查詢身體後填入一個適當的DATABRICKS_API_TOKENMODEL_VERSION_URI

    (數據集作為)作為= >call_predict=(數據集作為)作為列表= >apiToken=DATABRICKS_API_TOKEN,modelUri=MODEL_VERSION_URI,responseList=Json文檔(網絡內容(modelUri,(=(#“內容類型”=“application / json”,#“授權”=文本。格式(無記名# {0},{apiToken})),內容={“dataframe_records”:JsonFromValue(數據集)}]))responseList,predictionList=列表結合(列表變換(分裂(數據集,256年),(x)= >call_predict(x))),predictionsTable=FromList(predictionList,(x)= >{x},{“預測”}),datasetWithPrediction=加入(AddIndexColumn(predictionsTable,“指數”),“指數”,AddIndexColumn(數據集,“指數”),“指數”)datasetWithPrediction
  6. 名稱查詢你想要的模型名稱。

  7. 打開高級查詢編輯器為你的數據集和應用模型的功能。

看到以下筆記本為例如何測試你的Serverless實時推理端點與Python模型:

測試Serverless實時推理端點的筆記本

更新模型版本的一個端點

模型版本必須是在分期或生產模型中注冊才可以服務端點。

使用API

過渡到服務新模式版本,您可以使用該模型注冊表來你想要的模型版本服務過渡到其適當的階段。

以下代碼示例轉換模型的版本2ElasticNet暫存。通過設置archive_existing_versions真正的任何現有的模型版本歸檔,使分段URL指向新模型版本之後準備服務。新版本之前準備好,Staging端點服務於舊模式版本,因此過渡是由零停機時間。

POST / mlflow /磚/模型版本/過渡階段{“名稱”:“ElasticNet”,“版本”:“2”,“舞台”:“暫存”,“archive_existing_versions”:真的,“評論”:“部署版本1分段端點!”}

保持在一個階段多個版本

你也可以選擇繼續前麵的登台版本的登台。一個模型的多個版本可以在同一個階段。在這種情況下,兩個版本都提供,但隻能分期URL點最新的的版本。老版本仍然可以訪問的URL。

如果你想嚐試一個新版本在你舉辦端點,你可以做上麵的一樣,但集archive_existing_versions確保前麵的臨時版本不會存檔。

POST / mlflow /磚/模型版本/過渡階段{“archive_existing_versions”:假的,…}

使用用戶界麵

模型版本過渡到暫存或生產使用磚機器學習的界麵:

  1. 選擇模型圖標”src=模型在側邊欄。

  2. 識別並選擇您希望更新注冊模型。

  3. 選擇過渡到你想要的模型版本暫存生產。打開模型版本的詳細頁麵的鏈接。

  4. 使用階段頂端的下拉菜單中正確過渡模型版本暫存或生產。

得到模型端點的狀態

使用API

磚提供了以下的檢查一個端點的狀態。了解更多關於EndpointStatus對象

/ / mlflow / endpoints-v2預覽/獲得狀態
{“registered_model_name”:“ElasticNet”}

這返回EndpointStatus對象屬性:

{“endpoint_status”:{“EndpointStatus”}}

使用用戶界麵

在UI中,您可以檢查一個端點的狀態的狀態頂部的指標服務選項卡。

得到模型端點的狀態版本

你可以得到特定端點的狀態已經部署的版本。這可以讓您:

  • 跟蹤服務版本。

  • 跟蹤這些版本的狀態。

  • 檢查一個特定的模型版本是否可以使用了。

使用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”}}

舞台上的地位

你也可以得到一個特定階段的地位。要做到這一點,首先需要確定哪些目前服務端點版本階段。獲取這些信息,您可以使用ListVersionAliases

/ / mlflow / endpoints-v2預覽/ list-version-aliases
{“registered_model_name”:“ElasticNet”}

這將返回:

{“別名”:({“別名”:“暫存”,“endpoint_version_name”:“2”},{“別名”:“生產”,“endpoint_version_name”:“1”}]}

從那裏,您可以使用上麵的特定端點的狀態版本。

使用用戶界麵

服務UI的選項卡中,您可以看到每個端點版本有自己的選項卡左邊。當您選擇每個選項卡時,會出現一個特定版本的詳細信息。目前的版本可以看到一個階段的服務暫存生產標簽上的端點的版本。

禁用服務模型

使用API

您可以使用API來禁用模型服務模型中模型注冊中心注冊。

禁用模型為一個模型使用禁用服務API服務:

POST /預覽/ mlflow / endpoints-v2 /禁用{“registered_model_name”:“ElasticNet”}

使用用戶界麵

你可以禁用一個模型為其服務注冊頁麵模型

  1. 單擊服務選項卡。如果模型是服務尚未啟用,使Serverless實時推理按鈕出現。

  2. 點擊禁用服務

調試模式端點

請注意

你隻能調試您的端點通過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_statusconfig_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工作流模型的步驟。

培訓和注冊一個scikit-learn模型為模型提供筆記本

培訓和注冊一個Pytorch模型為模型提供筆記本

培訓和注冊一個HuggingFace模型為模型提供筆記本