使用端點進行推斷

適用於:Azure CLI ml 延伸模組 v2 (現行)Python SDK azure-ai-ml v2 (現行)

定型機器學習模型或機器學習管線之後,您需要部署它們,讓其他人可以取用其預測。 這類執行模式稱為 推斷。 Azure Machine Learning 會使用 端點和部署 的概念來進行機器學習推斷。

端點和部署是兩個建構,可讓您將生產工作負載的介面與服務它的實作分離。

直覺

假設您正在處理需要預測汽車相片類型和色彩的應用程式。 應用程式只需要知道他們使用某種認證對 URL 提出 HTTP 要求、提供汽車的圖片,以及取得汽車的類型和色彩做為字串值。 我們剛才描述的是 端點

顯示端點概念的圖表。

現在,假設 Alice 有一位資料科學家正在處理其實作。 Alice 很熟悉 TensorFlow,因此她決定使用 Keras 循序分類器搭配從 TensorFlow 中樞取用的 RestNet 架構來實作模型。 她已測試模型,且滿意結果。 她決定使用該模型來解決汽車預測問題。 她的模型大小很大,需要 8GB 的記憶體,且有 4 個核心才能執行它。 我們剛才描述的是 部署

顯示部署概念的圖表。

最後,假設在執行數個月之後,組織發現應用程式在沒有理想照明條件的影像上執行效能不佳。 Bob 是另一個資料科學家,知道許多資料引數技術,可用來協助模型在該因素上建置健全性。 不過,他感覺更熟悉使用 Torch,而不是 TensorFlow。 他訓練了另一個模型,然後使用這些技術,並滿意結果。 他想要逐漸在生產環境上嘗試此模型,直到組織準備好淘汰舊模型為止。 其模型在部署到 GPU 時顯示較佳的效能,因此他需要一個部署。 我們剛在 相同的端點下描述另一個部署

顯示具有多個部署之端點概念的圖表。

端點和部署

端點是一個穩定且持久 URL,可用來要求或叫用模型、提供所需的輸入,以及傳回輸出。 端點提供:

  • 穩定且持久 URL (,例如 endpoint-name.region.inference.ml.azure.com) 。
  • 驗證和授權機制。

部署是裝載執行實際推斷之模型或元件所需的一組資源。 單一端點可以包含多個部署,這些部署可以裝載獨立資產,並根據實際資產所需的資源取用不同的資源。 端點具有路由機制,可將用戶端產生的要求路由至端點下的特定部署。

若要正常運作, 每個端點都必須至少有一個部署。 端點和部署是顯示在 Azure 入口網站中的獨立 Azure Resource Manager 資源。

線上和批次端點

Azure Machine Learning 可讓您實作 線上端點批次端點。 線上端點是針對即時推斷所設計,因此會在調用的回應中傳回結果。 另一方面,批次端點是專為長時間執行的批次推斷所設計,因此每次叫用端點時,都會產生執行實際工作的批次作業。

使用時機

使用 線上端點 ,在同步低延遲要求中即時推斷模型運作。 我們建議在下列情況下使用:

  • 您有低延遲需求。
  • 您的模型可以在相對短時間內回答要求。
  • 您的模型輸入符合要求的 HTTP 承載。
  • 您必須依要求數目相應增加。

使用 批次端點 將模型或管線運作 (預覽) ,以進行長時間執行的非同步推斷。 我們建議在下列情況下使用:

  • 您有需要較長時間執行的成本模型或管線。
  • 您想要讓機器學習管線運作,並重複使用元件。
  • 您必須對大量資料執行推斷,這些資料分散在多個檔案中。
  • 您沒有低延遲需求。
  • 您的模型輸入會儲存在儲存體帳戶或 Azure Machine Learning 資料資產中。
  • 您可以利用平行處理。

比較

線上和批次端點都是以端點和部署的概念為基礎,可協助您輕鬆地從一個端點轉換到另一個端點。 不過,從一個移到另一個時,有一些要考慮的重要差異。 其中一些差異是因為工作的本質所造成:

端點

下表顯示線上和 Batch 端點中不同功能的摘要。

功能 線上端點 批次端點
穩定調用 URL
多個部署支援
部署的路由 流量分割 切換至預設
鏡像所有部署的流量
Swagger 支援 No
驗證 金鑰和權杖 Azure AD
私人網路支援
受控網路隔離1
客戶管理的金鑰

1受控網路隔離 允許從 Azure Machine Learning 工作區設定獨立管理端點的網路設定。

部署

下表顯示部署層級線上和 Batch 端點中不同功能的摘要。 這些概念會在每個部署的端點下套用。

功能 線上端點 批次端點
部署的類型 模型 模型和管線元件 (預覽)
MLflow 模型的部署 是 (需要公用網路)
自訂模型的部署 是,具有評分腳本 是,具有評分腳本
推斷伺服器 1 - Azure Machine Learning 推斷伺服器
- Triton
- 使用 BYOC) 自訂 (
Batch 推斷
耗用的計算資源 實例或細微資源 叢集實例
計算類型 受控計算和 Kubernetes 受控計算和 Kubernetes
低優先順序計算
將計算調整為零
自動調整計算2 是,根據資源的負載 是,以作業計數為基礎
過度容量管理 節流 排隊
在本機測試部署

1推斷伺服器 參考採用要求、處理這些要求並建立回應的服務技術。 推斷伺服器也會指定輸入的格式和預期的輸出。

2自動調整 會根據負載,參考動態相應增加或減少部署所配置資源的能力。 線上和 Batch 部署使用不同的策略。 雖然線上部署會根據 CPU、記憶體、要求 ) 等資源使用率 (相應增加和減少,但批次端點會根據建立的作業數目相應增加或減少。

開發人員介面

端點的設計目的是協助組織在 Azure Machine Learning 中運作生產層級工作負載。 它們是健全且可調整的資源,並提供最佳功能來實作 MLOps 工作流程。

使用多個開發人員工具來建立和管理批次與線上端點:

  • Azure CLI 和 Python SDK
  • Azure Resource Manager/REST API
  • Azure Machine Learning 工作室入口網站
  • Azure 入口網站 (IT/系統管理員)
  • 使用 Azure CLI 介面 & REST/ARM 介面支援 CI/CD MLOps 管線

後續步驟