用途
该技能面向 NVIDIA DeepStream 流水线的性能剖析与配置推导。当用户表达“构建高效/快速/可优化的流水线”“在这块 GPU 上跑得好”“基准测试/剖析/测量/调优/优化”“想以 M FPS 运行 N 路流”“这块 GPU 能处理多少路流”或明确要求使用 nsys / Nsight 时触发。若用户只是普通地“构建流水线”“显示视频”“保存流”而无性能意图,则应改用 deepstream-generate-pipeline 技能。
主要能力
技能与模型、流水线无关,仅假设推理元素为 nvinfer 或 nvinferserver,因此模型维度、精度、批大小等参数可通过标准配置设置。适用于检测(含或不含跟踪器)、分类、分割、VLM、嵌入等流水线,源可以是文件、RTSP、USB 摄像头或任意组合。技能会读取用户实际配置来发现模型维度、目标 FPS、源属性,不预设任何特定模型、编解码器或分辨率。
使用方式(六阶段流程)
阶段 0 — 预设应用(流水线创建时):在生成新流水线前预先应用一组默认值,例如 nvinfer.network-mode 默认 INT8(存在校准文件时)否则 FP16、设置 model-engine-file、infer-dims、nvstreammux.batch-size 取 min(N_streams, 16)、batched-push-timeout 为 1e6/source_fps 微秒、nvbuf-memory-type 为 0、解码器 num-extra-surfaces 取 min(batch_size, 5)、基准变体使用 fakesink sync=False、省略 OSD 与 tiler、跟踪器使用 config_tracker_NvDCF_max_perf.yml 等。用户无需了解这些参数,技能以通俗英文(FPS、流数、瓶颈)回复。
阶段 1 — NVTX 覆盖检查:列出流水线使用的元素并分类为 COVERED 或 UNINSTRUMENTED。DeepStream 插件原生发出 NVTX,自定义插件与普通 GStreamer 核心元素不发出。对未插桩元素报告“在此构建中无法直接测量”,但仍应用闭式规则。
阶段 2 — 硬件发现:运行 nvidia-smi 查询 GPU 名称、计算能力、显存、时钟、利用率、NVDEC/NVENC 利用率、PCIe 链路宽度与代数,据此推导解码上限(fps)、计算上限(TOPS)、内存带宽上限(GB/s)、Memcpy 上限(GB/s)。
阶段 3 — 仅推理微基准:仅运行 source → streammux → nvinfer → fakesink,扫描 batch-size ∈ {1,2,4,8,16,32},记录 (B, fps),找出平台批大小(增大到 2×B 时 FPS 增益小于 5% 的最小 B)。
阶段 4 — 推导配置:根据平台批大小、硬件上限、流数、源分辨率与帧率,一次性设置所有可调参数,包括 streammux、推理、解码器、跟踪器、队列等,并写入用户配置文件(先读后改,保持最小改动)。
阶段 5 — 端到端剖析与报告:使用 nsys profile 捕获(--trace=cuda,nvtx,osrt 等),再用 nsys stats 提取每内核 GPU 时间、每 NVTX 范围时间、Memcpy 总量、GPU 指标,输出 Markdown 报告,包含硬件、上限、推理平台、端到端实测、各插件耗时表、已应用配置、未插桩元素列表。
适用场景
需要为 DeepStream 流水线做性能调优、评估 GPU 承载能力、定位瓶颈(解码受限、计算受限、内存拷贝)时使用。
限制
仅支持终端,不使用 Nsight Lens 或任何 GUI;不对未插桩插件自动注入 NVTX;不做迭代式调优-测量循环,阶段 4 一次性推导配置,阶段 5 测量并报告。相关技能包括 deepstream-generate-pipeline(上游流水线生成)与 deepstream-byovm(HF → TensorRT 引擎构建)。