跳转至内容

Ultralytics HUB-SDK 模型管理

欢迎使用 Ultralytics HUB-SDK 模型管理文档!无论您是刚开始管理机器学习模型,还是正在寻找特定操作说明的经验丰富的数据科学家,您都来对地方了。本指南提供了 HUB-SDK 功能的顺畅体验,确保您获得有效管理模型的知识。

通过其唯一标识符检索模型

在机器学习工作流程中,访问特定模型是一个常见的需求。使用 Ultralytics HUB-SDK,通过其 ID 获取模型非常简单。此函数基于提供的唯一标识符设置模型对象,使您可以完全访问模型的详细信息和操作。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model = client.model("<Model ID>")
print(model.data)  # Outputs the model's metadata and configuration

访问项目和数据集的先决条件

在创建或训练模型之前,务必确保 项目 和一个 数据集 存在。以下代码片段通过初始化对象来帮助验证这些组件。虽然利用项目和数据集来组织模型训练是有益的,但这不是强制性的。如果缺少任何 ID,则对象数据(project.data, dataset.data) 将为空。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

project = client.project("<Project ID>")
dataset = client.dataset("<Dataset ID>")

使用自定义配置创建新模型

创建一个 新模型 使用此功能可以轻松地根据您的项目需求进行定制。指定模型的名称并将其与您的项目和数据集关联。您还可以自定义配置,例如设置批量大小或设备。请注意, projectIddatasetId 如果您尚未准备好将模型绑定到项目或数据集,则这些参数是可选的。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

data = {
    "meta": {"name": "sdk model"},  # Model name
    "projectId": project.id,  # Optional: Associate with an existing project
    "datasetId": dataset.id,  # Optional: Associate with an existing dataset
    "config": {  # Define hyperparameters and settings
        "batchSize": "-1",
        "cache": "ram",
        "device": "name",
        "epochs": "5",
        "imageSize": "640",
        "patience": "5",  # Stop training if validation doesn't improve
    },
}
model = client.model()
model.create_model(data)  # Creates the model with your specified details

更新现有模型的元数据或配置

随着项目的进展,您可能需要更新模型的元数据,例如为了清晰起见对其进行重命名。SDK 提供了一种轻松刷新这些详细信息的方法,从而最大限度地减少手动错误并节省时间。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model = client.model("<Model ID>")
model.update({"meta": {"name": "Updated Model Name"}})  # Renames the specified model

安全删除模型

删除模型是不可逆的,因此请谨慎使用此功能。当您确定要从系统中 删除模型 时,以下命令将永久删除指定的模型及其所有相关数据。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model = client.model("<Model ID>")
model.delete(hard=True)  # Permanently deletes the specified model

默认情况下, delete 方法执行软删除,将模型标记为非活动状态,而不会永久删除它。如果要执行硬删除并永久删除模型及其关联的数据,请传递参数 hard=True 如上所示。使用硬删除选项时请务必小心,因为它是不可逆的。

列出所有带分页的模型

Ultralytics HUB-SDK 简化了获取流程 模型列表,实施分页以有效地浏览可能很大的集合。通过自定义参数,例如 page_size,您可以根据您的需求定制输出,包括查看私有和公共项目的能力。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model_list = client.model_list(page_size=10)  # Fetches the first page with 10 models
print("Current result:", model_list.results)  # Displays the current page's models

model_list.next()  # Move to the next page
print("Next page result:", model_list.results)

model_list.previous()  # Return to the previous page
print("Previous page result:", model_list.results)

上传并可视化训练指标

要跟踪和可视化训练过程中模型的性能指标,请使用此函数上传损失和准确率等指标。这可以持续监控训练进度并简化分析阶段。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model = client.model("<Model ID>")

# Define your metrics structure. Keys are steps, and values are JSON strings of metrics.
data = {
    1: '{"loss/1": 0.5, "accuracy/1": 0.85}',
    2: '{"loss/2": 0.4, "accuracy/2": 0.88}',
    3: '{"loss/3": 0.3, "accuracy/3": 0.90}',
}

model.upload_metrics(data)  # Uploads the specified metrics to the model

导出模型以进行部署或分析

为各种目的导出模型(例如部署或深度分析)非常简单。指定您需要的格式,此函数将相应地准备模型。无论您需要 TensorFlow 还是 PyTorch 格式,SDK 都能无缝处理。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model = client.model("<Model ID>")
model.export(format="pyTorch")  # Exports the model as a PyTorch file

检索直接权重 URL

有时,您可能需要直接访问模型远程存储的工件。此函数提供了一个 URL 来访问特定文件,例如您性能最佳的模型权重。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model = client.model("<Model ID>")
weight_url = model.get_weights_url("best")  # or "last"
print("Weight URL link:", weight_url)

上传模型检查点

正在上传 模型检查点 使用以下方法非常简单 upload_model 函数。使用以下方式指示检查点的意义 is_best 标志和训练 epoch,以提高清晰度。

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

model = client.model("<Model ID>")
model.upload_model(is_best=True, epoch=5, weights="<Weight File>")  # Uploads the specified model checkpoint

结论

Ultralytics HUB-SDK 提供了一套全面的操作,用于有效的模型管理,使您能够专注于在机器学习工作中取得最佳结果。如果您有任何其他问题或需要帮助,请联系我们的社区或支持团队。祝您建模愉快!🚀



📅 1 年前创建 ✏️ 1 个月前更新

评论