生產環境中推斷的端點
適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)
將機器學習模型或管線定型之後,您必須將它們部署到生產環境,以便其他人將其用於推斷。 推斷是一種程序,可將新的輸入資料套用至機器學習模型或管線以產生輸出。 雖然這些輸出通常稱為「預測」,但推斷可用來產生其他機器學習工作的輸出,例如分類和叢集。 在 Azure Machine Learning 中,您會使用端點和部署來執行推斷。 端點和部署可讓您將生產工作負載的介面與提供服務的實作分離。
直覺
假設您正在開發一個應用程式,該應用程式根據汽車的照片來預測汽車的類型和顏色。 針對此應用程式,具有特定認證的使用者會對 URL 提出 HTTP 要求,並提供汽車圖片作為要求的一部分。 在傳回中,使用者會取得回應,其中包含汽車的類型和顏色作為字串值。 在此案例中,URL 會作為端點。
此外,假設資料科學家 Alice 正在著手實作此應用程式。 Alice 非常了解 TensorFlow,並決定使用 Keras 循序分類器搭配 TensorFlow 中樞的 RestNet 架構來實作模型。 測試模型之後,Alice 很滿意其結果並決定使用模型來解決汽車預測問題。 此模型的大小很大,需要 8 GB 的記憶體和 4 個核心才能執行。 在此案例中,Alice 的模型和執行模型所需的資源 (例如程式碼和計算) 構成端點之下的部署。
最後,讓我們想像在幾個月後,組織發現應用程式在影像上的執行效能不佳,且照明條件低於理想。 另一位資料科學家 Bob 非常了解資料增強技術,這些技術可協助模型讓穩健性建立於該因素之上。 不過,Bob 覺得使用 Torch 來實作模型更加舒服,而且使用 Torch 定型新模型。 Bob 想要逐漸在生產環境中試用此模型,直到組織準備好淘汰舊模型為止。 新模型也會在部署到 GPU 時顯示較佳的效能,因此部署需要包含 GPU。 在此案例中,Bob 的模型和執行模型所需的資源 (例如程式碼和計算) 構成相同端點之下的另一項部署。
端點和部署
端點是一個穩定且持久的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 管線