適用於部署的模型套件 (預覽)
定型機器學習模型之後,您必須加以部署,讓其他人可以使用其預測。 不過,部署模型需要的不僅只是權數或模型的成品。 模型套件是 Azure Machine Learning 中的一項功能,可讓您收集將機器學習模型部署至服務平台所需的所有相依性。 您可以跨工作區,甚至是在 Azure Machine Learning 外部移動套件。
重要
此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議用於處理生產工作負載。 可能不支援特定功能,或可能已經限制功能。
如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
什麼是模型套件?
在部署模型之前,最佳做法是模型成功執行所需的所有相依性都必須加以收集和解析,才能以可重現且健全的方法部署模型。
一般而言,模型的相依性包括:
- 執行模型的基礎映像或環境。
- 模型相依才能能正常運作的 Python 套件和相依性清單。
- 模型可能需要產生推斷的額外資產。 這些資產可以包含標籤的對應和前處理參數。
- 推斷伺服器處理要求所需的軟體;例如 flask 伺服器或 TensorFlow Serving。
- 推斷常式 (如有必要)。
所有這些元素都必須予以收集,才能部署於服務基礎結構中。 收集所有相依性之後所產生的資產稱為模型套件。
封裝模型的優點
在部署前封裝模型具有下列優點:
- 重現性:所有相依性都會在封裝階段收集,而不是在部署階段。 一旦解析相依性,您就可以視需要部署套件多次,同時保證已解析相依性。
- 更快速的衝突解決:Azure Machine Learning 會在封裝模型時,偵測任何與相依性相關的錯誤設定,例如遺失的 Python 套件。 您不需要部署模型來探索這類問題。
- 比較容易與推斷伺服器整合:因為您使用的推斷伺服器可能需要特定的軟體組態 (例如 Torch Serve 套件),這類軟體可能會與您的模型的相依性產生衝突。 Azure Machine Learning 中的模型套件會插入推斷伺服器所需的相依性,以協助您在部署模型之前偵測衝突。
- 可攜性:您可以使用登錄,將 Azure Machine Learning 模型套件從一個工作區移至另一個工作區。 您也可以產生可在 Azure Machine Learning 外部部署的套件。
- 私人網路的 MLflow 支援:對於 MLflow 模型,Azure Machine Learning 需要網際網路連線才能動態安裝所需的 Python 套件,讓模型執行。 藉由封裝 MLflow 模型,這些 Python 套件會在模型封裝作業期間獲得解析,因此 MLflow 模型套件不需要部署網際網路連線。
提示
強烈建議在部署前封裝 MLflow 模型,甚至是沒有輸出網路連線的端點所需的模型。 MLflow 模型會指出其在模型本身的相依性,因此需要動態安裝套件。 封裝 MLflow 模型後,此動態安裝會在封裝階段執行,而不是在部署階段執行。
部署模型套件
您可以提供模型套件作為線上端點的輸入。 使用模型套件有助於簡化 MLOps 工作流程,方法是減少部署階段的錯誤機會,因為封裝作業期間會收集所有相依性。 您也可以設定模型套件來產生 Docker 映像,讓您在 Azure Machine Learning 以外的任何位置 (在內部部署環境或在雲端) 部署。
部署前封裝
使用模型套件部署的最簡單方式,就是在執行部署之前,指定 Azure Machine Learning 部署模型套件。 使用 Azure CLI、Azure Machine Learning SDK 或 Azure Machine Learning 工作室在線上端點中建立部署時,您可指定使用模型封裝,如下所示:
建立部署時使用 --with-package
旗標:
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
Azure Machine Learning 會先封裝模型,然後執行部署。
注意
使用套件時,如果您指出具有 conda
或 pip
相依性的基底環境,則不需要包含推斷伺服器的相依性 (azureml-inference-server-http
)。 反而,系統會自動為您新增這些相依性。
部署已封裝的模型
您可以將已直接封裝的模型部署至線上端點。 這種做法是最佳做法,可確保結果的重現性。 請參閱封裝模型並將及部署至線上端點。
如果您想要在 Azure Machine Learning 外部部署套件,請參閱封裝模型並在 Azure Machine Learning 外部進行部署。