模型分析器 CLI#

使用 -h--help 标志查看模型分析器命令行界面的描述。

$ model-analyzer -h

诸如 -q--quiet-v--verbose 之类的选项是全局性的,适用于所有模型分析器子命令。

模型分析器模式#

-m--mode 标志是全局性的,所有子命令都可以访问。它告诉模型分析器它正在运行的上下文。目前模型分析器支持 2 种模式。

在线模式#

这是默认模式。在此模式下,模型分析器将运行以查找在线推理场景的最佳模型配置。默认情况下,在在线模式下,最佳模型配置将是吞吐量最大的配置。如果通过 --latency-budgetprofile 子命令 指定了延迟预算,则最佳模型配置将是在给定预算内吞吐量最高的配置。

在在线模式下,profile 和 report 子命令将生成特定于在线推理的摘要。请参阅 在线摘要在线详细报告 示例。

离线模式#

离线模式 --mode=offline 告诉模型分析器运行以查找离线推理场景的最佳模型配置。默认情况下,在离线模式下,最佳模型配置将是吞吐量最大的配置。可以通过 --min-throughputprofile 子命令 指定最小吞吐量,以忽略任何未超过每秒最小推理次数的配置。

在离线模式下,profile 和 report 子命令将生成特定于离线推理的报告。请参阅 离线摘要离线详细报告 示例。

模型分析器子命令#

模型分析器的功能分为三个独立的子命令。每个子命令都有自己的 CLI 和配置选项。某些选项对于多个子命令是必需的(例如 --export-path)。有关配置每个子命令的更多详细信息,请参阅 配置模型分析器 部分。

子命令:profile#

profile 子命令首先加载检查点目录中的“最新”检查点(如果可用)。然后,它将使用 perf analyzer 运行模型推理,并收集吞吐量、延迟和内存使用率等指标,用于检查点中不存在的任何测量。

接下来,它使用配置 YAML 中指定的任何目标对 CLI 或配置 YAML 中指定的模型进行排序。最后,它使用每个模型的顶部模型配置以及跨模型的顶部模型配置(如果请求)构建摘要 PDF(有关更多详细信息,请参阅 报告 部分)。

如果用户想要使用不同的目标或在不同的约束条件下对结果进行排序和过滤,则可以使用不同的配置多次运行 profile 子命令。

使用以下命令查看子命令的用法和参数描述。

$ model-analyzer profile -h

根据提供的命令行或 YAML 配置选项,profile 子命令将对 perf analyzer 和模型配置文件参数执行 手动自动快速 搜索。模型配置参数(例如,最大批处理大小动态批处理实例组计数)的每种组合,它将使用所有指定的运行参数(客户端请求并发性和静态批处理大小)运行 tritonserver 和 perf analyzer 实例。它还将模型配置文件的 protobuf (.pbtxt) 文件保存在 输出模型仓库 中,这些文件对应于每种组合。模型分析器在这些 perf analyzer 运行期间以固定的时间间隔收集各种指标。每次 perf analyzer 运行都会生成一个测量值,该值对应于输出表中的一行。在完成每个模型的所有配置的运行后,模型分析器会将收集到的测量值保存到检查点目录中。有关检查点的更多详细信息,请参阅 检查点 部分

示例#

此处显示了一些示例 profile 命令。有关完整示例,请参阅 快速入门 部分。

注意:所有命令都假定您在安装 MA 的目录中运行

  1. 在位于 examples/quick-start 中的名为 add_sub 的模型上运行自动配置搜索

$ model-analyzer profile -m examples/quick-start --profile-models add_sub
  1. 在位于 examples/quick-start 中的名为 add_sub 的模型上运行快速搜索

$ model-analyzer profile -m examples/quick-start --profile-models add_sub --run-config-search-mode quick
  1. 在位于 examples/quick-start 中的名为 addsub 的 2 个模型上运行自动配置搜索,并将检查点保存到 checkpoints

$ model-analyzer profile -m examples/quick-start --profile-models add,sub --checkpoint-directory=checkpoints
  1. 在位于 examples/quick-start 中的名为 add_sub 的模型上运行自动配置搜索,但将存储模型配置变体的仓库更改为 /home/output_repo

$ model-analyzer profile -m examples/quick-start --output-model-repository-path=/home/output_repo --profile-models add_sub
  1. 使用 YAML 配置文件,对位于 examples/quick-start 中的模型 addsub 的手动定义的配置运行 profile

$ model-analyzer profile -f /path/to/config.yaml

config.yaml 的内容如下所示。

model_repository: examples/quick-start

run_config_search_disable: True

concurrency: [2, 4, 8, 16, 32]
batch_sizes: [8, 16, 64]

profile_models:
  add:
    model_config_parameters:
      instance_group:
        - kind: KIND_GPU
          count: [1, 2]
      dynamic_batching:
        max_queue_delay_microseconds: [100]
  sub:
    model_config_parameters:
      instance_group:
        - kind: KIND_GPU
          count: [1, 2]
      dynamic_batching:
        max_queue_delay_microseconds: [100]
  1. 使用 yaml 配置文件将目标和约束应用于摘要图表和表格中的排序和过滤结果。

$ model-analyzer profile -f /path/to/config.yaml

config.yaml 的内容如下所示。

checkpoint_directory: ./checkpoints/
export_path: ./export_directory/

profile_models:
  add:
    objectives:
      - perf_throughput
    constraints:
      perf_latency_p99:
        max: 15
  sub:
    objectives:
      - gpu_used_memory
    constraints:
      perf_latency_p99:
        max: 15

注意:当您不想包含先前 profile 的结果时,应在连续运行 model-analyzer profile 命令之间删除检查点目录。

子命令:report#

report 子命令允许用户在一个或多个已分析的模型配置上创建详细报告。

$ model-analyzer report -h

模型分析器不是像摘要报告中那样仅显示每个配置的顶部测量值,而是在详细报告中编译和显示给定配置的所有测量值(有关更多详细信息,请参阅 报告 部分)。

示例#

  1. 为名为 add_sub_config_1add_sub_config_2add_sub 模型配置生成详细报告。从 checkpoints 读取并写入 export_directory

$ model-analyzer --report-model-configs add_sub_config_1,add_sub_config_2 --checkpoint-directory checkpoints -e export_directory
  1. 使用 YAML 配置文件为 add_sub_config_2 生成带有自定义图表的详细报告

$ model-analyzer report -f /path/to/config.yaml

config.yaml 的内容如下所示

checkpoint_directory: ./checkpoints/
export_path: "./export_directory"
report_model_configs:
  add_sub_config_2:
    plots:
      throughput_v_memory:
        title: Thoughput vs GPU Memory
        x_axis: gpu_used_memory
        y_axis: perf_throughput
        monotonic: True