- 模型推理服务
- AI 应用
- 后端
【免费下载链接】server
The Triton Inference Server provides an optimized cloud and edge inferencing solution.
Model Analyzer 是 Triton Inference Server 生态中的性能剖析工具,它借助 Performance Analyzer 向模型持续发送推理请求,同时测量 GPU 显存占用与算力利用率,帮助开发者量化模型在不同 batching(批处理)与 instance(实例)配置下的 GPU 内存需求。阅读本文后,你将掌握 Model Analyzer 的安装方式、profile/analyze两条核心命令的完整工作流、结果报表的解读方法,以及如何把剖析出的最优config.pbtxt回填到模型仓库,进而在同一张 GPU 上更合理地组合多个模型。
Model Analyzer 是什么
Model Analyzer 是 Triton Inference Server 的一个配套分析工具,核心机制是:使用 Performance Analyzer 向目标模型持续发送推理请求,在压测进行的同时测量 GPU 显存占用与计算利用率。关于它的定位,Triton 用户指南 明确指出其典型价值:
- 量化 GPU 内存需求:针对不同的 batching 配置与 model instance 数量组合,测量模型实际需要的 GPU 显存量;
- 指导多模型共存:拿到显存占用信息后,可以更明智地决定如何在同一张 GPU 上组合多个模型,同时确保总显存不超过 GPU 容量上限。
这一"先剖析、后规划"的思路在 Optimization 文档 中也有呼应:Optimization 章节聚焦单个模型的延迟/吞吐权衡,而 Model Analyzer 章节则帮助理解模型的 GPU 显存占用,从而决定如何在一张 GPU 上同时运行多个模型。
从仓库结构看,Model Analyzer 拥有独立的文档体系,docs/perf_benchmark/model_analyzer.rst 以目录树的形式列出了它覆盖的主题:Overview、Quick Start、Installation、CLI Reference、Launch Modes、Configuration、Configuration Search、Metrics、Checkpointing、Reports、Kubernetes、Model Types、Ensemble Model、BLS Model 与 Multi-Model。也就是说,Model Analyzer 不只是单模型剖析工具,还支持集成/级联(Ensemble)、BLS 与多模型(Multi-Model)场景。
安装与运行环境
随 SDK 容器预装
在 Dockerfile.sdk 中可以看到,Model Analyzer 被作为 SDK(客户端)容器的一部分构建,因此使用nvcr.io/nvidia/tritonserver:<版本>-py3-sdk镜像时通常已内置。
pip 安装
如果需要在其他环境使用,可以通过 pip 安装:
pip install --upgrade pip pip install triton-model-analyzer wkhtmltopdf其中wkhtmltopdf用于将分析报表导出为 PDF 格式(详情参见 performance_tuning.md 的端到端示例)。
与 Triton Server 的连接方式(Launch Modes)
Model Analyzer 支持多种方式连接 Triton Server,由--triton-launch-mode参数控制,主要包括:
- local(默认):Model Analyzer 自行启动一个 Triton Server 进程(要求当前环境已安装
tritonserver),剖析结束后自行关闭; - remote:连接一个已经运行中的远程 Triton Server;
- docker:以 Docker 容器方式拉起 Triton Server。
在 local 模式下,务必先停止已运行的tritonserver进程,避免端口冲突,这一点在后续端到端示例中会再次体现。
快速上手:profile + analyze 两步工作流
Model Analyzer 的核心工作流由两条命令构成:先用profile采集性能数据,再用analyze汇总生成报表。
# 第一步:对模型仓库中的指定模型执行配置搜索与剖析 model-analyzer profile \ --model-repository=/mnt/models \ --profile-models=densenet_onnx \ --output-model-repository-path=results # 第二步:汇总剖析结果,生成对比报表与最优配置 model-analyzer analyze --analysis-models=densenet_onnx参数说明:
| 参数 | 含义 |
|---|---|
--model-repository | 指向 Triton 模型仓库(Model Repository),其组织方式见 model_repository.md |
--profile-models | 指定要剖析的模型名,可传多个(逗号分隔) |
--output-model-repository-path | 剖析结果(含每套候选配置及其config.pbtxt)的输出目录 |
--analysis-models | analyze阶段指定要生成报表的模型 |
profile阶段会遍历一组候选配置(批处理大小、动态批处理开关、实例数量等维度的组合),为每个配置启动一轮压测并记录指标;analyze阶段则基于采集数据选择满足约束的最优配置并输出可读报表。整个剖析过程耗时取决于模型与配置组合数量,在仓库的示例中(单模型、数个配置)耗时约 10 分钟。
剖析结果解读与最优配置提取
以仓库 performance_tuning.md 中densenet_onnx的端到端示例为例,model-analyzer analyze输出如下:
在 51 次测量、6 套配置中,
densenet_onnx_config_3提供了最佳吞吐:323 infer/sec。相比默认配置(168 infer/sec),在给定约束下吞吐提升了 92%。
| Model Config Name | Max Batch Size | Dynamic Batching | Instance Count | p99 Latency (ms) | Throughput (infer/sec) | Max GPU Memory Usage (MB) | Average GPU Utilization (%) |
|---|---|---|---|---|---|---|---|
| densenet_onnx_config_3 | 0 | Enabled | 4/GPU | 35.8 | 323.13 | 3695 | 58.6 |
| densenet_onnx_config_2 | 0 | Enabled | 3/GPU | 59.575 | 295.82 | 3615 | 58.9 |
| densenet_onnx_config_4 | 0 | Enabled | 5/GPU | 69.939 | 291.468 | 3966 | 58.2 |
| densenet_onnx_config_default | 0 | Disabled | 1/GPU | 12.658 | 167.549 | 3116 | 51.3 |
该表同时给出了吞吐、p99 延迟、最大 GPU 显存占用与平均 GPU 利用率四个维度,这正是 Model Analyzer 与其他压测工具的关键差异:它不仅报告延迟/吞吐,还提供显存与利用率数据,可用于多模型共享 GPU 的内存规划。
如何理解这些指标
- Throughput(infer/sec):每秒完成推理的次数,是配置优劣的首要参考;
- p99 Latency(ms):99 分位延迟,反映长尾延迟表现,与吞吐往往存在权衡;
- Max GPU Memory Usage(MB):该配置下的峰值显存占用,是"同卡多模型"规划的直接依据;
- Average GPU Utilization(%):GPU 平均利用率,过低说明算力未充分饱和,可考虑增加实例或开启动态批处理。
在本例中,densenet_onnx_config_3(动态批处理 + 4 实例/GPU)同时获得最高吞吐与接近最低的延迟,但并非所有场景都如此——某些配置可能吞吐更高但延迟代价更大,因此官方建议完整检查 Model Analyzer 生成的报表,结合自身对吞吐/延迟的约束做取舍。
注意事项
- 该模型的输入/输出
dims第一维是固定的 batch 维度,因此max_batch_size被设为 0,相关规则见 model_configuration.md 的 Maximum Batch Size 一节;对支持动态 batch 的模型,Model Analyzer 还会自动调优max_batch_size; - 结果与运行服务器强相关:不同 GPU/CPU/内存硬件会得到不同结论,小显存 GPU 上增加实例数不一定带来收益。剖析必须在能真实反映部署环境的系统上进行。
把最优配置回填到模型仓库
拿到最优配置名(如densenet_onnx_config_3)后,将其config.pbtxt复制回模型仓库即可完成优化闭环:
# (可选)备份原始配置 cp /mnt/models/densenet_onnx/config.pbtxt /tmp/original_config.pbtxt # 将 Model Analyzer 输出的最优配置覆盖回模型仓库 cp ./results/densenet_onnx_config_3/config.pbtxt /mnt/models/densenet_onnx/随后重新加载模型并用perf_analyzer复测,多数情况下可获得优于默认配置的性能表现(参考 performance_tuning.md)。若需要进一步手工微调,可继续阅读 model_configuration.md 与 optimization.md。
配置搜索:自动搜索与手动搜索
自动配置搜索(Automatic Configuration Search)
默认的profile即自动搜索:Model Analyzer 会在批处理、动态批处理、实例数量等维度组合出的配置空间中自动采样,并为每套配置测量指标,最终输出最优配置。其搜索目标可通过配置文件约束,例如指定最大吞吐、最大延迟或显存上限等。
手动配置搜索(Manual Configuration Search)
并非所有可调参数都适合自动搜索。例如部分后端(Backend)会暴露后端专属配置选项,这些选项不适用于所有模型,因此不参与自动搜索——ONNXRuntime 后端就提供了若干影响推理并行度的参数。对于这类自定义参数组合,Model Analyzer 支持手动配置搜索:显式枚举需要对比的配置集合,逐套剖析对比。
与 Triton 核心机制的关联
Model Analyzer 搜索的正是 Triton 调度与执行的核心维度,理解这些机制有助于解读剖析结果:
- Dynamic Batching:将并发请求合并为更大批次执行,显著提升吞吐,配置方式见 batcher.md;
- Instance Groups:通过
instance_group [ { count: N }]指定每 GPU 的模型实例数量,配置方式见 model_configuration.md 的 Instance Groups 一节; - 后端加速:如 ONNX 模型可叠加 TensorRT/OpenVINO 执行加速器,详见 optimization.md 的 Framework-Specific Optimization 一节。
Model Analyzer 生成的每套候选配置均含完整的config.pbtxt,可直接对照上述文档理解其语义。此外,仓库中的 ensemble_models.md、debugging_guide.md 与 jetson.md 也提及了 Model Analyzer 在不同场景下的使用,其文档体系(见 model_analyzer.rst)还覆盖了 Checkpointing(剖析进度断点续跑)、Reports(PDF/HTML 报表导出)、Kubernetes 部署以及 Ensemble / BLS / Multi-Model 快速上手等进阶主题,适合在完成基础工作流后按需深入。
典型落地场景总结
- 单模型最优配置搜索:对目标模型执行
profile+analyze,回填最优config.pbtxt,再用perf_analyzer复测验证(完整操作可参照 performance_tuning.md 第 5、6 步); - 同卡多模型内存规划:利用报表中的 Max GPU Memory Usage 列,为每张 GPU 规划可承载的模型组合,确保总显存不超容量;
- 吞吐/延迟权衡决策:当最优吞吐与最优延迟分属不同配置时,依据约束(SLA)从报表中选取折中方案。
需要再次强调的是:Model Analyzer 的结论严格依赖运行环境,务必在贴近生产部署的硬件上执行剖析,避免将小卡/开发机的测量结果直接用于生产容量规划。
- 模型推理服务
- AI 应用
- 后端
【免费下载链接】server
The Triton Inference Server provides an optimized cloud and edge inferencing solution.
相关推荐
使用 Triton Inference Server 部署并调优模型性能:从 Perf Analyzer 基准测试到 Model Analyzer 自动化配置搜索
使用 Triton Inference Server 部署并调优模型性能:从 Perf Analyzer 基准测试到 Model Analyzer 自动化配置搜
模型推理服务AI 应用后端Triton Inference Server动态批处理与推理优先级:业务需求适配终极指南
Triton Inference Server动态批处理与推理优先级:业务需求适配终极指南 Triton Inference Server作为NVIDIA推出的
模型推理服务AI 应用后端告别GPU内存碎片化:Triton Inference Server内存池配置全指南
告别GPU内存碎片化:Triton Inference Server内存池配置全指南 你是否遇到过推理服务运行中GPU内存占用持续攀升,最终因碎片化导致OOM(
模型推理服务AI 应用后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考