Triton教程 --- Triton 响应缓存

news/2024/11/30 14:31:48/

Triton教程 — Triton 响应缓存

在这里插入图片描述

Triton系列教程:

  1. 快速开始
  2. 利用Triton部署你自己的模型
  3. Triton架构
  4. 模型仓库
  5. 存储代理
  6. 模型设置
  7. 优化
  8. 动态批处理
  9. 速率限制器
  10. 模型管理
  11. 自定义算子
  12. 解耦后端和模型

概述

在本文档中,推理请求是模型名称、模型版本和输入张量(名称、形状、数据类型和张量数据),它们构成提交给 Triton 的请求。 推理结果是推理执行产生的输出张量(名称、形状、数据类型和张量数据)。 Triton 使用响应缓存来保存先前执行的推理请求生成的推理结果。 Triton 将维护响应缓存,以便命中缓存的推理请求不需要执行模型来生成结果,而是从缓存中提取结果。 对于某些用例,这可以显着减少推理请求延迟。

Triton 使用推理请求的哈希值访问响应缓存,其中包括模型名称、模型版本和模型输入。 如果在缓存中找到该哈希,则从缓存中提取相应的推理结果并用于请求。 当这种情况发生时,Triton 不需要执行模型来产生推理结果。 如果在缓存中找不到哈希,Triton 会执行模型以生成推理结果,然后将该结果记录在缓存中,以便后续推理请求可以(重新)使用这些结果。

用法

为了在给定模型上使用缓存,必须在服务器端和模型的模型配置中启用缓存。 有关更多详细信息,请参阅下面的以下部分。

在服务器端启用缓存
通过在启动 Triton 服务器时指定 <cache_implementation> 和相应的配置,在服务器端启用响应缓存。

通过 CLI,这会转换为设置 tritonserver --cache-config <cache_implementation>,<key>=<value> ...。例如:

tritonserver --cache-config local,size=1048576

对于进程内 C API 应用程序,这将转换为调用 TRITONSERVER_SetCacheConfig(const char* cache_implementation, const char* config_json)

这允许用户在服务器启动时全局启用/禁用缓存。

为模型启用缓存

默认情况下,即使使用 --cache-config 标志全局启用响应缓存,也没有模型使用响应缓存。

对于要使用响应缓存的给定模型,该模型还必须在其模型配置中启用响应缓存:

# config.pbtxtresponse_cache {enable: true
}

这允许用户启用/禁用特定模型的缓存。

有关为每个模型启用响应缓存的更多信息,请参阅模型配置文档。

缓存实现

从 23.03 版本开始,Triton 拥有一组 TRITONCACHE API,用于与用户选择的缓存实现进行通信。

缓存实现是一个共享库,它实现所需的 TRITONCACHE API,并在服务器启动时动态加载(如果启用)。 对于 >=23.03 的标签,tritonserver 发布容器附带以下开箱即用的缓存实现:

local:

/opt/tritonserver/caches/local/libtritoncache_local.so

通过这些 TRITONCACHE API,tritonserver 公开了一个新的 --cache-config CLI 标志,该标志使用户可以灵活自定义要使用的缓存实现以及如何配置它。 与 --backend-config 标志类似,预期格式为 --cache-config <cache_name>,<key>=<value>,并且如果缓存实现需要,可以多次指定以指定多个键。

本地缓存

本地缓存实现相当于23.03版本之前内部使用的响应缓存。 有关更多具体实现的详细信息,请参阅本地缓存实现。

当使用非零 SIZE 指定 --cache-config local,size=SIZE 时,Triton 会在 CPU 内存中分配请求的大小,并在所有推理请求和所有模型之间共享缓存。

自定义缓存

借助新的 TRITONCACHE API 接口,用户现在可以实现自己的缓存以满足任何用例的特定需求。 要查看缓存开发人员必须实现的所需接口,请参阅 TRITONCACHE API 头文件。 本地缓存实现可以用作参考实现。

成功开发和构建自定义缓存后,生成的共享库(例如:libtritoncache_<name>.so)必须放置在与本地缓存实现所在位置类似的缓存目录中。 默认情况下,该目录为 /opt/tritonserver/caches,但可以根据需要使用 --cache-dir 指定自定义目录。

将此示例放在一起,如果自定义缓存被命名为“custom”(该名称是任意的),默认情况下 Triton 会期望在 /opt/tritonserver/caches/custom/libtritoncache_custom.so 中找到缓存实现。

执行

响应缓存旨在用于预计会出现大量重复请求(缓存命中)的用例,因此将从缓存中受益。 这里的术语“重要”取决于用例,但简单的解释是考虑预期缓存命中/未命中的比例,以及计算响应所花费的平均时间。

对于缓存命中常见且计算成本昂贵的情况,缓存可以显着提高整体性能。

对于所有或大多数请求都是唯一的(缓存未命中)的情况,由于管理缓存的开销,缓存可能会对整体性能产生负面影响。

已知限制

  • 只有位于 CPU 内存中的输入张量才可进行哈希处理以访问缓存。 如果推理请求包含不在 CPU 内存中的输入张量,则不会对请求进行哈希处理,因此不会缓存响应。

  • 只有所有输出张量都位于 CPU 内存中的响应才有资格进行缓存。 如果响应中的任何输出张量不在 CPU 内存中,则不会缓存响应。

  • 仅使用推理请求哈希来访问缓存。 因此,如果两个不同的推理请求生成相同的哈希(哈希冲突),则 Triton 可能会错误地将缓存结果用于推理请求。 哈希值是 64 位值,因此发生冲突的可能性很小。

  • 只有成功的推理请求才会缓存其响应。 如果请求失败或在推理期间返回错误,则不会缓存其响应。

  • 只有通过默认调度程序或动态批量调度程序的请求才有资格进行缓存。 Sequence Batcher 目前不支持响应缓存。

  • 响应缓存当前不支持解耦模型。


http://www.ppmy.cn/news/535152.html

相关文章

虾米音乐android无法登录,虾米音乐将于2月5日关停!3月5日以后无法再登录

新酷产品第一时间免费试玩&#xff0c;还有众多优质达人分享独到生活经验&#xff0c;快来新浪众测&#xff0c;体验各领域最前沿、最有趣、最好玩的产品吧~&#xff01;下载客户端还能获得专享福利哦&#xff01; 网友都说新浪众测不讲武德&#xff0c;数码新品说发就发&#…

微信小程序(day04)

好谷商城小程序 1.页面的目录结构 2.让顶部导航栏隐藏 app.json/home.json {"navigationStyle": "custom"}3.components–header组件 header.wxml <view class"header_wrap" style"height: {{navH}}rpx;"><view class&qu…

scrapy爬虫使用简明教程

目录 一、基本框架介绍 二、安装与基本命令 三、scrapy框架基本使用及完整案例 四、各组件的一些用法说明 一、基本框架介绍 Scrapy框架介绍&#xff1a; Scrapy是: 由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架&#xff0c;用于抓取web站点并从页面中提取…

华强北折戟智能音箱 “单机版”覆灭传递了什么信息 | 分析

▼ 大型年度AI人物评选——2017中国AI英雄风云榜榜单评选出了年度技术创新人物TOP 10&#xff1b;商业创新人物TOP 10&#xff0c;获取完整榜单请关注网易智能公众号&#xff08;ID&#xff1a;smartman163&#xff09;&#xff0c;回复关键词“评奖”。 “直觉告诉我华强北是数…

谁动了我的隐私 — 隐私风险初探

[目录]000 前言001 隐私安全初探002 “云”存储隐私风险003 移动终端隐私风险004 隐私威胁对抗005 勺之终极奥义006 结语 当你凝视着深渊&#xff0c;深渊也在凝视着你。 — 尼采 000 前言这篇小文很早就有了想法&#xff0c;但由于自己的种种问题&#xff0c;未能完成&#xf…

逝去的2010,期待平静的2011

还有半个月就是新的一年了&#xff0c;不平静的一年即将结束了&#xff01;蓦然回首&#xff0c;一年多来自己走过的路&#xff01;几多辛酸&#xff0c;几多快乐&#xff01; 09年11月我跟另外一个兄弟我们一起来到北京打拼。作为实习生进入了一家做公安行业解决方案的企业。每…

五、Python复习教程(重点)-爬虫框架实战

目录导航&#xff1a; 文章目录 目录导航&#xff1a;九、Python网络爬虫进阶实战(上)1. Scrapy框架介绍与安装1.1.认识Scrapy框架Scrapy框架介绍&#xff1a;Scrapy框架的运行原理&#xff1a;Scrapy主要包括了以下组件&#xff1a;Scrapy运行流程大概如下&#xff1a; 1.2 Sc…

嵌入式系统与物联网的关系

嵌入式系统与物联网的关系 一、物联网与嵌入式的基本概念物联网定义定义 1定义 2定义 3定义 4 嵌入式定义IEEE 的定义 嵌入式与物联网的区别和联系 二、从构成模型看物联网与嵌入式三、物联网时代嵌入式系统的华丽转身从计算机的历史说起嵌入式应用环境物联应用本质 从单片机到…