注冊表人磚MLflow模型
預覽
這個特性是在公共預覽。
人讓你偵聽模型注冊事件所以你的集成可以自動觸發動作。您可以使用人自動化和集成你的機器學習管道與現有CI / CD工具和工作流。例如,您可以觸發CI構建當創建一個新的模型版本或通知你的團隊成員通過鬆弛每次模型過渡到生產要求。
人可以通過磚REST API或Python客戶機databricks-registry-webhooks
在PyPI。
請注意
人沒有當你使用模型統一目錄。一種替代方法,看到我可以在事件觸發webhook-like操作嗎?。
Webhook事件
你可以指定一個webhook觸發一個或多個事件:
MODEL_VERSION_CREATED:創建一個新的模型版本相關的模型。
MODEL_VERSION_TRANSITIONED_STAGE:一個模型版本的階段了。
TRANSITION_REQUEST_CREATED:用戶請求一個模型版本的階段轉變。
COMMENT_CREATED:用戶寫了評論注冊模型。
REGISTERED_MODEL_CREATED:創建一個新的注冊模型。這個事件類型隻能為registry-wide webhook指定,可由不指定型號名稱創建請求。
MODEL_VERSION_TAG_SET對模型:用戶設置一個標記版本。
MODEL_VERSION_TRANSITIONED_TO_STAGING版本:一個模型轉換到登台。
MODEL_VERSION_TRANSITIONED_TO_PRODUCTION版本:一個模型轉換到生產。
MODEL_VERSION_TRANSITIONED_TO_ARCHIVED:一個模型版本存檔。
TRANSITION_REQUEST_TO_STAGING_CREATED:一個用戶請求被轉換到分段模型版本。
TRANSITION_REQUEST_TO_PRODUCTION_CREATED:用戶請求一個模型轉換到生產版本。
TRANSITION_REQUEST_TO_ARCHIVED_CREATED:用戶請求一個模型版本存檔。
類型的人
有兩種類型的人則基於觸發目標:
人與HTTP端點(HTTP注冊表人):發送觸發一個HTTP端點。
人與工作觸發器(注冊表人)工作:觸發一個工作在一個磚工作區。如果啟用了IP allowlisting工作的工作空間,你必須allowlist工作區IPs模型的注冊表。看到IP allowlisting注冊表人的工作為更多的信息。
也有兩種類型的人根據他們的範圍,不同的訪問控製要求:
模型相關的人:webhook適用於特定的注冊模型。你必須有可以管理注冊的權限模型創建、修改、刪除,或測試模型相關的人。
Registry-wide人:webhook引發任何事件注冊模型在工作區中,包括創建一個新的注冊模型。創建一個registry-wide webhook,省略了
model_name
字段創建。你必須有工作空間管理權限來創建、修改、刪除,或測試registry-wide人。
Webhook載荷
每個事件觸發在負載最小的領域包括了即將離任的請求webhook端點。
敏感的信息,如工件路徑位置排除在外。用戶和主體以適當的acl可以使用客戶端或REST api查詢模型注冊表信息。
有效載荷不加密。看到安全信息如何驗證磚webhook的來源。
的
文本
領域促進鬆弛集成。發出一個鬆弛的信息,提供一個鬆弛webhook webhook URL端點。
注冊webhook工作負載
負載工作注冊webhook取決於類型的工作,發送到工作/運行
端點在目標工作區。
例子有效載荷
事件:MODEL_VERSION_TRANSITIONED_STAGE
響應
帖子/你的/端點/為/事件/模型- - - - - -版本/階段- - - - - -過渡- - -數據{“事件”:“MODEL_VERSION_TRANSITIONED_STAGE”,“webhook_id”:“c5596721253c4b429368cf6f4341b88a”,“event_timestamp”:1589859029343,“model_name”:“Airline_Delay_SparkML”,“版本”:“8”,“to_stage”:“生產”,“from_stage”:“沒有”,“文本”:“注冊模型someModel version 8從沒有生產。”}
事件:MODEL_VERSION_TAG_SET
響應
帖子/你的/端點/為/事件/模型- - - - - -版本/標簽- - - - - -集- - -數據{“事件”:“MODEL_VERSION_TAG_SET”,“webhook_id”:“8 d7fc634e624474f9bbfde960fdf354c”,“event_timestamp”:1589859029343,“model_name”:“Airline_Delay_SparkML”,“版本”:“8”,“標簽”:[{“關鍵”:“key1”,“價值”:“value1”},{“關鍵”:“key2”,“價值”:“value2”}),“文本”:“example@yourdomain.com版本標記(s)“key1”= >“value1’,‘key2 = >“value2”注冊模型someModel version 8。”}
安全
為了安全,磚包括X-Databricks-Signature頭計算從有效負載和共享密鑰與webhook使用有關HMAC sha - 256的算法。
此外,您可以包括一個標準的授權在即將離任的請求通過指定一個標題HttpUrlSpec
webhook。
客戶端驗證
如果設置了一個共享的秘密,載荷收件人應該驗證HTTP請求的來源通過使用共享密鑰HMAC-encode負載,然後比較編碼值X-Databricks-Signature
的頭。這是特別重要的,如果SSL證書驗證是禁用的(也就是說,如果enable_ssl_verification
字段被設置為假
)。
請注意
enable_ssl_verification
是真正的
默認情況下。自簽名證書,這一領域必須假
,目標服務器必須禁用驗證證書。
為了安全目的,磚建議你執行秘密驗證HMAC-encoded部分負載。如果你禁用主機名驗證,增加的風險可以惡意請求路由到一個意想不到的主機。
進口hmac進口hashlib進口json秘密=shared_secret。編碼(“utf - 8”)signature_key=“X-Databricks-Signature”defvalidate_signature(請求):如果不請求。頭。has_key(signature_key):提高異常(“沒有X-Signature。Webhook不可信。”)x_sig=請求。頭。得到(signature_key)身體=請求。身體。編碼(“utf - 8”)h=hmac。新(秘密,身體,hashlib。sha256)computed_sig=h。hexdigest()如果不hmac。compare_digest(computed_sig,x_sig。編碼()):提高異常(“X-Signature不匹配。Webhook不可信。”)
IP allowlisting注冊表人的工作
使用webhook觸發器工作運行在一個不同的工作空間,IP allowlisting啟用,你必須allowlist該地區NAT IP webhook所在地接受傳入的請求。
如果webhook和工作在同一個工作區,您不需要添加任何allowlist IPs。
請聯係您的賬戶團隊識別IPs需要allowlist。
例子
本部分包括:
兩個例如筆記本電腦:一個說明REST API,說明一個Python客戶機。
HTTP注冊webhook工作流示例
1。創建一個webhook
當一個HTTPS端點準備接收webhook事件請求,您可以創建一個使用人數據磚webhook REST API。例如,webhook的URL可以鬆弛發布消息通道。
curl - x美元POST - h“授權:無記名<訪問令牌>”- d\”{model_name”:“<模型名稱>”,“事件”(“MODEL_VERSION_CREATED”):,“描述”:“鬆弛的通知”,“狀態”:“TEST_MODE”," http_url_spec ": {“url”:“https://hooks.slack.com/services/..”。“秘密”:“anyRandomString”“授權”:“不記名AbcdEfg1294”}}’https:// < databricks-instance > . . / api / 2.0 / mlflow / registry-webhooks /創建
從databricks_registry_webhooks進口RegistryWebhooksClient,HttpUrlSpechttp_url_spec=HttpUrlSpec(url=“https://hooks.slack.com/services/..”。,秘密=“secret_string”,授權=“不記名AbcdEfg1294”)http_webhook=RegistryWebhooksClient()。create_webhook(model_name=“<模型名稱>”,事件=(“MODEL_VERSION_CREATED”),http_url_spec=http_url_spec,描述=“鬆弛的通知”,狀態=“TEST_MODE”)
響應
{“webhook”:{“id”:“1234567890”,“creation_timestamp”:1571440826026,“last_updated_timestamp”:1582768296651,“狀態”:“TEST_MODE”,“事件”:【“MODEL_VERSION_CREATED”),“http_url_spec”:{“url”:“https://hooks.slack.com/services/..”。,“enable_ssl_verification”:真正的}}}
您還可以創建一個HTTP注冊webhook與磚起程拓殖的提供者和databricks_mlflow_webhook。
2。測試webhook
前麵的webhook成立於TEST_MODE
,所以模擬事件可以觸發發送一個請求到指定的URL。然而,webhook不觸發一個真實事件。測試端點返回狀態碼和身體收到指定的URL。
curl - x美元POST - h“授權:無記名<訪問令牌>”- d\”{" id ":“1234567890”}’\https:// < databricks-instance > . . / api / 2.0 / mlflow / registry-webhooks /測試
從databricks_registry_webhooks進口RegistryWebhooksClienthttp_webhook=RegistryWebhooksClient()。test_webhook(id=“1234567890”)
響應
{“狀態”:200年,“身體”:“OK”}
3所示。更新webhook活躍狀態
為真實事件使webhook,設置其地位活躍的
通過一個更新調用,也可以用來改變它的任何其他屬性。
curl - x美元補丁- h“授權:無記名<訪問令牌>”- d\" {" id ":“1234567890”,“狀態”:“活躍”}”\https:// < databricks-instance > . . / api / 2.0 / mlflow / registry-webhooks /更新
從databricks_registry_webhooks進口RegistryWebhooksClienthttp_webhook=RegistryWebhooksClient()。update_webhook(id=“1234567890”,狀態=“活躍”)
響應
{“webhook”:{“id”:“1234567890”,“creation_timestamp”:1571440826026,“last_updated_timestamp”:1582768296651,“狀態”:“活躍”,“事件”:【“MODEL_VERSION_CREATED”),“http_url_spec”:{“url”:“https://hooks.slack.com/services/..”。,“enable_ssl_verification”:真正的}}}
4所示。刪除webhook
禁用webhook,設置它的地位禁用
使用類似的更新命令(如上所述),或刪除它。
curl - x美元刪除- h“授權:無記名<訪問令牌>”- d\”{" id ":“1234567890”}’\https:// < databricks-instance > . . / api / 2.0 / mlflow / registry-webhooks /刪除
從databricks_registry_webhooks進口RegistryWebhooksClienthttp_webhook=RegistryWebhooksClient()。delete_webhook(id=“1234567890”)
響應
{}
工作注冊webhook工作流示例
工作流管理的工作登記人則類似於HTTP注冊表人,唯一不同的是job_spec
領域取代了http_url_spec
字段。
人,你可以觸發工作在同一個工作區或在一個不同的工作空間。使用可選參數。指定的工作區workspace_url
。如果沒有workspace_url
存在,默認行為是引發webhook工作在同一個工作區。
注冊表webhook創建一個工作
curl - x美元POST - h“授權:無記名<訪問令牌>”- d\”{model_name”:“<模型名稱>”,“事件”(“TRANSITION_REQUEST_CREATED”):,“描述”:“工作webhook觸發”,“狀態”:“TEST_MODE”," job_spec ": {“job_id”:“1”,“workspace_url”:“https://my-databricks-workspace.com”,:“access_token dapi12345…”}}’https:// < databricks-instance > . . / api / 2.0 / mlflow / registry-webhooks /創建
從databricks_registry_webhooks進口RegistryWebhooksClient,JobSpecjob_spec=JobSpec(job_id=“1”,workspace_url=“https://my-databricks-workspace.com”,access_token=“dapi12345……”)job_webhook=RegistryWebhooksClient()。create_webhook(model_name=“<模型名稱>”,事件=(“TRANSITION_REQUEST_CREATED”),job_spec=job_spec,描述=“webhook觸發工作”,狀態=“TEST_MODE”)
響應
{“webhook”:{“id”:“1234567891”,“creation_timestamp”:1591440826026,“last_updated_timestamp”:1591440826026,“狀態”:“TEST_MODE”,“事件”:【“TRANSITION_REQUEST_CREATED”),“job_spec”:{“job_id”:“1”,“workspace_url”:“https://my-databricks-workspace.com”}}}
您還可以創建注冊表webhook與工作磚起程拓殖的提供者和databricks_mlflow_webhook。
列表中注冊表人的例子
美元curl - x - h“授權:無記名<訪問令牌>”- d\”{model_name”:“<模型名稱>”}”https:// < databricks-instance > . . / api / 2.0 / mlflow / registry-webhooks /列表
從databricks_registry_webhooks進口RegistryWebhooksClientwebhooks_list=RegistryWebhooksClient()。list_webhooks(model_name=“<模型名稱>”)
響應
{“人”:[{“id”:“1234567890”,“creation_timestamp”:1571440826026,“last_updated_timestamp”:1582768296651,“狀態”:“活躍”,“事件”:【“MODEL_VERSION_CREATED”),“http_url_spec”:{“url”:“https://hooks.slack.com/services/..”。,“enable_ssl_verification”:真正的}},{“id”:“1234567891”,“creation_timestamp”:1591440826026,“last_updated_timestamp”:1591440826026,“狀態”:“TEST_MODE”,“事件”:【“TRANSITION_REQUEST_CREATED”),“job_spec”:{“job_id”:“1”,“workspace_url”:“https://my-databricks-workspace.com”}})}