首页 > 解决方案 > 如何在 Python 中从 YAML 文件创建 Azure ML Inference_Config 和 Deployment_Config 类对象?

问题描述

使用 AZ CLI 部署机器学习模型时,命令

az ml model deploy --name $(AKS_DEPLOYMENT_NAME) 
--model '$(MODEL_NAME):$(get_model.MODEL_VERSION)' \
--compute-target $(AKS_COMPUTE_NAME) \
--ic inference_config.yml \
--dc deployment_config_aks.yml \
-g $(RESOURCE_GROUP) --workspace-name $(WORKSPACE_NAME) \
--overwrite -v

将使用inference_config.ymlanddeployment_config_aks.yml文件来部署模型。

但是,如果我们azureml-sdk在 Python 中使用,命令是:

from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies 

conda_deps = CondaDependencies.create(conda_packages=['numpy','scikit-learn==0.19.1','scipy'], #for-example
pip_packages=['azureml-defaults', 'inference-schema']) #for-example
myenv = Environment(name='myenv') 
myenv.python.conda_dependencies = conda_deps

from azureml.core.model import InferenceConfig

inf_config = InferenceConfig(entry_script='score.py', environment=myenv)


aks_config = AksWebservice.deploy_configuration()


aks_service_name ='some-name'

aks_service = Model.deploy(workspace=ws,
                           name=aks_service_name,
                           models=[model],
                           inference_config=inf_config,
                           deployment_config=aks_config,
                           deployment_target=aks_target)

我们究竟如何使用 Conda 依赖文件conda_dependencies.yml、Inference_Config 文件inference_config.yml和部署配置文件deployment_config_aks.yml来创建对象inf_configaks_config在 Python 中使用?是否有.from_file()使用 YAML 定义的选项?我的用例是在 Azure Pipelines 中创建 Python 步骤作为 MLOps 工作流!

标签: azureazure-machine-learning-service

解决方案


这些可以从 Azure ML 下载,以传递到 Python 中的 Azure ML SDK。

因此使用此代码进行部署:

from azureml.core.model import InferenceConfig
from azureml.core.webservice import AciWebservice
from azureml.core.webservice import Webservice
from azureml.core.model import Model
from azureml.core.environment import Environment

inference_config = InferenceConfig(entry_script=script_file_name, environment=myenv)

aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, 
                                               memory_gb = 1, 
                                               description = 'Iris classification service')

aci_service_name = 'automl-sample-bankmarketing-all'
aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig)
aci_service.wait_for_deployment(True)

AutoML 模型可以下载脚本文件和环境文件。

from azureml.core.environment import Environment
from azureml.automl.core.shared import constants
best_run.download_file(constants.CONDA_ENV_FILE_PATH, 'myenv.yml')
myenv = Environment.from_conda_specification(name="myenv", file_path="myenv.yml")

script_file_name = 'inference/score.py'
best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py')

我在这个视频中解释了更多,完整的笔记本在这里


推荐阅读