使用 Windows ML 模型目录 API 下载和共享设备上的模型

Windows ML 模型目录 API 允许应用或库从自己的联机模型目录将大型 AI 模型文件动态下载到设备上的共享位置,而无需将这些大型文件直接寄送到应用或库。 此外,模型目录将帮助筛选其正在运行的 Windows 设备兼容的模型,以便将正确的模型下载到设备。

什么是模型目录 API?

模型目录 API 是一组 API,可以连接到一个或多个云模型目录,以方便在设备上本地下载和存储这些模型,以便这些模型可供设备上的任何 Windows 应用程序使用。 API 有一些核心功能:

  • 添加目录:添加一个或多个联机目录
  • 发现兼容的模型:自动查找适用于用户硬件和执行提供程序的模型
  • 下载模型:从各种源下载和存储模型
  • 跨应用共享模型:如果多个应用程序请求相同的模型(相同的 SHA256 哈希),模型将在磁盘上共享,而不会复制下载

主要功能

自动兼容性匹配

模型目录会自动将模型与系统的可用执行提供程序(CPU、GPU、NPU 等)匹配。 请求模型时,目录仅返回与当前硬件配置兼容的模型。

模型存储

下载的模型存储在用户特定的位置。 如果多个应用程序请求相同的模型(相同的 SHA256 哈希),则已下载的模型将在这些应用程序之间共享。

多个目录资源

应用程序可以配置多个目录源,使你可以:

  • 使用来自多个供应商或存储库的模型
  • 将某些源优先于其他源
  • 将自己的专用模型目录与公共模型一起包含在一起

工作原理

模型目录系统由多个组件组成:

  1. 目录源:定义可在何处找到模型(目录 JSON 文件的 URL)
  2. 模型匹配:基于执行提供程序兼容性筛选可用模型
  3. 下载管理:处理模型文件的下载和存储
  4. 实例管理:提供对应用运行时下载的模型的访问权限

模型标识

目录中的模型具有两种类型的标识符:

  • 名称:类似于“gpt2”的公用名(多个模型变体可以共享同一名称)
  • ID:目录内唯一标识符,通常包括执行提供程序信息,例如“gpt2-cpu”或“gpt2-npu”

应用程序通常使用FindModelAsync 与“Name”一起,为了简单起见,让目录根据执行提供程序兼容性为当前系统选择最佳可用模型变体。

执行提供程序支持

模型目录支持各种执行提供程序。 有关详细信息,请参阅 Windows ML 文档中支持的执行提供程序

目录源架构

模型目录源使用标准化 JSON 架构,该架构定义:

  • 模型元数据(名称、ID、版本、发布者)
  • 支持的计算提供商
  • 下载 URL 和文件信息
  • 许可证信息
  • 模型大小详细信息

有关详细的架构信息,请参阅 模型目录源

入门指南

若要开始在 Windows ML 应用程序中使用模型目录,请执行以下作:

  1. 配置目录源
  2. 创建 ModelCatalog 实例
  3. 查询和下载模型
  4. 用您需要的运行时推理模型!

有关完整指南,请参阅 模型目录入门

后续步骤