即時推斷的線上端點部署
適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)
本文說明 Azure Machine Learning 中即時推斷的線上端點。 推斷是一種程序,可將新的輸入資料套用至機器學習模型以產生輸出。 Azure Machine Learning 可讓您使用部署至線上端點的模型,對資料執行即時推斷。 雖然這些輸出通常稱為「預測」,您可以使用推斷來產生其他機器學習工作的輸出,例如分類和叢集。
線上端點
線上端點將模型部署至可在 HTTP 通訊協定下傳回預測的網頁伺服器。 線上端點可以讓模型針對同步低延遲要求中的即時推斷運作,並在下列情況下最適合使用:
- 您沒有低延遲需求。
- 您的模型可以在相對短時間內回應要求。
- 您模型的輸入符合要求的 HTTP 承載。
- 您必須擴大要求的數目。
若要定義端點,您必須指定:
- 端點名稱。 此名稱在整個 Azure 區域中必須是唯一的。 如需其他命名需求,請參閱 Azure Machine Learning 線上端點和批次端點。
- 驗證模式。 您可以選擇端點的金鑰型驗證模式、Azure Machine Learning 權杖型驗證模式或 Microsoft Entra 權杖型驗證。 如需驗證的詳細資訊,請參閱驗證線上端點的用戶端。
受控線上端點
受控線上端點會以方便、周全的方式部署您的機器學習模型,並且會使用 Azure Machine Learning 線上端點的建議方式。 受控線上端點會以可調整且完全受控的方式,在 Azure 中使用強大的 CPU 和 GPU 機器。
為了免除設定和管理基礎結構的額外負荷,這些端點也負責服務、調整、保護和監視您的模型。 若要了解如何定義受控線上端點,請參閱定義端點。
受控線上端點與 Azure 容器執行個體或 Azure Kubernetes Service (AKS) v1
受控線上端點是在 Azure Machine Learning 中使用線上端點的建議方法。 下表強調與 Azure 容器執行個體和 Azure Kubernetes Service (AKS) v1 解決方案相比,受控線上端點的重要屬性。
屬性 | 受控線上端點 (v2) | 容器執行個體或 AKS (v1) |
---|---|---|
網路安全性/隔離 | 使用快速切換輕鬆控制輸入/輸出 | 不支援虛擬網路,或需要複雜的手動設定 |
受控服務 | • 完全受控的計算佈建/調整 • 資料外流防護的網路設定 • 主機 OS 升級,受控制推出就地更新 |
• 延展性受限。 • 使用者必須管理網路設定或升級 |
端點/部署概念 | 端點與部署之間的差異可支援複雜的案例,例如安全推出模型 | 沒有端點的概念 |
診斷和監控 | • 使用 Docker 和 Visual Studio Code 進行本機端點偵錯 • 使用圖表/查詢執行進階計量和記錄分析,以在部署之間進行比較 • 部署層級的成本明細 |
不容易執行本機偵錯 |
延展性 | 彈性與自動調整 (未繫結預設叢集大小) | • 容器執行個體無法調整 • AKS v1 僅支援叢集內調整,且需要可擴縮性設定 |
企業整備 | 私人連結、客戶自控金鑰、Microsoft Entra ID、配額管理、帳單整合、服務等級協定 (SLA) | 不支援 |
進階 ML 功能 | • 模型資料收集 • 模型監視 • 冠軍挑戰者模型、安全推出、流量鏡像 • 負責任 AI 擴充性 |
不支援 |
受控線上端點與 Kubernetes 線上端點
如果您想要使用 Kubernetes 來部署模型並提供端點,而且您習慣管理基礎結構需求,則可以使用 Kubernetes 線上端點。 這些端點可讓您在任何位置的完全設定和受控的 Kubernetes 叢集上使用 CPU 或 GPU 部署模型和提供線上端點。
受控線上端點可協助簡化您的部署流程,並提供下列勝過 Kubernetes 線上端點的優點:
自動基礎結構管理
- 佈建計算並裝載模型。 您只要指定虛擬機器 (VM) 類型和調整設定即可。
- 更新和修補基礎主機 OS 映像。
- 當系統失敗時執行節點復原
監視和記錄
- 能夠使用與 Azure 監視器的原生整合,來監視模型可用性、效能和 SLA。
- 使用記錄與 Log Analytics 原生整合,輕鬆偵錯部署。
-
注意
受控線上端點是以 Azure Machine Learning 計算為基礎。 當您使用受控線上端點時,您需支付計算和網路費用。 沒有額外的附加費用。 如需詳細資訊,請參閱 Azure 定價計算機。
若您使用 Azure Machine Learning 虛擬網路保護來自受控線上端點的輸出流量,則須支付受控虛擬網路所使用的 Azure 私人連結和完整網域名稱 (FQDN) 輸出規則的費用。 如需詳細資訊,請參閱受控虛擬網路價格。
下表強調受控線上端點與 Kubernetes 線上端點之間的主要差異。
受控線上端點 | Kubernetes 線上端點 (AKS v2) | |
---|---|---|
建議的使用者 | 想要使用受控模型部署和增強式 MLOps 體驗的使用者 | 偏好 Kubernetes 並可自行管理基礎結構需求的使用者 |
節點佈建 | 受控計算佈建、更新、移除 | 使用者的責任 |
節點維護 | 受控主機 OS 映像更新和安全性強化 | 使用者的責任 |
叢集調整大小 (縮放) | 受管理的手動和自動調整 支援其他節點布建 | 手動和自動調整,支援調整固定叢集界限內的複本數目 |
計算類型 | 由服務管理 | 客戶自控 Kubernetes 叢集 |
受控識別 | 支援 | 支援 |
虛擬網路 | 透過受管理的網路隔離支援 | 使用者的責任 |
立即可用的監視和記錄 | 支援 Azure 監視器和 Log Analytics,包括端點和部署的關鍵計量和記錄資料表 | 使用者的責任 |
使用 Application Insights (舊版) 進行記錄 | 支援 | 支援 |
成本檢視 | 提供端點/部署層級的詳細資料 | 叢集層級 |
成本適用於 | 指派給部署的虛擬機器 (VM) | 指派給叢集的 VM |
鏡像流量 | 支援 | 不支援 |
無程式碼部署 | 支援 MLflow 和 Triton 模型 | 支援 MLflow 和 Triton 模型 |
線上部署
部署是裝載執行推斷模型所需的一組資源和計算。 單一端點可包含具有不同設定的多個部署。 此設定有助於將端點所呈現的介面與部署中呈現的實作詳細資料分離。 線上端點具有路由機制,可將要求導向端點中的特定部署。
下圖顯示具有藍色和綠色兩個部署的線上端點。 藍色部署會使用具有 CPU SKU 的 VM,並執行第 1 版模型。 綠色部署會使用具有 GPU SKU 的 VM,並執行第 2 版模型。 端點設定為將 90% 的傳入流量路由傳送至藍色部署,而綠色部署會收到剩餘的 10% 流量。
要部署模型,您必須具有:
模型檔案,或工作區中已註冊模型的名稱和版本。
評分指令碼,即在指定的輸入要求上執行模型的程式碼。
評分指令碼會接收提交給已部署 Web 服務的資料,並將資料傳遞給模型。 然後,此指令碼會執行模型,並將其回應傳回給用戶端。 評分指令碼是模型專用的,其必須了解模型預期的輸入資料和傳回的輸出資料。
執行模型的環境。 環境可以是具有 Conda 相依性的 Docker 映像,或 Dockerfile。
用於指定執行個體類型和調整容量的設定。
若要了解如何使用 Azure CLI、Python SDK、Azure Machine Learning Studio 或 ARM 範本來部署線上端點,請參閱使用線上端點部署機器學習模型。
部署的金鑰屬性
下表描述部署的主要屬性:
屬性 | 描述 |
---|---|
Name | 部署的名稱。 |
端點名稱 | 要在其下建立部署的端點名稱。 |
模型 | 要用於部署的模型。 此值可以是工作區中現有已建立版本模型的參考,也可以是內嵌模型規格。 如需如何追蹤及指定模型路徑的詳細資訊,請參閱指定要部署以用於線上端點的模型。 |
程式碼路徑 | 本機開發環境上的目錄路徑,包含用來對模型進行評分的所有 Python 原始程式碼。 您可以使用巢狀目錄和套件。 |
評分指令碼 | 原始程式碼目錄中評分檔案的相對路徑。 此 Python 程式碼必須具有 init() 函式與 run() 函式。 建立或更新模型之後會呼叫 init() 函式,例如在記憶體中快取模型。 每次引動端點時會呼叫 run() 函式,以執行實際評分和預測。 |
Environment | 用來裝載模型和程式碼的環境。 此值可以是工作區中現有已建立版本環境的參考,也可以是內嵌環境規格。 |
執行個體類型 | 要用於部署的 VM 大小。 如需支援的大小清單,請參閱受控線上端點 SKU 清單。 |
執行個體計數 | 要用於部署的執行個體數目。 根據您預期的工作負載做為值。 若要達到高可用性,請將值至少設定為 3 。 系統會保留額外的 20% 來執行升級。 如需詳細資訊,請參閱部署的 VM 配額配置。 |
線上部署注意事項
部署可以隨時參考環境中定義的模型和容器映像,例如當部署執行個體經歷安全性修補程式或其他復原作業時。 如果您在 Azure Container Registry 中使用已註冊的模型或容器映像進行部署,並稍後移除該模型或容器映像,則重新安裝映像時,依賴這些資產的部署可能會失敗。 如果您移除模型或容器映像,請務必使用替代模型或容器映像重新建立或更新相依部署。
環境所參考的容器登錄可以是私人的,但前提是端點身分識別具有透過 Microsoft Entra 驗證和 Azure 角色型存取控制 (RBAC) 存取該容器登錄的權限。 基於相同原因,不支援 Azure Container Registry 以外的私人 Docker 登錄。
Microsoft 會定期修補基礎映像以解決已知的安全性弱點。 您必須重新部署端點,才能使用已修補的映像。 如果您提供自己的映像,則須負責加以更新。 如需詳細資訊,請參閱映像修補。
部署的 VM 配額配置
針對受控線上端點,Azure Machine Learning 會保留 20% 的計算資源,以在某些 VM SKU 上執行升級。 如果您在部署中要求這些 VM SKU 的指定執行個體數目,則必須有可用的 ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU
配額,以避免收到錯誤。 例如,如果您在部署中要求 10 個 Standard_DS3_v2 VM (隨附四個核心) 執行個體,則應該有 48 個核心 (12 instances * 4 cores
) 的配額可供使用。 此額外配額會保留給系統起始的作業,例如操作系統升級和 VM 復原,除非執行這類作業,否則不會產生成本。
有某些 VM SKU 不必額外保留配額。 若要檢視完整清單,請參閱受控線上端點 SKU 清單。 若要檢視使用量並要求增加配額,請參閱在 Azure 入口網站中檢視您的使用量和配額。 若要檢視執行受控線上端點的成本,請參閱檢視受控線上端點的成本。
共用配額集區
Azure Machine Learning 提供共用配額集區,供不同區域的使用者根據可用性,在有限時間內存取配額並執行測試。 當使用工作室將 Llama-2、Phi、Nemotron、Mistral、Dolly 和 Deci-DeciLM 模型從模型目錄部署到受控線上端點時,您可暫時存取 Azure Machine Learning 共用配額集區,以便進行測試。 如需共用配額集區的詳細資訊,請參閱 Azure Machine Learning 共用配額。
若要使用共用配額從模型目錄部署 Llama-2、Phi、Nemotron、Mistral、Dolly 和 Deci-DeciLM 模型,則您必須擁有 Enterprise 合約訂用帳戶。 如需如何使用共用配額來部署線上端點的詳細資訊,請參閱如何使用工作室部署基礎模型。
如需 Azure Machine Learning 中資源配額和限制的詳細資訊,請參閱使用 Azure Machine Learning 管理及增加資源的配額和限制。
針對程式設計者和非程式設計者的部署
針對程式設計者和非程式設計者,Azure Machine Learning 提供將模型部署至線上端點的幾個選項,包括無程式碼部署、低程式碼部署以及自備容器 (BYOC) 部署。
- 無程式碼部署透過 MLflow 和 Triton 為常見架構 (例如 scikit-learn、TensorFlow、PyTorch 和 Open Neural Network Exchange (ONNX)) 提供現成可用的推斷功能。
- 低程式碼部署可讓您提供最低限度的程式碼以及機器學習模型進行部署。
- BYOC 部署可讓您使用幾乎任何容器來執行線上端點。 您可以使用所有 Azure Machine Learning 平台功能 (例如自動調整、GitOps、偵錯和安全推出) 來管理 MLOps 管線。
下表強調線上部署選項的主要層面:
無程式碼 | 低程式碼 | BYOC | |
---|---|---|---|
摘要 | 透過 MLflow 和 Triton 對常見架構 (例如 scikit-learn、TensorFlow、PyTorch 和 ONNX) 使用現成可用的推斷功能。 如需詳細資訊,請參閱將 MLflow 模型部署至線上端點。 | 針對常見架構使用安全、公開發行的策展映像,每兩週更新一次以解決弱點。 您提供評分指令碼和/或 Python 相依性。 如需詳細資訊,請參閱 Azure Machine Learning 策展環境。 | 您可以透過 Azure Machine Learning 對自訂映像的支援,提供完整的堆疊。 如需詳細資訊,請參閱使用自訂容器將模型部署至線上端點。 |
自訂基礎映像 | 無。 策展的環境提供基礎映像,以便輕鬆部署。 | 您可以使用策展影像或自訂影像。 | 攜帶可存取的容器映像位置,例如 docker.io、Container Registry 或 Microsoft 成品登錄,或是您可以使用適用於容器之 Azure Container Registry 所建置/推送的 Dockerfile。 |
自訂相依性 | 無。 策展的環境提供輕鬆部署的相依性。 | 攜帶模型執行所在的 Azure Machine Learning 環境,可以是具有 Conda 相依性的 Docker 映像或 dockerfile。 | 自訂相依性會包含在容器映像中。 |
自訂程式碼 | 無。 評分指令碼會自動產生,以便輕鬆部署。 | 攜帶您的評分指令碼。 | 評分指令碼會包含在容器映像中。 |
注意
AutoML 執行會自動為使用者建立評分指令碼和相依性。 針對無程式碼部署,您可以部署任何 AutoML 模型,而不需要製作其他程式碼。 針對低程式碼部署,您可以將自動產生的指令碼修改為符合商務需求。 若要了解如何使用 AutoML 模型進行部署,請參閱如何將 AutoML 模型部署至線上端點。
線上端點偵錯
可能的話,請先在本機藉由驗證和偵錯程式碼與設定以測試執行端點,再將端點部署至 Azure。 Azure CLI 和 Python SDK 支援本機端點和部署,Azure Machine Learning 工作室和 ARM 範本則不支援本機端點或部署。。
Azure Machine Learning 提供了下列在本機和使用容器記錄對線上端點偵錯的方法:
- 使用 Azure Machine Learning 推斷 HTTP 伺服器啟用本機偵錯
- 使用本機端點進行本機偵錯
- 使用本機端點和 Visual Studio Code 進行本機偵錯
- 使用容器記錄進行偵錯
使用 Azure Machine Learning 推斷 HTTP 伺服器啟用本機偵錯
您可以使用 Azure Machine Learning 推斷 HTTP 伺服器,在本機執行評分指令碼偵錯。 HTTP 伺服器是 Python 套件,可將評分函式公開為 HTTP 端點,並將 Flask 伺服器程式碼和相依性包裝成單一套件。
Azure Machine Learning 會在預建的 Docker 映像中包含 HTTP 伺服器,以供用來部署模型的推斷使用。 單獨使用套件,您可以在本機部署模型以供生產環境使用,而且也可以在本機開發環境中輕鬆驗證輸入評分指令碼。 如果評分指令碼發生問題,伺服器會傳回錯誤以及發生錯誤的位置。 您也可以使用 Visual Studio Code 搭配 Azure Machine Learning 推斷 HTTP 伺服器進行偵錯。
提示
您可以使用 Azure Machine Learning 推斷 HTTP 伺服器 Python 套件,在沒有 Docker 引擎的情況下於本機偵錯評分指令碼。 使用推斷伺服器進行偵錯可協助您先偵錯評分指令碼再部署至本機端點,以在不受部署容器設定影響的情況下進行偵錯。
如需使用 HTTP 伺服器進行偵錯的詳細資訊,請參閱使用 Azure Machine Learning 推斷 HTTP 伺服器偵錯評分指令碼。
使用本機端點進行本機偵錯
針對本機偵錯,您需要部署到本機 Docker 環境的模型。 在部署至雲端之前,您可以使用此本機部署進行測試和偵錯。
若要在本機部署,您必須安裝並執行 Docker 引擎。 Azure Machine Learning 接著會建立本機 Docker 映像來模擬線上映像。 Azure Machine Learning 會在本機建置並執行部署,並快取該映像以執行快速反覆運算。
提示
如果電腦啟動時 Docker 引擎未啟動,您可以針對 Docker 引擎進行疑難排解。 您可以使用 Docker Desktop 之類的用戶端工具,對容器中發生的情況進行偵錯。
本機偵錯通常涉及下列步驟:
- 首先,確認本機部署成功。
- 接下來,叫用本機端點進行推斷。
- 最後,檢閱
invoke
作業的輸出記錄。
本機端點有下列限制:
不支援流量規則、驗證或探查設定。
只會為每個端點支援一個部署。
只支援本機模型檔案和具有本機 conda 檔案的環境。
如需本機偵錯的詳細資訊,請參閱使用本機端點在本機執行部署和偵錯。
使用本機端點和 Visual Studio Code 進行本機偵錯 (預覽)
重要
此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。
如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
如同本機偵錯,您必須安裝並執行 Docker 引擎,然後將模型部署至本機 Docker 環境。 當您完成本機部署後,Azure Machine Learning 本機端點會使用 Docker 和 Visual Studio Code 開發容器 (開發容器) 來建置和設定本機偵錯環境。
開發容器可讓您從 Docker 容器內部使用 Visual Studio Code 功能 (例如互動式偵錯)。 如需在 Visual Studio Code 中以互動方式偵錯線上端點的詳細資訊,請參閱在 Visual Studio Code 中從本機偵錯線上端點。
使用容器記錄進行偵錯
您無法直接存取模型部署所在的 VM,但您可以從 VM 上執行的下列容器取得記錄:
- 推斷伺服器主控台記錄包含來自評分指令碼 score.py 程式碼的列印/記錄函式輸出。
- 儲存體初始設定式記錄包含是否已成功將程式碼和模型資料下載至容器的資訊。 該容器會在推斷伺服器容器開始執行之前執行。
如需使用容器記錄進行偵錯的詳細資訊,請參閱取得容器記錄。
流量路由和鏡像至線上部署
單一線上端點可以有多個部署。 當端點接收傳入流量要求時,可以將部分流量百分比路由傳送至每個部署,如原生藍/綠部署策略中的比例。 端點也可以將流量從一個部署鏡像 (或複製) 到另一個部署,稱為流量鏡像或陰影。
藍/綠部署的流量路由傳送
藍/綠部署是一種部署策略,可讓您在完全推出新部署之前,先向一小部分使用者或要求推出新的綠色部署。 端點可以實現負載平衡,將特定百分比的流量配置給每個部署,所有部署的總配置最多可達 100%。
提示
要求可以包含 azureml-model-deployment
的 HTTP 標頭,以略過設定的流量負載平衡。 將標頭值設為您想將要求路由傳送的目標部署名稱。
下圖顯示 Azure Machine Learning 工作室中的設定,用於配置藍色和綠色部署之間的流量。
上述流量配置會將 10% 的流量路由傳送至綠色部署,並將 90% 的流量路由傳送至藍色部署,如下圖所示。
流量鏡像至線上部署
端點也可以將流量從一個部署鏡像或複製到另一個部署。 當您想要使用生產流量測試新部署,而不影響客戶從現有部署收到的結果時,您可以使用流量鏡像,亦稱為陰影測試。
例如,您可以實作藍色/綠色部署,其中 100% 的流量會路由傳送至藍色,而 10% 會鏡射到綠色部署。 將流量鏡像至綠色部署的結果不會傳回至用戶端,但會記錄計量和記錄。
如需如何使用流量鏡像的詳細資訊,請參閱針對即時推斷執行新部署的安全推出。
更多線上端點功能
下列各節說明 Azure Machine Learning 線上端點的其他功能。
驗證和加密
- 驗證:金鑰和 Azure Machine Learning 權杖
- 受控識別:使用者指派和系統指派
- 根據預設用於端點叫用的安全通訊端層 (SSL)
自動調整規模
自動調整會自動執行正確的資源量,以處理應用程式的負載。 受控端點透過與 Azure 監視器自動調整功能的整合,支援自動調整。 您可以設定計量型調整 (例如 CPU 使用率 >70%) 和/或排程型調整 (例如尖峰上班時間規則)。
如需詳細資訊,請參閱在 Azure Machine Learning 中自動調整線上端點。
受管理的網路隔離
當您將機器學習模型部署至受控線上端點時,可以使用私人端點來保護與線上端點的通訊。 您可以個別設定輸入評分要求和輸出通訊的安全性。
輸入通訊會使用 Azure Machine Learning 工作區的私人端點,而輸出通訊則會使用針對工作區受控虛擬網路建立的私人端點。 如需詳細資訊,請參閱受控線上端點的網路隔離。
監視線上端點和部署
Azure Machine Learning 端點會與 Azure 監視器整合。 Azure 監視器整合可讓您在圖表中檢視計量、設定警示、查詢記錄資料表,以及使用 Application Insights 分析使用者容器的事件。 如需詳細資訊,請參閱監視線上端點。
線上部署中的秘密插入 (預覽)
線上部署的祕密插入涉及從祕密存放區擷取祕密如 API 金鑰,並將其插入執行於部署內的使用者容器中。 若要為執行評分指令碼的推斷伺服器或 BYOC 部署中的推斷堆疊提供安全的祕密使用量,您可以使用環境變數來存取祕密。
您可以使用受控識別自行插入祕密,也可以使用祕密插入功能。 如需詳細資訊,請參閱線上端點中的祕密插入(預覽)。