如何优化 Triton 部署模型的性能
目录
- 简介
- 优化模型性能的决策
- 运行相同设备上的模型实例数量
- 动态批处理的输入请求数量
- 服务模型的格式
- 输出结果的精度
- Triton模型配置
- 安装模型分析器
- 克隆模型分析器仓库
- 构建Docker容器
- 启动模型分析器容器
- 运行模型分析
- 分析结果
- 吞吐量与延迟的关系
- 筛选最佳模型配置
- 配置约束下的最佳模型配置
优化 Triton 部署模型的性能 💡
在部署 Triton 推理服务器上的模型时,我们可以做出一些决策来优化性能。这些决策涉及多个方面,例如在同一设备上运行模型的实例数量、动态处理输入请求的数量、服务模型的格式以及计算输出的精确度。然而,调整每个设置可能需要很长时间,因为修改一个设置可能会影响另一个性能指标。为了帮助我们找到最佳配置,Triton 模型分析器是一个非常有用的命令行工具。它可以扫描模型的所有可能配置,以找到最适合特定需求的设置组合。
首先,我们需要配置 Triton 服务器并且已经有一个带有默认设置的预配置模型。在这个例子中,我们将使用 Triton 的 PyTorch 后端来服务一个预训练的 Hugging Face Bert 大型无大小写模型。这个模型将在 V100 GPU 上运行。让我们先来看一下我们的模型文件夹。在这个文件夹中,我们有一个已经转换为 TorchScript 格式的模型脚本。接下来,我们还需要查看一下模型配置,这样我们就可以了解到默认配置是什么。在配置文件中,我们可以看到输入和输出张量的详细信息,以及最大批处理大小为 64。但是,这可能不是最优的配置。我们可能需要调整批处理大小或者每个设备上的模型实例数量,以获得更好的性能。
为了使用模型分析器,首先需要下载并安装它。可以参考模型分析器的文档来了解不同的安装方法。在本例中,我们将克隆模型分析器仓库并从源代码构建 Docker 容器。通过以下命令克隆仓库并切换到特定的分支(r22.04)。这样做可以确保我们的步骤与您的操作完全一致。接下来,我们将构建 Docker 镜像并下载所需要的所有模型分析器组件。这可能需要几分钟的时间,请耐心等待。
$ git clone [repository_url] -b r22.04
镜像构建完成后,我们可以启动模型分析器容器。在这个例子中,我们将以交互模式启动容器,并让容器访问所有 GPU。我们还将将当前目录挂载到容器内的工作空间文件夹,并允许容器访问主机网络。
进入容器后,我们需要创建一个模型分析的配置文件。我将创建一个简单的扫描文件,告诉模型分析器从之前创建的过滤器读取我们的模型库,并对大型模型进行性能分析。我们还需要设置性能分析器的输入数据为0,这是因为对于 Bert 模型,通常性能分析器会发送随机值给模型,以便分析其性能。但是这可能会导致索引错误,所以我们希望发送全零张量来测试结果的速度。
现在,我们只需要运行模型分析器的 profile
命令并指向我们的扫描文件即可。模型分析器将使用默认的数值来扫描每个设备上的模型实例数量和单个批处理中的最大输入数量。这个过程可能需要几分钟的时间。完成后,我们可以看到一些报告和图像,显示出在模型分析过程中产生的不同性能指标。
首先,我们看到吞吐量与延迟之间的关系图表,这里展示了三个最佳配置的性能。在这里,最佳配置是指推理吞吐量最高的模型配置。我们可以看到在顶部,推理吞吐量最高的模型配置是 Bert 大型配置 2,其中每个 GPU 上有一个模型实例,最大批处理大小为 4,并启用了动态批处理。然而,我们也可以看到这个模型的延迟非常高,这可能不适合我们的应用场景。
接下来,如果我们有关于响应的最大延迟限制(例如 50 毫秒)等服务级别协议要求,我们可能希望找到使吞吐量最大化的模型配置。幸运的是,模型分析器可以让我们避免重新扫描所有参数的过程,我们只需要重新运行生成报告的最终分析阶段。
我们可以创建一个新的分析配置文件,指定我们要分析的模型以及它们需要满足的约束条件。在本例中,我们希望吞吐量最大化,但响应延迟不能超过 50 毫秒。我们只需要重新运行模型分析器的 analyze
命令,并指定新的配置文件即可。这将基于之前的检查点生成一个新的报告,我们可以在报告中看到新的最佳模型配置。
在使用模型分析器时,我们可以根据具体需求更灵活地选择符合要求的模型性能配置。
结论
通过使用 Triton 模型分析器,您可以自动化寻找最佳性能配置的过程,无需手动调整每个设置。通过分析吞吐量和延迟的关系,您可以根据需求灵活选择最佳模型配置。这将帮助您优化 Triton 部署模型的性能,并提供最佳的推理体验。
问题与解答
Q: Triton模型分析器适用于哪些模型后端?
A: Triton模型分析器适用于所有Triton后端,包括PyTorch、TensorFlow和ONNX。
Q: 我是否需要为每个模型手动调整性能配置?
A: Triton模型分析器可以自动扫描所有可能的配置,并找到最佳的性能配置,从而减少了手动调整的工作量。
Q: Triton支持哪些推理服务器?
A: Triton支持集成了CUDA的NVIDIA GPU服务器。您可以根据服务器的配置轻松地选择GPU数量和型号。
Q: Triton模型分析器如何帮助优化模型性能?
A: Triton模型分析器可以帮助您找到性能最佳的模型配置,通过扫描所有可能的参数组合,以获得最高的吞吐量和最低的延迟。这将帮助您优化模型的性能,提供更快速和高效的推理体验。
Q: Triton模型分析器支持哪些输出指标?
A: Triton模型分析器可以生成各种输出指标,包括吞吐量、延迟、内存使用和模型失败的报告。您可以根据自己的需求选择适合的输出指标。