Triton教程 -- 模型仓库

news2024/11/24 14:33:04

Triton教程 – 模型仓库

在这里插入图片描述

文章目录

  • Triton教程 -- 模型仓库
    • 存储库布局
    • 模型存储库位置
      • 本地文件系统
    • 具有环境变量的云存储
      • 谷歌云存储
      • S3
      • Azure 存储
      • 带凭证文件的云存储(测试版)
    • 模型版本
    • 模型文件
      • TensorRT 模型
      • ONNX 模型
      • TorchScript 模型
      • TensorFlow 模型
      • OpenVINO 模型
      • Python模型
      • DALI模型

这是您第一次建立模型库吗? 查看这些教程,开始您的 Triton 之旅!

Triton 推理服务器为服务器启动时指定的一个或多个模型存储库中的模型提供服务。 当 Triton 运行时,可以按照模型管理中的描述修改所服务的模型。

存储库布局

这些存储库路径是在使用 –model-repository 选项启动 Triton 时指定的。 可以多次指定 –model-repository 选项以包含来自多个存储库的模型。 组成模型存储库的目录和文件必须遵循所需的布局。 假设存储库路径指定如下。

$ tritonserver --model-repository=<model-repository-path>

相应的存储库布局必须是:

  <model-repository-path>/
    <model-name>/
      [config.pbtxt]
      [<output-labels-file> ...]
      <version>/
        <model-definition-file>
      <version>/
        <model-definition-file>
      ...
    <model-name>/
      [config.pbtxt]
      [<output-labels-file> ...]
      <version>/
        <model-definition-file>
      <version>/
        <model-definition-file>
      ...
    ...

在顶级模型存储库目录中,必须有零个或多个子目录。 每个子目录都包含相应模型的存储库信息。 config.pbtxt 文件描述了模型的模型配置。 对于某些模型,config.pbtxt 是必需的,而对于其他模型,它是可选的。 有关详细信息,请参阅自动生成的模型配置。

每个目录必须至少有一个代表模型版本的数字子目录。 有关 Triton 如何处理模型版本的更多信息,请参阅模型版本。 每个模型都由特定的后端执行。 在每个版本子目录中,必须有该后端所需的文件。 例如,使用 TensorRT、PyTorch、ONNX、OpenVINO 和 TensorFlow 等框架后端的模型必须提供特定于框架的模型文件。

模型存储库位置

Triton 可以从一个或多个本地可访问的文件路径、Google Cloud Storage、Amazon S3 和 Azure Storage 访问模型。

本地文件系统

对于本地可访问的文件系统,必须指定绝对路径。

$ tritonserver --model-repository=/path/to/model/repository ...

具有环境变量的云存储

谷歌云存储

对于驻留在 Google Cloud Storage 中的模型存储库,存储库路径必须以 gs:// 为前缀。

$ tritonserver --model-repository=gs://bucket/path/to/model/repository ...

使用 Google Cloud Storage 时,应设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量并包含凭证 JSON 文件的位置。 如果未提供凭据,Triton 将使用附加服务帐户中的凭据,为可以获得的授权 HTTP 标头提供值。 如果无法获得,将使用匿名凭证。

要使用匿名凭证访问存储桶(也称为公共存储桶),存储桶(和对象)应该已向所有用户授予获取和列出权限。 经测试,将“allUsers”的storage.objectViewer和storage.legacyBucketReader预定义角色都添加到bucket中即可实现,可通过以下命令添加:

$ gsutil iam ch allUsers:objectViewer "${BUCKET_URL}"
$ gsutil iam ch allUsers:legacyBucketReader "${BUCKET_URL}"

S3

对于驻留在 Amazon S3 中的模型存储库,路径必须以 s3:// 为前缀。

$ tritonserver --model-repository=s3://bucket/path/to/model/repository ...

对于 S3 的本地或私有实例,前缀 s3:// 必须后跟主机和端口(以分号分隔),然后是存储桶路径。

$ tritonserver --model-repository=s3://host:port/bucket/path/to/model/repository ...

默认情况下,Triton 使用 HTTP 与您的 S3 实例通信。 如果您的 S3 实例支持 HTTPS,并且您希望 Triton 使用 HTTPS 协议与其通信,您可以通过在主机名前加上 https:// 来在模型存储库路径中指定相同的内容。

$ tritonserver --model-repository=s3://https://host:port/bucket/path/to/model/repository ...

使用 S3 时,可以使用 aws config 命令或通过相应的环境变量传递凭据和默认区域。 如果设置了环境变量,它们将具有更高的优先级,并且将由 Triton 使用,而不是使用 aws config 命令设置的凭据。

Azure 存储

对于驻留在 Azure 存储中的模型存储库,存储库路径必须以 as:// 为前缀。

$ tritonserver --model-repository=as://account_name/container_name/path/to/model/repository ...

使用 Azure 存储时,必须将 AZURE_STORAGE_ACCOUNT 和 AZURE_STORAGE_KEY 环境变量设置为有权访问 Azure 存储存储库的帐户。

如果您不知道您的 AZURE_STORAGE_KEY 并且正确配置了 Azure CLI,下面是一个如何找到与您的 AZURE_STORAGE_ACCOUNT 对应的密钥的示例:

$ export AZURE_STORAGE_ACCOUNT="账户名"
$ export AZURE_STORAGE_KEY=$(az storage account keys list -n $AZURE_ST

带凭证文件的云存储(测试版)

此功能目前处于测试阶段,可能会发生变化。

要将凭证分组到 Triton 的单个文件中,您可以将 TRITON_CLOUD_CREDENTIAL_PATH 环境变量设置为指向驻留在本地文件系统中的以下格式的 JSON 文件的路径。

export TRITON_CLOUD_CREDENTIAL_PATH="cloud_credential.json"

“cloud_credential.json”:

{
  "gs": {
    "": "PATH_TO_GOOGLE_APPLICATION_CREDENTIALS",
    "gs://gcs-bucket-002": "PATH_TO_GOOGLE_APPLICATION_CREDENTIALS_2"
  },
  "s3": {
    "": {
      "secret_key": "AWS_SECRET_ACCESS_KEY",
      "key_id": "AWS_ACCESS_KEY_ID",
      "region": "AWS_DEFAULT_REGION",
      "session_token": "",
      "profile": ""
    },
    "s3://s3-bucket-002": {
      "secret_key": "AWS_SECRET_ACCESS_KEY_2",
      "key_id": "AWS_ACCESS_KEY_ID_2",
      "region": "AWS_DEFAULT_REGION_2",
      "session_token": "AWS_SESSION_TOKEN_2",
      "profile": "AWS_PROFILE_2"
    }
  },
  "as": {
    "": {
      "account_str": "AZURE_STORAGE_ACCOUNT",
      "account_key": "AZURE_STORAGE_KEY"
    },
    "as://Account-002/Container": {
      "account_str": "",
      "account_key": ""
    }
  }
}

要匹配凭据,将使用给定路径开头的最长匹配凭据名称。 例如:gs://gcs-bucket-002/model_repository 将匹配“gs://gcs-bucket-002”GCS 凭证,gs://any-other-gcs-bucket 将匹配“”GCS 凭证 .

此功能适用于每个云存储提供商需要多个凭据的用例。 请务必将任何凭证路径/密钥替换为上例中的实际路径/密钥。

如果未设置 TRITON_CLOUD_CREDENTIAL_PATH 环境变量,将使用带有环境变量的云存储。

模型版本

每个模型在模型存储库中都可以有一个或多个可用版本。 每个版本都存储在它自己的、以数字命名的子目录中,其中子目录的名称对应于模型的版本号。 未以数字命名或名称以零 (0) 开头的子目录将被忽略。 每个模型配置都指定了一个版本策略,该策略控制模型存储库中的哪些版本在任何给定时间由 Triton 提供。

模型文件

每个模型版本子目录的内容由模型的类型和支持该模型的后端的要求决定。

TensorRT 模型

TensorRT 模型定义称为计划。 TensorRT 计划是单个文件,默认情况下必须命名为 model.plan。 可以使用模型配置中的 default_model_filename 属性覆盖此默认名称。

TensorRT 计划特定于 GPU 的 CUDA 计算能力。 因此,TensorRT 模型将需要在模型配置中设置 cc_model_filenames 属性,以将每个计划文件与相应的计算能力相关联。

TensorRT 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.plan

ONNX 模型

ONNX 模型是单个文件或包含多个文件的目录。 默认情况下,文件或目录必须命名为 model.onnx。 可以使用模型配置中的 default_model_filename 属性覆盖此默认名称。

Triton 支持 Triton 使用的 ONNX Runtime 版本支持的所有 ONNX 模型。 如果模型使用陈旧的 ONNX opset 版本或包含具有不受支持类型的运算符,则模型将不受支持。

单个文件中包含的 ONNX 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.onnx

由多个文件组成的 ONNX 模型必须包含在一个目录中。 默认情况下,此目录必须命名为 model.onnx,但可以使用模型配置中的 default_model_filename 属性进行覆盖。 此目录中的主模型文件必须命名为 model.onnx。 目录中包含的 ONNX 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.onnx/
           model.onnx
           <other model files>

TorchScript 模型

TorchScript 模型是单个文件,默认情况下必须命名为 model.pt。 可以使用模型配置中的 default_model_filename 属性覆盖此默认名称。 由于底层 opset 的变化,Triton 可能不支持使用不同版本的 PyTorch 跟踪的某些模型。

TorchScript 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.pt

TensorFlow 模型

TensorFlow 以两种格式之一保存模型:GraphDef 或 SavedModel。 Triton 支持这两种格式。

TensorFlow GraphDef 是单个文件,默认情况下必须命名为 model.graphdef。 TensorFlow SavedModel 是一个包含多个文件的目录。 默认情况下,该目录必须命名为 model.savedmodel。 可以使用模型配置中的 default_model_filename 属性覆盖这些默认名称。

TensorFlow GraphDef 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.graphdef

TensorFlow SavedModel 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.savedmodel/
           <saved-model files>

OpenVINO 模型

OpenVINO 模型由两个文件表示,即 *.xml*.bin 文件。 默认情况下,*.xml 文件必须命名为 model.xml。 可以使用模型配置中的 default_model_filename 属性覆盖此默认名称。

OpenVINO 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.xml
        model.bin

Python模型

Python 后端允许您在 Triton 中将 Python 代码作为模型运行。 默认情况下,Python 脚本必须命名为 model.py,但可以使用模型配置中的 default_model_filename 属性覆盖此默认名称。

Python 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.py

DALI模型

DALI 后端允许您将 DALI 管道作为 Triton 中的模型运行。 为了使用这个后端,您需要生成一个默认名为 model.dali 的文件,并将其包含在您的模型存储库中。 有关如何生成model.dali 的说明,请参阅DALI 后端文档。 可以使用模型配置中的 default_model_filename 属性覆盖默认模型文件名。

DALI 模型的最小模型存储库是:

  <model-repository-path>/
    <model-name>/
      config.pbtxt
      1/
        model.dali

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/648499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

滴滴实时数据链路建设组件选型实践篇

写在前面 随着滴滴内部技术栈的不断统一&#xff0c;实时相关技术组件资源的不断整合&#xff0c;各业务线实时数据相关开发经验的不断沉淀&#xff0c;基本形成了一套面向公司不同业务场景需求的最佳技术选型和具体落地方案。但同时我们也发现&#xff0c;大部分实时开发同学在…

React基础教程(一):React简介

React基础教程(一)&#xff1a;React简介 1、React是什么&#xff1f; 发生请求获取数据处理数据&#xff08;过滤&#xff0c;整理格式等&#xff09;操作DOM呈现页面 2、谁开发的 由Facebook的软件工程师 Jordan Walke创建于2011年部署于Facebook的newsfeed随后在2012年部…

一本书让你彻底搞懂安卓系统性能优化

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Transformer详解,中文版架构图

2.2.1 “编码器-解码器”架构 Seq2Seq 思想就是将网络的输入输出分别看作不同的序列&#xff0c;然后实现序列到序列 的映射&#xff0c;其经典实现结构就是“编码器-解码器”框架。编码器-解码器框架如图 2.7 所 示。 图2.7 编码器-解码器的基本框架 在 Seq2Seq 思想应用于自然…

机器鸟实现摆动尾巴功能

1. 功能说明 本文示例将实现R329样机机器鸟摆动尾巴的功能。 2. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09;‍ 扩展板 Bigfish2.1扩展板‍ 电池7.4V锂电池 电路连接…

新的挑战:WebGL

这段时间一直在死磕 Chromium 的 8K 高清视频播放&#xff0c;虽然之前写过一些关键技术的实现&#xff0c;主要难点差不多攻破&#xff0c;但投入到产品中&#xff0c;依然还要解决很多实际中的问题&#xff0c;比如卡顿、格式支持、音视频不同步等等。前期的相关文章&#xf…

RocketMQ基础API使用以及基本原理探究

文章目录 同步发送异步发送单向发送拉模式随机获取一个queue的消息指定一个queue的消息 顺序消息广播消息延迟消息批量消息过滤消息Tag过滤sql过滤 事务消息RocketMQ常见问题RocketMQ如何保证消息不丢失&#xff1f;RocketMQ的消息持久化机制RocketMQ如何保证消息顺序RocketMQ事…

Day07 Python函数详解

文章目录 第四章 Python函数使用4.1. 函数介绍4.2. 函数的定义与使用4.2.1. 函数的定义4.2.2. 调用 4.3. 函数的参数4.4. 函数的返回值4.4.1. 返回值介绍4.4.2. None类型 4.5. 函数说明4.5.1. 函数注释4.5.2. 函数的4中定义方式4.5.3. 函数的调用 4.6. 函数的嵌套调用4.7. 函数…

哪款 IMG BXS GPU 适合您的汽车?

Imagination 是汽车行业领先的图形处理器供应商。Imagination 的 GPU IP 经过了九代更新迭代&#xff0c;为车辆提供了舒适性和安全性&#xff0c;在汽车行业的总出货量接近 5 亿。通过将响应迅速的 HMI&#xff08;人机界面&#xff09;与功能日益强大的高级驾驶员辅助系统相结…

Linux:主机状态监控

查看系统的资源占用 可以通过top命令&#xff0c;查看系统CPU、内存使用情况 top命令内容详解&#xff1a; 第一行&#xff1a;top&#xff1a;命令名称&#xff0c;10.49.16&#xff1a;当前系统时间&#xff0c;up 4:40&#xff1a;启动了4小时40分&#xff0c;4 users&#…

Aspose.Pdf使用教程:为PDF文件添加swf注释

Aspose.PDF 是一款高级PDF处理API&#xff0c;可以在跨平台应用程序中轻松生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现&#xff0c;保护和打印文档。无需使用Adobe Acrobat。此外&#xff0c;API提供压缩选项&#xff0c;表创建和处理&#xff0c;图形和图像功能&am…

STL之priority_queue与仿函数

目录 一.仿函数1.介绍2.示例 二.priority_queue1.介绍2.成员函数3.模拟实现4.使用 三.其他1.typename Container::value_type 一.仿函数 1.介绍 函数对象&#xff0c;又称仿函数&#xff0c;是可以像函数一样使用的对象&#xff0c;其原理就是重载了函数调用符&#xff1a;()…

浅谈数据中台之标签管理平台

在现如今的大数据时代&#xff0c;相信大家一定了解或者听说过下列几个场景&#xff1a; 购物APP&#xff1a;千人千面&#xff0c;意思不同用户使用相关的产品感觉是不一样的&#xff0c;不同用户看到的购物APP首页推荐内容和其他相关推荐流信息可能是完全不同的。 社交APP&…

实例:使用网络分析仪进行电缆测试

本应用测试针对非标称50Ω的线缆&#xff0c;包括同轴、双绞线、差分高速数据线的测试&#xff0c;包括阻抗参数、S参数&#xff08;插损、驻波、Smith图等等&#xff09;&#xff0c;也可以绘制眼图。 根据电缆的性能&#xff0c;如频率范围、长度、是否差分&#xff0c;设置…

Linux:root用户

root用户对Linux系统拥有最大的操作权限。 普通用户的权限一般都在home目录下&#xff0c;超过home目录后&#xff0c;普通用户在很多地方只有只读和执行的权限&#xff0c;但没有修改权限。 1、su命令&#xff1a;切换到root用户的命令语法&#xff1a; su -root “-”符号是可…

精密空调监控:不会这个技巧,千万不要尝试

随着科技的不断进步和信息化的发展&#xff0c;精密空调设备被广泛应用于数据中心、通信基站、医疗设施、实验室等对温度和湿度要求严格的环境中&#xff0c;以保证设备的正常运行和数据的安全性。 借助动环监控系统&#xff0c;精密空调可以实时了解设备的运行状态、温湿度的变…

数据库迁移 | Oracle数据迁移方案之技术两三点

今年Oracle似乎又火了&#xff0c;火得要下掉&#xff0c;目前中国大概有240数据库企业&#xff0c;在国产信创的大趋势下&#xff0c;一片欣欣向荣&#xff0c;国库之春已然来临。到今天为止&#xff0c;Oracle依旧是市场份额最大的数据库&#xff0c;天下苦秦久矣&#xff0c…

关于使用keil瑞萨RA4M2踩过的坑

一、之前在rasc添加的组件不能删除。 下面在rasc添加ThreadX&#xff0c;不只是RTOS&#xff0c;其他组件也出现这种情况。 当去掉组件不使用&#xff0c;重新配置。但是组件还是显示在软件包&#xff0c;导致编译出错。 解决方式&#xff0c;自己琢磨发现&#xff1a; 找到工…

腾讯视频技术团队偷懒了?!

&#x1f449;腾小云导读 PC Web 端、手机 H5 端、小程序端、App 安卓端、App iOS 端......在多端时代&#xff0c;一个应用往往需要支持多端。若每个端都独立开发一套系统来支持&#xff0c;将消耗巨大的人力和经费&#xff01;腾讯视频团队想到一个“偷懒”的方法——能不能只…

共建智慧工厂物联网平台方案 | 6.10 IoTDB X EMQ 主题 Meetup 回顾

6 月 10 日&#xff0c;IoTDB X EMQ 智慧工厂主题 Meetup 在深圳成功举办。工业物联网时序数据库研发商天谋科技、物联网数据基础设施软件供应商 EMQ 的两位技术大牛&#xff0c;针对多行业制造流程中数据传输、故障感知、决策执行等常见难题&#xff0c;通过数据基础设施平台的…