分享方式:


指定要部署以用於線上端點的模型

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

在本文中,您將了解指定您想要在線上部署中使用的模型的不同方式。 將模型部署至 Azure Machine Learning 線上端點時,您需要以下列兩個方式之一指定模型:

  • 提供本機電腦上模型位置的路徑
  • 提供已在工作區中註冊的版本化模型參考。

您為模型指定線上端點部署的方式,取決於儲存模型的位置。 在 Azure Machine Learning 中,建立部署之後,環境變數 AZUREML_MODEL_DIR 會指向儲存模型所在 Azure 內的儲存體位置。

儲存在本機的模型部署

本節使用本機資料夾結構的這個範例來示範如何指定模型以用於線上部署:

顯示包含多個模型的本機資料夾結構的螢幕擷取畫面。

單一本機模型的部署

若要在部署中使用您在本機電腦上擁有的單一模型,請在部署 YAML 設定檔中指定 modelpath。 下列程式碼是具有本機路徑 /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl 部署 YAML 範例:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

在 Azure Machine Learning 中,建立對線上端點的部署之後,環境變數 AZUREML_MODEL_DIR 會指向儲存模型所在 Azure 內的儲存體位置。 例如,/var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1 現在包含模型 sample_m1.pkl

在您的評分指令碼 (score.py) 內,您可以在指令碼的 init() 函式中載入模型 (在此範例中為 sample_m1.pkl):

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl") 
    model = joblib.load(model_path) 

數個本機模型的部署

雖然 Azure CLI、Python SDK 和其他用戶端工具只能讓您在部署定義中為每個部署指定一個模型,但您仍然可以在部署中使用多個模型,方法是將包含所有模型的模型資料夾註冊為檔案或子目錄。 如需註冊資產 (例如模型) 的詳細資訊,以便您可以在部署期間指定其已註冊的名稱和版本,請參閱註冊您的模型和環境

在本機資料夾結構的範例中,您會注意到 models 資料夾中有數個模型。 若要使用這些模型,請在您的部署 YAML 中指定 models 資料夾的路徑,如下所示:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/ 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

建立部署後,環境變數 AZUREML_MODEL_DIR 會指向儲存模型所在 Azure 內的儲存體位置。 例如,/var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1 現在會包含模型和檔案結構。

在此範例中,AZUREML_MODEL_DIR 資料夾的內容看起來像這樣:

顯示多個模型儲存位置資料夾結構的螢幕擷取畫面。

在您的評分指令碼 (score.py) 內,您可以在 init() 函式中載入模型。 下列程式碼會載入 sample_m1.pkl 模型:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ") 
    model = joblib.load(model_path) 

如需如何將數個模型部署至一個部署的範例,請參閱將多個模型部署到一個部署 (CLI 範例)將多個模型部署到一個部署 (SDK 範例)

提示

如果您有超過 1500 個檔案要註冊,請考慮在註冊模型時將檔案或子目錄壓縮為 .tar.gz。 若要取用模型,您可以在評分指令碼的 init() 函式中解壓縮檔案或子目錄。 或者,當您註冊模型時,將 azureml.unpack 屬性設定為 True,以自動解壓縮檔案或子目錄。 不論是哪一種情況,在初始化階段都會解壓縮檔案一次。

在工作區中註冊的模型部署

您可以在您的部署 YAML 中參考其名稱,以在部署定義中使用已註冊的模型。 例如,下列部署 YAML 設定會將已註冊的 model 名稱指定為 azureml:local-multimodel:3

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: azureml:local-multimodel:3 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

在此範例中,請考慮到 local-multimodel:3 包含下列模型成品,而您可以從 Azure Machine Learning 工作室中的 [模型] 索引標籤檢視這些成品:

資料夾結構的螢幕擷取畫面,其中顯示已註冊模型的模型成品。

建立部署後,環境變數 AZUREML_MODEL_DIR 會指向儲存模型所在 Azure 內的儲存體位置。 例如,/var/azureml-app/azureml-models/local-multimodel/3 會包含模型和檔案結構。 AZUREML_MODEL_DIR 會指向包含模型成品根目錄的資料夾。 根據此範例,AZUREML_MODEL_DIR 資料夾的內容看起來像這樣:

顯示多個模型資料夾結構的螢幕擷取畫面。

在您的評分指令碼 (score.py) 內,您可以在 init() 函式中載入模型。 例如,載入 diabetes.sav 模型:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav") 
    model = joblib.load(model_path) 

模型目錄中可用的模型部署

對於模型目錄中的任何模型,除了 Azure OpenAI 集合中的模型以外,您可以使用模型卡片中顯示的模型識別碼進行部署。 模型識別碼格式為 azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}。 例如,Meta Llama 3-8 B 指示模型的模型識別碼為 azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2。 某些模型卡片包含範例筆記本,示範如何使用模型識別碼進行部署。

部署您的組織登錄中可用的模型

組織登錄中的每個模型都有格式 azureml://registries/{registry_name}/models/{model_name}/versions/{model_version} 的模型識別碼。 您也可以選擇使用在相同登錄中註冊的環境。