在使用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.yml
和deployment_config_aks.yml
文件来部署模型。
但是,如果我们在Python语言中使用azureml-sdk
,则命令如下:
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_config
和aks_config
以便在Python中使用呢?是否有使用YAML定义的.from_file()
选项?我的用例是在Azure Pipeline中创建Python步骤作为MLOps工作流!
发布于 2021-03-02 20:19:21
这些可以从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')
发布于 2021-03-03 04:00:51
UPDATE“我现在得到你想要的了。你想在InferenceConfig
类上有一个方法,你可以像传递.yml
类一样传递一个CondaEnvironment
,对吧?这不受支持,但我同意它应该是一个功能,因为它将使用户更容易采用AML SDK v2。一个变通办法可能是将yaml读取到python字典中,并将这些参数插入到类创建调用中……
Python SDK目前不支持使用YAML配置模型部署配置,但很快就会进入基于YAML的私有预览。这是您正在寻找的内容的almost working version,不久将提供给公众预览。请访问corresponding GitHub repo获取更多信息。
az ml endpoint create --file batchendpoint.yml
batchendpoint.yml
name: myBatchEndpoint
type: batch
auth_mode: AMLToken
deployments:
blue:
model: azureml:models/sklearn_regression_model:1
code_configuration:
code:
directory: ./endpoint
scoring_script: ./test.py
environment: azureml:AzureML-Minimal/versions/1
scale_settings:
node_count: 1
batch_settings:
partitioning_scheme:
mini_batch_size: 5
output_configuration:
output_action: AppendRow
append_row_file_name: append_row.txt
retry_settings:
maximum_retries: 3
timeout_in_seconds: 30
error_threshold: 10
logging_level: info
compute:
target: azureml:cpu-cluster
发布于 2021-03-03 14:51:26
您可以参考以下教程,尝试设置Python脚本来创建和部署Azure机器学习。
在完成Python脚本之后,您可以尝试在Azure DevOps上的YAML管道中执行该脚本。
https://stackoverflow.com/questions/66437607
复制相似问题