模型分析器 CLI#
使用 -h
或 --help
标志查看模型分析器命令行界面的描述。
$ model-analyzer -h
诸如 -q
、--quiet
和 -v
、--verbose
之类的选项是全局性的,适用于所有模型分析器子命令。
模型分析器模式#
-m
或 --mode
标志是全局性的,所有子命令都可以访问。它告诉模型分析器它正在运行的上下文。目前模型分析器支持 2 种模式。
在线模式#
这是默认模式。在此模式下,模型分析器将运行以查找在线推理场景的最佳模型配置。默认情况下,在在线模式下,最佳模型配置将是吞吐量最大的配置。如果通过 --latency-budget
为 profile 子命令 指定了延迟预算,则最佳模型配置将是在给定预算内吞吐量最高的配置。
在在线模式下,profile 和 report 子命令将生成特定于在线推理的摘要。请参阅 在线摘要 和 在线详细报告 示例。
离线模式#
离线模式 --mode=offline
告诉模型分析器运行以查找离线推理场景的最佳模型配置。默认情况下,在离线模式下,最佳模型配置将是吞吐量最大的配置。可以通过 --min-throughput
为 profile 子命令 指定最小吞吐量,以忽略任何未超过每秒最小推理次数的配置。
在离线模式下,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 的目录中运行
在位于
examples/quick-start
中的名为add_sub
的模型上运行自动配置搜索
$ model-analyzer profile -m examples/quick-start --profile-models add_sub
在位于
examples/quick-start
中的名为add_sub
的模型上运行快速搜索
$ model-analyzer profile -m examples/quick-start --profile-models add_sub --run-config-search-mode quick
在位于
examples/quick-start
中的名为add
和sub
的 2 个模型上运行自动配置搜索,并将检查点保存到checkpoints
$ model-analyzer profile -m examples/quick-start --profile-models add,sub --checkpoint-directory=checkpoints
在位于
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
使用 YAML 配置文件,对位于
examples/quick-start
中的模型add
和sub
的手动定义的配置运行 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]
使用 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
模型分析器不是像摘要报告中那样仅显示每个配置的顶部测量值,而是在详细报告中编译和显示给定配置的所有测量值(有关更多详细信息,请参阅 报告 部分)。
示例#
为名为
add_sub_config_1
和add_sub_config_2
的add_sub
模型配置生成详细报告。从checkpoints
读取并写入export_directory
。
$ model-analyzer --report-model-configs add_sub_config_1,add_sub_config_2 --checkpoint-directory checkpoints -e export_directory
使用 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