【本机已实现】使用Mac部署Triton服务,使用perf_analyzer、model_analyzer

我们的目标是星辰大海

硬件配置:Apple M2+24 GB

Tirtion实现过程

1️⃣Docker安装

Tirtion的实现,首先要确保系统上的Docker可用

使用默认源会导致拉取失败,因为墙

Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

2️⃣Docker源地址配置

试了很多源地址,只有这篇引用这篇博主的源地址使用成功

https://zhuanlan.zhihu.com/p/24228872523https://zhuanlan.zhihu.com/p/24228872523

{"registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/" 
],"insecure-registries" : ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"],
"debug": true,
"experimental": false
}

图 2.1 Docker测试成功

 3️⃣拉取Trition

docker pull nvcr.io/nvidia/tritonserver:22.04-py3

4️⃣验证Trition

 图 2.2 验证Trition安装成功

5️⃣登录验证API

https://org.ngc.nvidia.com/setup/api-key

注册获取API之后登录自己的账号

sudo docker login nvcr.io

图 2.3 登录成功

6️⃣启动服务

首先你得需要一个目录结构

图 2.4 目录结构

config.pbtxt中的配置文件就是模型的结构,下面是一个示例

name: "testmodel" # 模型名,也是目录名
platform: "pytorch_libtorch" # 模型对应的平台,本次使用的是torch,不同格式的对应的平台可以在官方文档找到
max_batch_size : 64 # 一次送入模型的最大bsz,防止oom
input [{name: "input__0" # 输入名字,对于torch来说名字于代码的名字不需要对应,但必须是<name>__<index>的形式,注意是2个下划线,写错就报错data_type: TYPE_INT64 # 类型,torch.long对应的就是int64,不同语言的tensor类型与triton类型的对应关系可以在官方文档找到dims: [ -1 ]  # -1 代表是可变维度,虽然输入是二维的,但是默认第一个是bsz,所以只需要写后面的维度就行(无法理解的操作,如果是[-1,-1]调用模型就报错)}
]
output [{name: "output__0" # 命名规范同输入data_type: TYPE_FP32dims: [ -1, -1, 4 ]},{name: "output__1"data_type: TYPE_FP32dims: [ -1, -1, 8 ]}
]

为了方便根据自己的模型平台进行更改,本文提供了常用的platform格式

  • TensorFlow (tensorflow):

    • 用于 TensorFlow 模型。

    • 例如,platform: "tensorflow_graphdef"platform: "tensorflow_savedmodel"

  • ONNX (onnx):

    • 用于 ONNX 格式的模型。

    • 例如,platform: "onnxruntime"

  • PyTorch (pytorch):

    • 用于 PyTorch 模型。

    • 例如,platform: "pytorch_libtorch"

  • TensorRT (tensorrt):

    • 用于通过 NVIDIA TensorRT 优化的模型,常用于 GPU 加速。

    • 例如,platform: "tensorrt"

 用以下命令启动Trition服务

sudo docker run  --rm --net=host -v ${PWD}/model_repository:/models nvcr.io/nvidia/tritonserver:22.04-py3 tritonserver --model-repository=/models

图  2.5 服务启动成功

图 2.6 服务加载成功 

🤔Trition服务性能测试

以下是Trition提供的对模型测试的工具

  • perf_analyzer,可以测量吞吐延迟等。文档
  • model_analyzer,利用 perf_analyzer 来进行性能分析,测量 GPU 内存和利用率。仓库
  • model_navigator,自动化部署模型。仓库

perf_analyzer

首先进入docker

docker run --rm  --shm-size=2g --network=host -it --name triton-server -v `pwd`:/triton nvcr.io/nvidia/tritonserver:24.09-py3 bash

因为测试工具中使用的为Nvidia的Docker,有需要的话可以下载,本文在MacOS上,所以就不下载这个docker

brew  install nvidia-docker --cask
图片加载错误

AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS'

解决方法
Image.ANTIALIAS ——> Image.LANCZOS 或 Image.Resampling.LANCZOS

model_analyzer 

1️⃣启动之前的Tirtion,目的是能够加载本地模型

sudo docker run  --rm --net=host -v */triton_repo:/models nvcr.io/nvidia/tritonserver:24.09-py3 tritonserver --model-repository=/models

​图 2.7 启动Trition成功 

2️⃣拉取tritionserver-sdk

docker pull nvcr.io/nvidia/tritonserver:24.09-py3-sdk

3️⃣如果你的服务器启动正常,进入 Trition Inference Server SDK容器中

docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:24.09-py3-sdk

图 2.8 Trition SDK

4️⃣测试模型

perf_analyzer -m resnet34 --percentile=95 --concurrency-range 100
  • –percentile:以百分位数表示置信度值用于确定测量结果是否稳定
  • –concurrency-range:指定并发量参数,还可以使用,100:120:10表示并发量在100到120之间以10作为间隔测试所有并发量情况下的吞吐量
  • -b:指定请求的batch-size,默认为1
  • -i:指定请求所使用的协议,参数可以为http或grpc

其他更多的参数可以通过perf_analyzer -h查看,执行成功之后会输出模型所能承受的吞吐量以及时延

5️⃣使用Model_analyzer工具

工具能够分析模型的性能,要比perf_analyzer分析的更具体

我们首先进入trition-server-sdk中,从这个里面来启动Model_analyzer

docker run  --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -ti -v /var/run/docker.sock:/var/run/docker.sock --net host --privileged --rm -v */Tirtion/tmp/triton_repo/:/models -v */Tirtion/tmp/triton_repo/:/*/Tirtion/tmp/triton_repo/ nvcr.io/nvidia/tritonserver:24.09-py3-sdk bash

 

图 2.9 成功进入Tirton Inference Server SDK 

使用命令分析模型

model-analyzer profile --model-repository */Tirtion/tmp/triton_repo --profile-models testmodel --triton-launch-mode=docker --output-model-repository=*/tmp/triton_repo/testmodelout --triton-server-path=/opt/tritonserver --override-output-model-repository

 可添加参数:

  • run-config-search-max-concurrency:最大的并发数
  • run-config-search-max-instance-count:最大的count也就是模型实例数
  • triton-launch-mode:docker或local,如果是local的时候需要容器内安装tritonserver,这里使用的是docker
  • output-model-repository:测试报告保存的目录
  • override-output-model-repository:每次测试的时候都会覆盖之前的测试报告

图 2.10 加载成功 

tips

建议使用带有GPU的windows系统,避免多个错误信息

​图 2.5 Tirtion错误 

每次拉取镜像都要重新开始,添加以下代码至docker配置文件中。

"features": {"buildkit": true,"containerd-snapshotter": true}

 图 2.6 配置文件

 之后每次拉取都会延续上次的继续(需要手动Ctrl+C,之后才会继续,因网络原因自动中断不会再次运行拉取命令不会继续)

图 2.7 下载演示 

报错

 1️⃣

The path /models is not shared from the host and is not known to Docker.

You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing.

See https://docs.docker.com/desktop/settings/mac/#file-sharing for more info.")

一定要看你的model-repository,这个要更换成你本地的文件地址,我就是思维局限了,一直使用的是挂载在docker里面的地址。

 2️⃣

 model_analyzer.model_analyzer_exceptions.TritonModelAnalyzerException: Either the binary 'tritonserver' is not on the PATH, or Model Analyzer does not have permissions to execute os.stat on this path.

touch /opt/tritonserver
chmod +x /opt/tritonserver

调配了一下午,发现下载较新的Tirtion服务可以解决大多数问题

引用

以下是优秀的参考博文

NVIDIA-Triton-Tutorial_Zh: 英伟达 Triton 推理服务器 中文文档 - Gitee.comhttps://gitee.com/szpliman/nvidia-triton-tutorial_zh/tree/master/Conceptual_Guide/Part_1-model_deployment

从零开始使用NVIDIA-Triton | SanbuBlog零、写在开头https://www.aispacewalk.cn/docs/ai/nvidia/triton-tutorial博客导航 - 楷哥 - 博客园这篇博客整理了机器学习系统相关的博客,一方面是为了方便自己和读者查阅文章,另一方面这个手动整理的目录是一个学习路线。如果您对机器学习系统感兴趣,那么希望我的这个导航可以给到您启发。 应用 神经网络基础 神经网络之优化算法;权重衰减和学习率衰减 卷积神经网络基础 自然语言处理 命名实体识别:Neurahttps://www.cnblogs.com/zzk0/p/16787330.html

使用perf_analyzer和model-analyzer测试tritonserver的模型性能超详细完整版_timeout 30: found 0 model versions that have in-fl-CSDN博客文章浏览阅读3.3k次,点赞5次,收藏9次。本文指导如何使用perf_analyzer和model-analyzer测试TritonServer模型吞吐量,包括环境配置、工具使用和常见问题解决。https://xiulian.blog.csdn.net/article/details/132583942

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

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

相关文章

idea依赖下载慢解决

setttings.xml <mirrors><mirror><id>aliyunmaven</id><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>*</mirrorOf> <!-- 匹配所有仓库请求 --></mirr…

C# WPF常用调试工具汇总

除了Live Visual Tree、Live Property Explorer和Snoop外&#xff0c;WPF开发还有多种强大的调试工具。以下是完整的工具集合及其详细使用方法&#xff1a; 1. WPF Performance Suite (WPF性能分析套件) 简介 微软官方提供的专业WPF性能分析工具&#xff0c;包含多个组件用于诊…

《Vuejs设计与实现》第 11 章(快速 diff 算法

目录 11.1 相同的前置元素和后置元素 11.2 判断是否需要进行 DOM 移动操作 11.3 如何移动元素 11.4 总结 我们将探讨第三种用于比较新旧子节点集合的方法&#xff1a;快速Diff算法。 这种算法的速度非常快&#xff0c;最早应用于 ivi 和 inferno 框架&#xff0c;DOM 操作方…

JavaScript 存储对象 sessionStorage (会话存储) 和 localStorage(本地存储)

深入理解 localStorage localStorage 是浏览器提供的一种客户端存储机制&#xff0c;用于在用户浏览器中存储键值对数据。与 cookie 相比&#xff0c;它提供了更大的存储容量&#xff08;通常为 5-10MB&#xff09;&#xff0c;并且不会随 HTTP 请求发送到服务器&#xff0c;因…

Z-Ant开源程序是简化了微处理器上神经网络的部署和优化

​一、软件介绍 文末提供程序和源码下载 Z-Ant &#xff08;Zig-Ant&#xff09; 是一个全面的开源神经网络框架&#xff0c;专门用于在微控制器和边缘设备上部署优化的 AI 模型。Z-Ant 使用 Zig 构建&#xff0c;为资源受限的硬件上的模型优化、代码生成和实时推理提供端到端…

Linux系统---Nginx配置nginx状态统计

配置Nignx状态统计 1、下载vts模块 https://github.com/vozlt/nginx-module-vts [rootclient ~]# nginx -s stop [rootclient ~]# ls anaconda-ks.cfg nginx-1.27.3 ceph-release-1-1.el7.noarch.rpm nginx-1.27.3.tar.gz info.sh …

深入理解 C++ Lambda表达式:四大语法特性 + 六大高频考点全解析

Lambda表达式是C11引入的一项重要特性&#xff0c;它极大地改变了我们编写匿名函数的方式。 一、为什么会有Lambda表达式 在C11之前&#xff0c;当我们需要传递一个简单的函数时&#xff0c;通常有以下几种选择&#xff1a; 1.1、定义一个单独的函数 // 单独定义的比较函数…

SpringBoot 自动化部署实战:CI/CD 整合方案与避坑全指南

在数字化转型浪潮席卷全球的当下&#xff0c;企业对软件交付的速度与质量提出了前所未有的高要求。SpringBoot 凭借其 “约定优于配置” 的特性&#xff0c;成为 Java 领域快速构建应用的热门框架。而将 SpringBoot 与 CI/CD&#xff08;持续集成 / 持续交付&#xff09;相结合…

JVM字节码文件结构深度剖析

反汇编&#xff0c;以下命令可以查看相对可读的详细结构 javap -verbose ByteCode.class与Class二进制文件并不是直接对齐的 Class二进制文件结构参照表 ClassFile {u4 magic;魔数u2 minor_version;副版本号u2 major_version;主版本号u2…

跟着chrome面板优化页面性能

没有优化前&#xff1a; 1.对文本进行压缩&#xff1a; 重新打包 运行 评分好像还是没有发生改变&#xff0c;于是我去找别的压缩的途径&#xff0c; npm install --save-dev vite-plugin-compression 然后修改vite.config.js文件 导入compression插件 文件夹中也成功出现了…

网上花店微信小程序完整项目

概述 一款功能完善的网上花店微信小程序完整项目。该项目包含了完整的前后端代码&#xff0c;是一款基于Java技术栈开发的电商类小程序&#xff0c;适合初学者学习的小程序源码。 主要内容 该花店小程序源码采用主流技术架构开发&#xff0c;主要功能模块包括&#xff1a; …

Elasticsearch 搜索的流程

Elasticsearch 的搜索流程是一个分布式协作过程&#xff0c;主要包含 ‌查询阶段&#xff08;Query Phase&#xff09;‌ 和 ‌取回阶段&#xff08;Fetch Phase&#xff09;‌&#xff0c;默认采用 QUERY_THEN_FETCH 模式。以下是详细流程&#xff1a; 一、请求分发与路由 ‌…

用户行为分析:从概念到实践的全面指南

在数字化转型浪潮中&#xff0c;用户行为分析已成为企业决策的核心驱动力。 用户行为分析本质上是对用户与产品交互过程中产生的各类行为数据进行系统性收集、处理和分析&#xff0c;从而揭示用户偏好、预测行为趋势并指导业务决策的过程。它包含三层核心要素&#xff1a;行为…

Claude Code - 终端智能编码助手

文章目录 一、关于 Claude Code1、项目概览2、相关链接资源 二、安装配置三、使用指南1、快速开始2、问题反馈 四、隐私与数据1、数据收集2、隐私保护 一、关于 Claude Code 1、项目概览 Claude Code 是一款终端智能编码工具&#xff0c;能够理解代码库并通过自然语言命令执行…

如何在FastAPI中玩转跨服务权限校验的魔法?

title: 如何在FastAPI中玩转跨服务权限校验的魔法? date: 2025/06/24 08:23:40 updated: 2025/06/24 08:23:40 author: cmdragon excerpt: FastAPI跨服务权限校验通过可信令牌颁发、令牌传播机制和分布式验证实现微服务架构安全。核心组件包括令牌生成服务和验证逻辑,使用…

用 Python 打造立体数据世界:3D 堆叠条形图绘制全解析

在数据可视化的工具箱里&#xff0c;3D 图表总能带来眼前一亮的效果 —— 它突破了二维平面的限制&#xff0c;用立体空间展示多维度数据关系&#xff0c;让复杂的数据层级一目了然。今天我们要解锁的「3D 堆叠条形图」&#xff0c;就是一种能同时呈现类别、子类别、数值大小的…

互联网大厂Java求职面试:AI与大模型技术下的RAG系统架构设计与性能优化

【互联网大厂Java求职面试&#xff1a;AI与大模型技术下的RAG系统架构设计与性能优化】 文章内容 面试官开场白 技术总监&#xff08;李明&#xff09;&#xff1a; “郑薪苦&#xff0c;欢迎来到今天的面试。我是李明&#xff0c;负责我们公司的AI平台架构设计。今天我们将围…

kotlin, BigDecimal可以直接使用大于号>、小于号<进行直接比较大小吗

kotlin&#xff0c; BigDecimal可以直接使用大于号>、小于号<进行直接比较大小吗&#xff0c;比如 if (BigDecimal(count) < BigDecimal(100) &#xff09; deepseek回答&#xff1a; 我们正在讨论Kotlin中的BigDecimal比较操作。 用户的问题&#xff1a;是否可以直接…

Harmony状态管理AppStorageV2和PersistenceV2

深入理解ArkUI中的AppStorageV2与PersistenceV2装饰器 引言 在ArkUI应用开发中&#xff0c;状态管理是构建复杂应用的关键环节。随着ArkUI状态管理V2版本的推出&#xff0c;AppStorageV2和PersistenceV2装饰器为开发者提供了更强大、更灵活的状态管理能力。本文将详细介绍这两…

LayUI的table实现行上传图片+mvc

一、layUIJQuery using AMes.Domain.Entity.SystemManage; {Layout null; }<!DOCTYPE html><html> <head><meta name"viewport" content"widthdevice-width" /><title>不合格品处置申请</title><link href"…