Model 类
表示机器学习训练的结果。
模型是 Azure 机器学习训练Run或 Azure 外部的一些其他模型训练过程的结果。 无论模型是如何生成的,它都可以在工作区中注册,其中它由名称和版本表示。 使用 Model 类,可以打包模型以用于 Docker,并将其部署为可用于推理请求的实时终结点。
有关演示如何创建、管理和使用模型的端到端教程,请参阅 使用 AZURE 机器学习通过 MNIST 数据和 scikit-learn 训练图像分类模型。
模型构造函数。
模型构造函数用于检索与提供的工作区关联的 Model 对象的云表示形式。 必须提供名称或 ID。
构造函数
Model(workspace, name=None, id=None, tags=None, properties=None, version=None, run_id=None, model_framework=None, expand=True, **kwargs)
参数
名称 | 说明 |
---|---|
workspace
必需
|
包含要检索的模型的工作区对象。 |
name
|
要检索的模型的名称。 返回具有指定名称的最新模型(如果存在)。 默认值: None
|
id
|
要检索的模型的 ID。 返回具有指定 ID 的模型(如果存在)。 默认值: None
|
tags
|
用于筛选返回结果的标记的可选列表。 根据提供的列表筛选结果,按“key”或“[key, value]”进行搜索。 例如: ['key', ['key2', 'key2 value']] 默认值: None
|
properties
|
用于筛选返回结果的属性的可选列表。 根据提供的列表筛选结果,按“key”或“[key, value]”进行搜索。 例如: ['key', ['key2', 'key2 value']] 默认值: None
|
version
|
要返回的模型版本。 随 默认值: None
|
run_id
|
用于筛选返回结果的可选 ID。 默认值: None
|
model_framework
|
用于筛选返回结果的可选框架名称。 如果指定,则为匹配指定框架的模型返回结果。 请参阅 Framework 允许的值。 默认值: None
|
workspace
必需
|
包含要检索的模型的工作区对象。 |
name
必需
|
要检索的模型的名称。 返回具有指定名称的最新模型(如果存在)。 |
id
必需
|
要检索的模型的 ID。 返回具有指定 ID 的模型(如果存在)。 |
tags
必需
|
用于筛选返回结果的标记的可选列表。 根据提供的列表筛选结果,按“key”或“[key, value]”进行搜索。 例如: ['key', ['key2', 'key2 value']] |
properties
必需
|
用于筛选返回结果的属性的可选列表。 根据提供的列表筛选结果,按“key”或“[key, value]”进行搜索。 例如: ['key', ['key2', 'key2 value']] |
version
必需
|
要返回的模型版本。 随 |
run_id
必需
|
用于筛选返回结果的可选 ID。 |
model_framework
必需
|
用于筛选返回结果的可选框架名称。 如果指定,则为匹配指定框架的模型返回结果。 请参阅 Framework 允许的值。 |
expand
|
如果为 true,则返回填充所有子属性的模型,例如运行、数据集和试验。 默认值: True
|
注解
模型构造函数用于检索与指定工作区关联的 Model 对象的云表示形式。 至少必须提供名称或 ID 才能检索模型,但还有其他用于筛选的选项,包括按标记、属性、版本、运行 ID 和框架。
from azureml.core.model import Model
model = Model(ws, 'my_model_name')
下面的示例演示如何提取特定版本的模型。
from azureml.core.model import Model
model = Model(ws, 'my_model_name', version=1)
注册模型将为构成模型的一个或多个文件创建逻辑容器。 除了模型文件本身的内容外,已注册的模型还存储模型元数据,包括模型说明、标记和框架信息,在工作区中管理和部署模型时非常有用。 例如,使用标记,可以在工作区中列出模型时对模型进行分类并应用筛选器。 注册后,可以下载或部署已注册的模型,并接收已注册的所有文件和元数据。
以下示例演示如何注册指定标记和说明的模型。
from azureml.core.model import Model
model = Model.register(model_path="sklearn_regression_model.pkl",
model_name="sklearn_regression_model",
tags={'area': "diabetes", 'type': "regression"},
description="Ridge regression model to predict diabetes",
workspace=ws)
以下示例演示如何注册指定框架、输入和输出数据集以及资源配置的模型。
import sklearn
from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration
model = Model.register(workspace=ws,
model_name='my-sklearn-model', # Name of the registered model in your workspace.
model_path='./sklearn_regression_model.pkl', # Local file to upload and register as a model.
model_framework=Model.Framework.SCIKITLEARN, # Framework used to create the model.
model_framework_version=sklearn.__version__, # Version of scikit-learn used to create the model.
sample_input_dataset=input_dataset,
sample_output_dataset=output_dataset,
resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5),
description='Ridge regression model to predict diabetes progression.',
tags={'area': 'diabetes', 'type': 'regression'})
print('Name:', model.name)
print('Version:', model.version)
“ 变量 ”部分列出了云模型对象的本地表示形式的属性。 这些变量应视为只读。 更改其值不会反映在相应的云对象中。
变量
名称 | 说明 |
---|---|
created_by
|
创建模型的用户。 |
created_time
|
创建模型时。 |
azureml.core.Model.description
|
Model 对象的说明。 |
azureml.core.Model.id
|
模型 ID。 这采用模型名称<:>model 版本<的形式>。 |
mime_type
|
模型 mime 类型。 |
azureml.core.Model.name
|
模型的名称。 |
model_framework
|
模型的框架。 |
model_framework_version
|
模型的框架版本。 |
azureml.core.Model.tags
|
Model 对象的标记字典。 |
azureml.core.Model.properties
|
模型的键值属性字典。 注册后无法更改这些属性,但可以添加新的键值对。 |
unpack
|
拉取到本地上下文时,是否需要解压缩模型(未压缩)。 |
url
|
模型的 URL 位置。 |
azureml.core.Model.version
|
模型的版本。 |
azureml.core.Model.workspace
|
包含模型的工作区。 |
azureml.core.Model.experiment_name
|
创建模型的试验的名称。 |
azureml.core.Model.run_id
|
创建模型的运行 ID。 |
parent_id
|
模型的父模型的 ID。 |
derived_model_ids
|
已从此模型派生的模型 ID 的列表。 |
resource_configuration
|
此模型的 ResourceConfiguration。 用于分析。 |
方法
add_dataset_references |
将提供的数据集与此模型相关联。 |
add_properties |
将键值对添加到此模型的属性字典。 |
add_tags |
将此模型的标记字典添加键值对。 |
delete |
从其关联的工作区中删除此模型。 |
deploy |
从零个或多个 Model 对象部署 Web 服务。 生成的 Web 服务是可用于推理请求的实时终结点。 Model |
deserialize |
将 JSON 对象转换为模型对象。 如果指定的工作区不是模型注册到的工作区,则转换失败。 |
download |
将模型下载到本地文件系统的目标目录。 |
get_model_path |
返回模型的路径。 该函数将在以下位置搜索模型。 如果
如果
|
get_sas_urls |
返回包含文件名和相应 SAS URL 的键值对的字典。 |
list |
检索与提供的工作区关联的所有模型的列表,其中包含可选筛选器。 |
package |
以 Docker 映像或 Dockerfile 生成上下文的形式创建模型包。 |
print_configuration |
打印用户配置。 |
profile |
分析模型以获取资源要求建议。 这是一项长时间运行的作,根据数据集的大小,最长可能需要 25 分钟。 |
register |
向提供的工作区注册模型。 |
remove_tags |
从此模型的标记字典中删除指定的键。 |
serialize |
将此模型转换为 json 序列化字典。 |
update |
执行模型的就地更新。 将替换指定参数的现有值。 |
update_tags_properties |
对模型的标记和属性执行更新。 |
add_dataset_references
将提供的数据集与此模型相关联。
add_dataset_references(datasets)
参数
名称 | 说明 |
---|---|
datasets
必需
|
表示数据集对象的数据集配对的元组列表。 |
例外
类型 | 说明 |
---|---|
add_properties
add_tags
delete
deploy
从零个或多个 Model 对象部署 Web 服务。
生成的 Web 服务是可用于推理请求的实时终结点。 Model deploy
函数类似于 deploy
类的 Webservice 函数,但不注册模型。 如果你有已注册的模型对象,请使用 Model deploy
函数。
static deploy(workspace, name, models, inference_config=None, deployment_config=None, deployment_target=None, overwrite=False, show_output=False)
参数
名称 | 说明 |
---|---|
workspace
必需
|
要与 Web 服务关联的 Workspace 对象。 |
name
必需
|
要为已部署的服务提供的名称。 工作区必须是唯一的,仅包含小写字母、数字或短划线,以字母开头,长度介于 3 到 32 个字符之间。 |
models
必需
|
模型对象列表。 可以是空列表。 |
inference_config
|
用于确定所需模型属性的 InferenceConfig 对象。 默认值: None
|
deployment_config
|
用于配置 Web 服务的 WebserviceDeploymentConfiguration。 如果未提供空配置对象,将基于所需的目标使用空配置对象。 默认值: None
|
deployment_target
|
要向其部署 Web 服务的 A ComputeTarget 。 由于 Azure 容器实例没有关联 ComputeTarget,请将此参数保留为 None 以部署到 Azure 容器实例。 默认值: None
|
overwrite
|
指示如果已存在具有指定名称的服务,则指示是否覆盖现有服务。 默认值: False
|
show_output
|
指示是否显示服务部署的进度。 默认值: False
|
返回
类型 | 说明 |
---|---|
对应于已部署 Web 服务的 Webservice 对象。 |
例外
类型 | 说明 |
---|---|
deserialize
download
get_model_path
返回模型的路径。
该函数将在以下位置搜索模型。
如果 version
为 None:
- 从远程下载到缓存(如果提供了工作区)
- 从缓存 azureml-models/$MODEL_NAME/$LATEST_VERSION/ 加载
- ./$MODEL_NAME
如果 version
不是 None:
- 从缓存 azureml-models/$MODEL_NAME/$SPECIFIED_VERSION/
- 从远程下载到缓存(如果提供了工作区)
static get_model_path(model_name, version=None, _workspace=None)
参数
名称 | 说明 |
---|---|
model_name
必需
|
要检索的模型的名称。 |
version
|
要检索的模型的版本。 默认为最新版本。 默认值: None
|
_workspace
|
要从中检索模型的工作区。 不能远程使用。 如果未指定,则仅搜索本地缓存。 默认值: None
|
返回
类型 | 说明 |
---|---|
磁盘上指向模型的路径。 |
例外
类型 | 说明 |
---|---|
get_sas_urls
list
检索与提供的工作区关联的所有模型的列表,其中包含可选筛选器。
static list(workspace, name=None, tags=None, properties=None, run_id=None, latest=False, dataset_id=None, expand=True, page_count=255, model_framework=None)
参数
名称 | 说明 |
---|---|
workspace
必需
|
要从中检索模型的工作区对象。 |
name
|
如果提供,则仅返回具有指定名称的模型(如果有)。 默认值: None
|
tags
|
将根据提供的列表(按“key”或“[key,value]”)进行筛选。 例如: ['key', ['key2', 'key2 value']] 默认值: None
|
properties
|
将根据提供的列表(按“key”或“[key,value]”)进行筛选。 例如: ['key', ['key2', 'key2 value']] 默认值: None
|
run_id
|
将根据提供的运行 ID 进行筛选。 默认值: None
|
latest
|
如果为 true,则仅返回具有最新版本的模型。 默认值: False
|
dataset_id
|
将根据提供的数据集 ID 进行筛选。 默认值: None
|
expand
|
如果为 true,则返回填充所有子属性的模型,例如运行、数据集和试验。 如果许多模型,将此项设置为 false 应加快 list() 方法完成速度。 默认值: True
|
page_count
|
在页面中检索的项数。 目前支持高达 255 的值。 默认值为 255。 默认值: 255
|
model_framework
|
如果提供,则仅返回具有指定框架的模型(如果有)。 默认值: None
|
返回
类型 | 说明 |
---|---|
可以选择筛选的模型列表。 |
例外
类型 | 说明 |
---|---|
package
以 Docker 映像或 Dockerfile 生成上下文的形式创建模型包。
static package(workspace, models, inference_config=None, generate_dockerfile=False, image_name=None, image_label=None)
参数
名称 | 说明 |
---|---|
workspace
必需
|
在其中创建包的工作区。 |
models
必需
|
要包含在包中的 Model 对象列表。 可以是空列表。 |
inference_config
|
用于配置模型作的 InferenceConfig 对象。 这必须包括 Environment 对象。 默认值: None
|
generate_dockerfile
|
是否创建可在本地运行的 Dockerfile,而不是生成映像。 默认值: False
|
image_name
|
生成映像时,生成的映像的名称。 默认值: None
|
image_label
|
生成映像时,生成的图像的标签。 默认值: None
|
返回
类型 | 说明 |
---|---|
ModelPackage 对象。 |
print_configuration
打印用户配置。
static print_configuration(models, inference_config, deployment_config, deployment_target)
参数
名称 | 说明 |
---|---|
models
必需
|
模型对象列表。 可以是空列表。 |
inference_config
必需
|
用于确定所需模型属性的 InferenceConfig 对象。 |
deployment_config
必需
|
用于配置 Web 服务的 WebserviceDeploymentConfiguration。 |
deployment_target
必需
|
要向其部署 Web 服务的 A ComputeTarget 。 |
profile
分析模型以获取资源要求建议。
这是一项长时间运行的作,根据数据集的大小,最长可能需要 25 分钟。
static profile(workspace, profile_name, models, inference_config, input_dataset, cpu=None, memory_in_gb=None, description=None)
参数
名称 | 说明 |
---|---|
workspace
必需
|
要在其中分析模型的 Workspace 对象。 |
profile_name
必需
|
分析运行的名称。 |
models
必需
|
模型对象列表。 可以是空列表。 |
inference_config
必需
|
用于确定所需模型属性的 InferenceConfig 对象。 |
input_dataset
必需
|
用于分析的输入数据集。 输入数据集应具有单个列,示例输入应采用字符串格式。 |
cpu
|
要用于最大测试实例的 CPU 核心数。 目前支持高达 3.5 的值。 默认值: None
|
memory_in_gb
|
要用于最大测试实例的内存量(以 GB 为单位)。 可以是小数。 目前支持高达 15.0 的值。 默认值: None
|
description
|
要与分析运行关联的说明。 默认值: None
|
返回
类型 | 说明 |
---|---|
例外
类型 | 说明 |
---|---|
<xref:azureml.exceptions.WebserviceException>, <xref:azureml.exceptions.UserErrorException>
|
register
向提供的工作区注册模型。
static register(workspace, model_path, model_name, tags=None, properties=None, description=None, datasets=None, model_framework=None, model_framework_version=None, child_paths=None, sample_input_dataset=None, sample_output_dataset=None, resource_configuration=None)
参数
名称 | 说明 |
---|---|
workspace
必需
|
要注册模型的工作区。 |
model_path
必需
|
模型资产所在的本地文件系统上的路径。 这可以是指向单个文件或文件夹的直接指针。 如果指向文件夹, |
model_name
必需
|
要在其中注册模型的名称。 |
tags
|
dict(<xref:{str : str}>)
要分配给模型的键值标记的可选字典。 默认值: None
|
properties
|
dict(<xref:{str : str}>)
要分配给模型的键值属性的可选字典。 创建模型后无法更改这些属性,但可以添加新的键值对。 默认值: None
|
description
|
模型的文本说明。 默认值: None
|
datasets
|
元组列表,其中第一个元素描述数据集模型关系,第二个元素是数据集。 默认值: None
|
model_framework
|
已注册模型的框架。 使用类中系统支持的常量 Framework ,可以简化某些常用框架的部署。 默认值: None
|
model_framework_version
|
已注册模型的框架版本。 默认值: None
|
child_paths
|
如果与文件夹 默认值: None
|
sample_input_dataset
|
已注册模型的输入数据集示例。 默认值: None
|
sample_output_dataset
|
已注册模型的示例输出数据集。 默认值: None
|
resource_configuration
|
用于运行已注册模型的资源配置。 默认值: None
|
返回
类型 | 说明 |
---|---|
已注册的模型对象。 |
注解
除了模型文件本身的内容外,已注册的模型还存储模型元数据,包括模型说明、标记和框架信息,在工作区中管理和部署模型时非常有用。 例如,使用标记,可以在工作区中列出模型时对模型进行分类并应用筛选器。
以下示例演示如何注册指定标记和说明的模型。
from azureml.core.model import Model
model = Model.register(model_path="sklearn_regression_model.pkl",
model_name="sklearn_regression_model",
tags={'area': "diabetes", 'type': "regression"},
description="Ridge regression model to predict diabetes",
workspace=ws)
如果模型是在试验运行后生成的,则可以直接从运行对象注册该模型,而无需先将其下载到本地文件。 为此, register_model 请使用类中所述 Run 的方法。
serialize
update
执行模型的就地更新。
将替换指定参数的现有值。
update(tags=None, description=None, sample_input_dataset=None, sample_output_dataset=None, resource_configuration=None)
参数
名称 | 说明 |
---|---|
tags
|
dict(<xref:{str : str}>)
用于更新模型的标记字典。 这些标记替换模型的现有标记。 默认值: None
|
description
|
要用于模型的新说明。 此名称替换现有名称。 默认值: None
|
sample_input_dataset
|
要用于已注册模型的示例输入数据集。 此示例输入数据集替换了现有数据集。 默认值: None
|
sample_output_dataset
|
用于已注册模型的示例输出数据集。 此示例输出数据集替换了现有数据集。 默认值: None
|
resource_configuration
|
用于运行已注册模型的资源配置。 默认值: None
|
例外
类型 | 说明 |
---|---|