Skip to main content

模型注册表


ClearML 提供了一个模型注册表,用于以完整的可追溯性和来源记录和共享模型。ClearML 模型注册表允许您跟踪和记录模型更改,查看和追踪模型谱系,从而轻松实现与任何连接的编排解决方案的可重复性。

您可以使用模型目录来基于更改(例如注册模型、添加标签或发布模型)触发CI/CD管道。

ClearML SDK 使同事能够轻松访问他人的工作,并始终基于模型目录或创建模型的实验获取模型。

ClearML 网络用户界面可视化模型目录,以实现模型生命周期的完全可观察性和血统,提供大规模治理。

创建一个可视化的网页界面,并使用GradioStreamlit启动器应用程序(在ClearML企业计划下可用)交互式地演示您的模型。

ClearML Serving 允许您部署模型,并在继续训练和测试新模型版本时继续更新它们。

注册模型

ClearML 支持自动和手动将模型注册到模型目录。

自动日志记录

ClearML 自动记录通过 TensorFlow 或 scikit-learn 等流行框架创建/加载的模型;你只需要在代码中实例化一个 ClearML 任务。ClearML 将框架的训练结果存储为输出模型。

以下框架支持自动日志记录:

您可能希望对记录的模型有更多的控制。使用Task.init()auto_connect_framework参数来控制框架的自动记录。

您可以指定仅记录具有特定名称的模型。例如,下面的任务将仅记录名称以final开头的PyTorch模型。

from clearml import Task

task = Task.init(
project_name="My Project",
task_name="My Task",
auto_connect_frameworks={'pytorch': 'final*.pt',}
)

有关控制模型日志记录的更多信息,请参见自动日志记录

手动日志记录

您可以使用ClearML的InputModelOutputModel类明确指定实验的模型。

输入模型

使用 InputModel 类来加载已经在 ClearML 中注册的模型,或者从外部资源导入预训练模型。

# Create an input model using the ClearML ID of a model already registered in the ClearML platform
input_model_1 = InputModel(model_id="fd8b402e874549d6944eebd49e37eb7b")

# Import an existing model
input_model_2 = InputModel.import_model(
# Name for model in ClearML
name='Input Model with Network Design',
# Import the model using a URL
weights_url='https://s3/models/model.pth',
# Set label enumeration values
label_enumeration={'person' : 1, 'car' : 2, 'truck' : 3, 'bus' : 4,
'motorcycle' : 5, 'bicycle' : 6, 'ignore': -1},
framework='PyTorch'
)

在实例化一个InputModel实例后,您可以将其连接到一个任务对象,以便模型可以追踪到一个实验。

# Connect the input model to the task
task.connect(input_model)

输出模型

使用 OutputModel 类来记录您的实验输出。一个 OutputModel 对象 是通过一个任务对象作为参数实例化的(参见 task 参数),因此它被 注册为任务的输出模型。由于 OutputModel 对象与任务相连,这些模型在实验中是可追踪的。

from clearml import OutputModel, Task

# Instantiate a Task
task = Task.init(project_name="myProject", task_name="myTask")

# Create an output model for the PyTorch framework
output_model = OutputModel(task=task, framework="PyTorch")

手动注册的输出模型的周期性快照不会自动捕获,但可以通过Task.update_output_model()OutputModel.update_weights()手动更新。

# Through Task object
task.update_output_model(model_path='path/to/model')

# Through OutputModel object
output_model.update_weights(weights_filename='models/model.pth')

分析模型

在实验过程中,您会构建您的模型目录。在ClearML的Web UI中,可以通过项目的模型表或通过模型关联的任务来定位模型信息。

与任务相关的模型会出现在任务的ARTIFACTS标签中。要查看更多的模型详细信息,包括设计、标签枚举和一般信息,请点击模型名称,这是一个指向模型详情页面的超链接。

模型也可以通过它们关联项目的模型表访问,其中列出了与项目关联的所有模型。此表可以自定义列以显示特定的元数据和指标值,并支持过滤和排序以快速找到所需的模型。

您可以通过比较模型的网页界面,轻松识别、可视化和分析模型差异。

一旦你对模型满意,你可以发布它以维护其内容。

使用模型

ClearML 模型是独立的实体,便于在许多用例中使用。

您可以通过用户界面修改模型的详细信息:添加元数据、更改名称、重新配置以及添加/编辑标签枚举。 修改后的模型可以用作您的ClearML任务中的输入模型。

您可以修改实验训练的模型:

  1. 克隆一个实验
  2. 转到实验的Artifacts标签
  3. 将鼠标悬停在输入模型的Model name字段上并点击编辑。然后点击Edit Pencil。 这将打开一个包含模型表的窗口,您可以从模型目录中选择任何模型。

这在迁移学习或微调模型时非常有用。

查询模型

ClearML 模型目录可以直接通过模型对象(来自 InputModelModel 类)访问,或者通过它们关联的任务间接访问。

通过模型名称、项目、标签、元数据等查询目录,检索模型对象列表。

model_list = Model.query_models(
# Only models from `examples` project
project_name='examples',
# Only models with input name
model_name=None,
# Only models with `demo` tag or models without `TF` tag
tags=['demo', '-TF'],
# If `True`, only published models
only_published=False,
# If `True`, include archived models
include_archived=True,
# Maximum number of models returned
max_results=5,
# Only models with matching metadata
metadata={"key":"value"}
)

请参阅查询模型以获取更多信息和示例。

SDK 接口

一旦你检索到一个模型对象,你就可以通过编程方式使用它。

查看模型SDK接口以了解模型类的Pythonic方法概述。查看模型输出模型输入模型参考页面中的详细方法列表。

创建可视化网页界面

Enterprise Feature

Streamlit 和 Gradio 启动器应用程序在 ClearML 企业计划下可用。

创建一个可视化的网页界面,并使用GradioStreamlit启动应用程序交互式演示您的模型。

启动器应用程序会在您选择的机器上启动一个Gradio或Streamlit执行环境,并为您各自的应用程序提供服务。一旦您启动了一个启动器实例,您将获得一个可外部访问的链接,指向您的Gradio或Streamlit应用程序,您可以在其中使用您的模型。

服务模型

ClearML Serving 提供了一个用于模型部署和编排的命令行工具。它支持将模型部署,包括服务和预处理代码,部署到Kubernetes集群或基于自定义容器的解决方案中。

在您设置好clearml-serving之后,您可以在ClearML模型目录中为模型创建端点。

clearml-serving --id <service_id> model add --engine sklearn --endpoint "test_model_sklearn" --preprocess "examples/sklearn/preprocess.py" --model-id <newly_created_model_id_here>

ClearML 服务支持从 ClearML 模型目录自动部署和升级模型。 当配置了自动部署时,当您在 ClearML 模型目录中发布或标记新模型时,新模型版本将自动部署。

查看 ClearML Serving 获取更多信息。