生產環境中推斷的端點

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

將機器學習模型或管線定型之後,您必須將它們部署到生產環境,以便其他人將其用於推斷。 推斷是一種程序,可將新的輸入資料套用至機器學習模型或管線以產生輸出。 雖然這些輸出通常稱為「預測」,但推斷可用來產生其他機器學習工作的輸出,例如分類和叢集。 在 Azure Machine Learning 中,您會使用端點和部署來執行推斷。 端點和部署可讓您將生產工作負載的介面與提供服務的實作分離。

直覺

假設您正在開發一個應用程式,該應用程式根據汽車的照片來預測汽車的類型和顏色。 針對此應用程式,具有特定認證的使用者會對 URL 提出 HTTP 要求,並提供汽車圖片作為要求的一部分。 在傳回中,使用者會取得回應,其中包含汽車的類型和顏色作為字串值。 在此案例中,URL 會作為端點

A diagram showing the concept of an endpoint.

此外,假設資料科學家 Alice 正在著手實作此應用程式。 Alice 非常了解 TensorFlow,並決定使用 Keras 循序分類器搭配 TensorFlow 中樞的 RestNet 架構來實作模型。 測試模型之後,Alice 很滿意其結果並決定使用模型來解決汽車預測問題。 此模型的大小很大,需要 8 GB 的記憶體和 4 個核心才能執行。 在此案例中,Alice 的模型和執行模型所需的資源 (例如程式碼和計算) 構成端點之下的部署

A diagram showing the concept of a deployment.

最後,讓我們想像在幾個月後,組織發現應用程式在影像上的執行效能不佳,且照明條件低於理想。 另一位資料科學家 Bob 非常了解資料增強技術,這些技術可協助模型讓穩健性建立於該因素之上。 不過,Bob 覺得使用 Torch 來實作模型更加舒服,而且使用 Torch 定型新模型。 Bob 想要逐漸在生產環境中試用此模型,直到組織準備好淘汰舊模型為止。 新模型也會在部署到 GPU 時顯示較佳的效能,因此部署需要包含 GPU。 在此案例中,Bob 的模型和執行模型所需的資源 (例如程式碼和計算) 構成相同端點之下的另一項部署

A diagram showing the concept of an endpoint with multiple deployments.

端點和部署

端點是一個穩定且持久的URL,可用來要求或叫用模型。 您將必要的輸入提供給端點,並取回輸出。 端點可提供:

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

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

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

線上和批次端點

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

何時針對您的使用案例使用線上與批次端點

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

  • 您沒有低延遲需求。
  • 您的模型可以在相對短時間內回應要求。
  • 您模型的輸入符合要求的 HTTP 承載。
  • 您必須根據要求數目相應擴大。

使用批次端點,讓模型或管線針對長時間執行的非同步推斷運作。 建議您在下列情況下使用它們:

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

線上和批次端點的比較

線上和批次端點都是以端點和部署的概念為基礎,可協助您輕鬆地從一個端點轉換到另一個端點。 不過,從一個端點移到另一個端點時,有一些務必考量的差異。 其中一些差異是由於工作的性質所致:

端點

下表顯示可供線上和批次端點使用之不同功能的摘要。

功能 線上端點 批次端點
穩定的引動 URL Yes Yes
支援多重部署 Yes Yes
部署的路由 流量分割 切換為預設值
安全推出的鏡像流量 No
Swagger 支援 No
驗證 金鑰和權杖 Microsoft Entra ID
私人網路支援 Yes Yes
受管理的網路隔離 Yes (請參閱必要的額外設定)
客戶管理的金鑰 Yes Yes
成本基礎

部署

下表顯示在部署層級可供線上和批次端點使用之不同功能的摘要。 這些概念適用於端點之下的每項部署。

功能 線上端點 批次端點
部署類型 模型 模型和管線元件
MLflow 模型部署 Yes Yes
自訂模型部署 是,具有評分指令碼 是,具有評分指令碼
模型套件部署 1 是 (預覽) No
推斷伺服器 2 - Azure Machine Learning 推斷伺服器
- Triton
- 自訂 (使用 BYOC)
批次推斷
已取用的計算資源 執行個體或細微的資源 叢集執行個體
計算類型 受控計算和 Kubernetes 受控計算和 Kubernetes
低優先順序的計算 No Yes
將計算調整為零 No Yes
自動調整計算3 是,根據資源的負載 是,根據作業計數
超額容量管理 節流 佇列
成本基礎4 每項部署:執行中的計算執行個體 每項作業:在作業中取用的計算執行個體 (上限為叢集執行個體數目上限)。
部署的本機測試 No

1 將 MLflow 模型部署到沒有輸出網際網路連線或私人網路的端點,必須先封裝模型

2推斷伺服器 是指採用要求、處理要求及建立回應的服務技術。 推斷伺服器也會指定輸入的格式和預期的輸出。

3自動調整能夠根據負載動態相應擴大或縮小部署的配置資源。 線上和批次部署會使用不同的自動調整策略。 雖然線上部署會根據資源使用率 (例如 CPU、記憶體、要求等) 相應擴大和縮小,但批次端點則根據所建立的作業數目相應擴大或縮小。

4 取用的資源會收取線上部署和批次部署費用。 在線上部署中,資源會在部署階段佈建。 不過,在批次部署中,不會在部署階段取用任何資源,但會在作業執行時取用。 因此,部署本身沒有任何相關成本。 請注意,佇列作業也不會取用資源。

開發人員介面

端點的設計訴求在於協助組織在 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 管線

下一步