Triton教程 --- 模型管理

news2024/11/20 18:33:45

Triton教程 — 模型管理

在这里插入图片描述

Triton系列教程:

  1. 快速开始
  2. 利用Triton部署你自己的模型
  3. Triton架构
  4. 模型仓库
  5. 存储代理
  6. 模型设置
  7. 优化
  8. 动态批处理
  9. 速率限制器

Triton 提供的模型管理 API 是 HTTP/REST 和 GRPC 协议的一部分,也是 C API 的一部分。 Triton 以三种模型控制模式之一运行:NONE、EXPLICIT 或 POLL。 模型控制模式决定了 Triton 如何处理模型存储库的更改以及哪些协议和 API 可用。

模型控制模式 NONE

Triton 尝试在启动时加载模型存储库中的所有模型。 Triton 无法加载的模型将被标记为不可用,并且不可用于推理。

服务器运行时对模型存储库的更改将被忽略。 使用模型控制协议的模型加载和卸载请求不会产生任何影响,并将返回错误响应。

该模型控制模式是通过在启动 Triton 时指定 --model-control-mode=none 来选择的。 这是默认的模型控制模式。 在 Triton 运行时更改模型存储库必须小心谨慎,如修改模型存储库中所述。

模型控制模式 EXPLICIT

在启动时,Triton 仅加载那些使用 --load-model 命令行选项明确指定的模型。 要在启动时加载所有模型,请将 --load-model=* 指定为唯一的 --load-model 参数。 将 --load-model=* 与另一个 --load-model 参数一起指定将导致错误。 如果未指定 --load-model 则在启动时不会加载任何模型。 Triton 无法加载的模型将被标记为不可用,并且不可用于推理。

启动后,必须使用模型控制协议显式启动所有模型加载和卸载操作。 模型控制请求的响应状态指示加载或卸载操作的成功或失败。 尝试重新加载已加载的模型时,如果由于任何原因重新加载失败,则已加载的模型将保持不变并保持加载状态。 如果重新加载成功,新加载的模型将替换已加载的模型,而不会损失模型的可用性。

通过指定 --model-control-mode=explicit 启用此模型控制模式。 在 Triton 运行时更改模型存储库必须小心谨慎,如修改模型存储库中所述。

如果您在使用模型控制协议加载和卸载模型时看到一些内存增长,这可能不是真正的内存泄漏,而是某些系统的 malloc 试探法导致内存无法立即释放回操作系统。 您可以尝试在运行 Triton 时通过设置 LD_PRELOAD 来从 malloc 切换到 tcmalloc 以获得更好的内存性能:

LD_PRELOAD=/usr/lib/$(uname -m)-linux-gnu/libtcmalloc.so.4:${LD_PRELOAD} tritonserver --model-repository=/models ...

tcmalloc 库已经安装在 Triton 容器中。 您还可以使用安装 tcmalloc

apt-get install gperf libgoogle-perftools-dev

模型控制模式 POLL

Triton 尝试在启动时加载模型存储库中的所有模型。 Triton 无法加载的模型将被标记为不可用,并且不可用于推理。

将检测对模型存储库的更改,Triton 将根据这些更改尝试根据需要加载和卸载模型。 尝试重新加载已加载的模型时,如果由于任何原因重新加载失败,则已加载的模型将保持不变并保持加载状态。 如果重新加载成功,新加载的模型将替换已加载的模型,而不会损失模型的可用性。

由于 Triton 会定期轮询存储库,因此可能无法立即检测到对模型存储库的更改。 您可以使用 --repository-poll-secs 选项控制轮询间隔。 控制台日志或模型就绪协议或模型控制协议的索引操作可用于确定模型库更改何时生效。

警告:Triton 轮询模型存储库和您对存储库进行任何更改之间没有同步。 因此,Triton 可以观察到导致意外行为的部分和不完整的变化。 因此,不建议在生产环境中使用 POLL 模式。

使用模型控制协议的模型加载和卸载请求不会产生任何影响,并将返回错误响应。

通过指定 --model-control-mode=poll 并在启动 Triton 时将 --repository-poll-secs 设置为非零值来启用此模型控制模式。 在 Triton 运行时更改模型存储库必须小心谨慎,如修改模型存储库中所述。

在 POLL 模式下,Triton 响应以下模型存储库更改:

  • 可以通过添加和删除相应的版本子目录来在模型中添加和删除版本。 即使正在使用模型的删除版本,Triton 也将允许完成飞行中的请求。 对已删除模型版本的新请求将失败。 根据模型的版本策略,对可用版本的更改可能会更改默认提供的模型版本。

  • 可以通过删除相应的模型目录来从存储库中删除现有模型。 Triton 将允许对已删除模型的任何版本的运行中请求完成。 对已删除模型的新请求将失败。

  • 可以通过添加新模型目录将新模型添加到存储库中。

  • 模型配置文件(config.pbtxt)可以更改,Triton 将卸载并重新加载模型以获取新的模型配置。

  • 可以添加、删除或修改为代表分类的输出提供标签的标签文件,Triton 将卸载并重新加载模型以获取新标签。 如果添加或删除标签文件,则必须同时对模型配置中对应的输出的 label_filename 属性进行相应的编辑。

修改模型存储库

模型存储库中的每个模型都位于其自己的子目录中。 模型子目录内容允许的活动因 Triton 使用该模型的方式而异。 可以使用模型元数据或存储库索引 API 来确定模型的状态。

  • 如果模型正在加载或卸载,则不得添加、删除或修改该子目录中的任何文件或目录。

  • 如果模型从未加载或已完全卸载,则可以删除整个模型子目录,或者可以添加、删除或修改其任何内容。

  • 如果模型已完全加载,则可以添加、删除或修改该子目录中的任何文件或目录; 除了实现模型后端的共享库。 Triton 在加载模型时使用后端共享库,因此删除或修改它们可能会导致 Triton 崩溃。 要更新模型的后端,您必须首先完全卸载模型,修改后端共享库,然后重新加载模型。 在某些操作系统上,还可以简单地将现有共享库移动到模型存储库之外的另一个位置,复制新的共享库,然后重新加载模型。

  • 如果仅修改非序列模型的“config.pbtxt”上的模型实例配置(即增加/减少实例计数),则当在模型下收到加载请求时,Triton 将更新模型而不是重新加载模型 在模型控制模式 POLL 下检测到控制模式 EXPLICIT 或对“config.pbtxt”的更改。

  • 如果使用运行中序列更新序列模型,Triton 不保证运行中序列的任何剩余请求将被路由到同一模型实例进行处理。 目前,用户有责任确保在更新序列模型之前完成任何飞行序列。

同时加载模型

为了减少服务停机时间,Triton 在后台加载新模型,同时继续对现有模型进行推理。 根据用例和性能要求,专用于加载模型的最佳资源量可能会有所不同。 Triton 公开了一个 --model-load-thread-count 选项来配置专用于加载模型的线程数,默认为 4。

要使用 C API 设置此参数,请参阅 tritonserver.h 中的 TRITONSERVER_ServerOptionsSetModelLoadThreadCount

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

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

相关文章

5.实用干货-你可能没留意的几个生信基础

Reads:高通量测序平台产生的序列。 Raw Reads:原始下机数据称为Raw Reads(Raw data)。 Clean Reads:通过生物信息的方法,去除一些质量差的reads(比如测序错误,长度小于20的reads&a…

TypeScript零基础入门之背景介绍和环境安装

一、什么是TypeScript TypeScript是一种由微软开发和维护的开源编程语言。它是JavaScript的超集,意味着任何JavaScript程序都是一种有效的TypeScript程序。TypeScript添加了静态类型、类、接口、枚举和命名空间等概念,同时支持ES6特性。TypeScript被视为…

Flutter 初探原生混合开发

转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/131320733?spm1001.2014.3001.5501 本文出自 容华谢后的博客 0.写在前面 现如今跨平台技术被越来越多的开发者提起和应用,从最早的Java到后来的RN、Weex,到现在的Co…

每日学术速递6.11

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Video-ChatGPT: Towards Detailed Video Understanding via Large Vision and Language Model 标题:Video-ChatGPT:通过大型视觉和语言模型实现详细的视频理…

SCI论文插图怎么做?有这一篇文章就够了

SCI插图的整体要求 SCI杂志种类很多,对插图的要求也各有不同,但是以下几条是通用的: 1. 插图尺寸要符合SCI期刊要求 2. 同篇文稿插图中文字须统一字号及字体 3. 须提交SCI期刊指定文件类型的插图 4. 插图文件命名须符合SCI期…

C++基础(15)——STL常用算法(遍历和查找)

前言 本文介绍了C中STL常用遍历和查找算法。 9.1:常用遍历算法(for_each、transform) 9.1.1:foreach for_each:遍历容器,transform:搬运一个容器中的数据到另一个容器中 for_each中使用普通…

自建iOS消息推送服务Bark

老苏的 DSM6.17 系统恢复之后,发现丢了一些套件,在安装 phpMyAdmin 套件时,显示需要用到 PHP7.4 但是在套件里搜索却只有 PHP7.3 从 https://archive.synology.cn/download/Package/PHP7.4 下载了最低的 7.4.9-0003 手动安装时居然显示 DSM6.…

Java进程调度的基本过程(详细易理解)

目录 一.什么是进程? 二.进程是如何创建的 三.进程如何调度的 优先级: 状态: 记账信息: 上下文: 线程是什么: 为什么要有线程: 坏处: 一.什么是进程? 了解这个问题之前,我们需要先打开我们桌面上的的学习资料 啪的一下,很快啊,点双击学习资料.exe之后,在后台(ctrl…

spring security oauth2 整合 JWT

前言 在这个基础上&#xff0c;进行整合。 spring security oauth2学习 -- 快速入门_本郡主是喵的博客-CSDN博客 1.jwt的一般使用 先把 reids,common-pools 等依赖删掉。 删掉redis的下相关配置 1.1 导入依赖 <!--jjwt--><dependency><groupId>io.json…

正则表达式(2)

文章目录 正则表达式一.正则表达式1.含义2.通配符2.1通配符含义作用2.2常见的通配符 3.元字符&#xff08;字符匹配&#xff09;4.表示次数5.位置锚定6.分组或其他 二.扩展正则表达式1.表示次数2.举例 正则表达式 一.正则表达式 1.含义 &#xff08;1&#xff09;是一种特殊…

基于Java智慧城市实验室主页系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

一、枚举类型——常量特定方法

Java 的枚举机制可以通过为每个枚举实例编写不同的方法&#xff0c;来赋予它们不同的行为。要实现这一点&#xff0c;你可以在枚举类型中定义一个或多个抽象方法&#xff0c;然后为每个枚举实例编写不同的实现&#xff0c;例如&#xff1a; ConstantSpecificMethod.java import…

使用 TensorFlow.js 将机器学习引入您的 Web 应用程序

如何使用 TensorFlow.js 在您的 Web 应用程序中实施机器学习 原文作者: Abhay Singh Rathore 机器学习 (ML) 不再是一个崇高、遥不可及的概念。借助 TensorFlow.js 等库&#xff0c;开发人员现在可以将 ML 整合到他们的 Web 应用程序中。例如&#xff0c;您可以创建一个系统&am…

革新智造业丨云和恩墨数据智能产品 zAIoT 将工控设备KPI分析性能提升百倍

点击关注 随着智能制造业的迅猛发展&#xff0c;工控设备在生产过程中起到至关重要的作用。为了确保生产效率和产品质量的提高&#xff0c;企业需要对工控设备进行全面的分析和评估。 工控设备KPI是指在生产线/车间设备的运行和维护过程中&#xff0c;需要监控的关键指标参数&a…

Vue----Vue的模板语法

【原文链接】Vue----Vue的模板语法 Vue 模板语法的描述 Vue使用一种基于HTML的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的DOM上&#xff0c;所有的Vue模板都是语法层面合法的HTML&#xff0c;可以被符合规范的浏览器和HTML解析器解析 文本插值 …

Java性能权威指南-总结16

Java性能权威指南-总结16 线程与同步的性能线程池与ThreadPoolExecutor设置最大线程数设置最小线程数 线程与同步的性能 能够轻松编写多线程程序也是Java的一个标志性特征。Java性能方面的吸引力显而易见&#xff1a;如果有两个CPU可用&#xff0c;那么一个应用能够完成的工作…

计算机网络笔记(更新中)

本文是个人笔记&#xff0c;都是概念&#xff0c;没基础不建议看。 绪论 计算机网络的定义 最简单的定义&#xff1a;计算机网络是一些互相连接的、自治的计算机的集合因特网&#xff08;Internet&#xff09;是“网络的网络” 计算机网络的组成&#xff08;物理组成&#x…

STM32单片机(七)ADC模拟数字转换器----第一节:ADC模数转换器

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

autoDL上A100运行wiki出错:NVIDIA A100-PCIE-40GB(最后安装好torch+dgl了);学校服务器加2.X版本pytorch

1、A100运行wiki出错&#xff1a;NVIDIA A100-PCIE-40GB with CUDA capability sm_80 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70. If you want to use the NVIDIA A100-PCIE…

CTFshow-pwn入门-pwn26-pwn28

什么是ASLR 大多数的攻击都基于这样一个前提&#xff0c;即攻击者知道程序的内存布局&#xff0c;需要提前知道shellcode或者其他一些数据的位置。因此&#xff0c;引入内存布局的随机化能够有效增加漏洞利用的难度&#xff0c;其中一种技术就是ASLR&#xff08;Address Space…