跳至内容

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

Access 项目和数据集的先决条件

在创建或训练模型之前,必须确保以下两点 项目 和一个 数据集 组件。下面的代码片段通过初始化对象来帮助验证这些组件。虽然利用项目和数据集来组织模型训练是有益的,但并不是必须的。如果缺少任何一个 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 标志和训练纪元,以提高清晰度。

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 个月前

评论