解决方案

Triton教程 --- 模型管理

seo靠我 2023-09-24 14:22:22

Triton教程 — 模型管理

Triton系列教程:

快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理速率限制器

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

模型控制模式 NONE

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

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

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

模型控制模式 EXPLICIT

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

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

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

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

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

tcmalloc 库已经安装在 TriSEO靠我ton 容器中。 您还可以使用安装 tcmalloc

apt-get install gperf libgoogle-perftools-dev

模型控制模式 POLL

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

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

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

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

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

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

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

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

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

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

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

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

修改模型存储库

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

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

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

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

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

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

同时加载模型

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

要使用 C API 设置此参数,请参阅 tritonservSEO靠我er.h 中的 TRITONSERVER_ServerOptionsSetModelLoadThreadCount。

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2