SuperAPI AI 工具集

inference-builder

智能体与模型

查看项目

更新于 10-22 04:00

技能介绍

用途

NVIDIA Inference Builder 是一个面向 Vision AI 的代码生成器,目标是在 NVIDIA GPU 上生成具备高性能视频与流式处理能力的可部署推理流水线。它把 YAML 配置(可选配合 OpenAPI 规范和自定义处理器)转换为推理流水线,并打包为 Docker 容器或独立应用。该工具属于 DeepStream 单体仓库(mono-repo),位于 tools/inference_builder 目录。

主要能力

  • 根据 YAML 配置生成推理流水线;
  • 通过 Jinja 模板为不同推理后端生成代码(templates/backend/),并为服务端点处理器生成代码(templates/responder/);
  • 生成结果中会包含共享运行时库(lib/);
  • 提供配置 schema(schemas/config.schema.json)、各后端 schema(schemas/backends/)与参考文档(schemas/README.md),覆盖后端、参数、数据类型、预处理器、响应器与路由;
  • 提供覆盖各类后端的可运行示例(builder/samples/,索引见 builder/samples/README.md);
  • 提供集成测试框架(builder/tests/,参见 run_tests.sh --help);
  • 支持服务端类型 serverless(无需 OpenAPI 规范或服务定义);
  • 配置 YAML 支持运行时环境变量替换:$ENV_VAR|default_value,并按默认值自动推断类型。

使用方式

从仓库根目录解析路径,以便在任意子目录下使用:

DEEPSTREAM_ROOT="$(git rev-parse --show-toplevel)"
INFERENCE_BUILDER_ROOT="$DEEPSTREAM_ROOT/tools/inference_builder"
source "$INFERENCE_BUILDER_ROOT/.venv/bin/activate"
python "$INFERENCE_BUILDER_ROOT/builder/main.py" --help

首次创建虚拟环境:

cd "$INFERENCE_BUILDER_ROOT"
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

获取当前 CLI 用法时,应以 --help 输出的权威参数为准,不要依赖记忆中的语法:

python "$INFERENCE_BUILDER_ROOT/builder/main.py" --help

典型流程:

  1. 浏览示例与 schema:在 builder/samples/ 中找到最接近的示例,查阅 schemas/config.schema.json 与 schemas/backends/ 确认字段。
  2. 编写 YAML 配置:按 schema 校验;数据类型、预处理器、响应器与路由可参考 schemas/README.md。建议尽量让热路径留在 GPU 上,避免可规避的 GPU 与 CPU 往返;优先对解码/编码、缩放与色彩转换、批处理、预处理、推理、跟踪、叠加等环节使用 GPU 加速。
  3. 生成流水线:python builder/main.py <config.yaml> [options]。
  4. 准备模型仓库:从 NGC/HuggingFace 下载模型到 model_repo 目录。
  5. 生成 nvinfer 配置(仅 DeepStream 后端):检查下载模型是否已包含运行时配置文件(nvdsinfer_config.yaml、nvdspreprocess_config.yaml);若没有则生成并放在模型旁。非 DeepStream 后端跳过此步。
  6. 选择平台并构建 Docker 镜像:阅读 doc/platform-guide.md,为目标硬件(x86_64、Jetson/Tegra、DGX Spark)选择正确的基础镜像与 Dockerfile,然后构建镜像。
  7. 运行与测试:挂载模型仓库运行容器;serverless 流水线会运行至结束;HTTP 服务器(fastapi/triton/nim)则发送测试请求验证。若有 GPU 资源,对运行中的容器做端到端冒烟测试,在真实硬件上验证完整流水线。

适用场景

  • 为 DeepStream 检测服务生成配置,例如读取 RTSP、使用 Triton、暴露 FastAPI 端点;
  • 将 dummy 示例改造成 serverless 图像推理流水线,并获取 Docker 构建与运行命令;
  • 在 NVIDIA GPU 上以容器形式部署视频与流式 Vision AI 推理。

限制与注意事项

  • 模型请求若存在歧义(例如模型变体、版本、精度或来源不明确),应先向用户澄清,不要猜测;
  • 使用模型前应尽量收集版本、架构、输入/输出形状、精度与预期预处理信息,并与流水线 YAML 及运行时配置(如 nvdsinfer_config.yaml)交叉核对;输入维度、缩放因子、标签文件不一致是常见的静默失败来源;
  • 自定义处理器类名属性必须与 YAML 配置中的处理器名称完全一致;
  • 默认使用桥接网络并显式 -p 端口映射;仅在部署明确需要主机命名空间共享时建议 Docker host-network 或 host-IPC 模式,并在采用前说明安全权衡;
  • 运行容器前用 nvidia-smi 检查空闲 GPU 显存;若 GPU 被占用或显存不足,用 --gpus device=N 选择空闲 GPU,或请用户释放资源,OOM 失败可能静默或具有误导性;
  • DeepStream 后端要求在模型目录中提供单独的 nvdsinfer_config.yaml;
  • 编写新配置时,必需的顶层字段只有 name、model_repo 和 models,其余均为可选;
  • 关键运行时环境变量:HTTP_PORT(默认 8000)、LOG_LEVEL(默认 INFO)、DEBUG(0/1)、N_CODEC_INSTANCES(并行视频解码器数)、MAX_BATCH_SIZE(实时流帧批处理大小)。

关键目录

  • builder/samples/:各类后端的可运行示例;
  • schemas/config.schema.json:主配置 schema,包含全部字段、数据类型与校验规则;
  • schemas/README.md:后端、参数、数据类型、预处理器、响应器与路由的综合参考;
  • schemas/backends/:各后端 schema 与参数定义;
  • templates/backend/:各推理后端的 Jinja 模板;
  • templates/responder/:服务端点处理器的 Jinja 模板;
  • lib/:生成流水线中包含的共享运行时库;
  • builder/tests/:集成测试框架。