深入学习模型推理性能调优指南

本节提供一些建议为调试和性能调优模型推理砖。概述,请参阅深度学习推理工作流

通常模型推理有两个主要部分:数据输入管道和推理模型。数据输入管道重数据I / O输入和模型推断是沉重的计算。确定工作流程的瓶颈是简单的。这里有一些方法:

  • 减少模型到一个微不足道的模型和测量每秒的例子。如果差异之间的端到端时间模型和简单的模型很小,那么数据输入管道可能是一个瓶颈,否则模型推理是瓶颈。

  • 如果运行模型推理与GPU,检查GPU的利用率指标。如果GPU不断利用率不高,数据输入管道可能的瓶颈。

优化数据输入管道

使用gpu可以有效地优化运行速度模型推理。随着gpu和其他加速器变得更快,重要的是,数据输入管道跟上需求。数据输入管道读取数据到火花Dataframes,转换,并加载它的输入模型推理。如果数据输入是瓶颈,这里有一些建议来增加I / O吞吐量:

  • 设置最大记录每批。更多数量的最大值可以降低I / O开销记录函数调用UDF只要记录可以装入内存。设置批量大小,设置以下配置:

    火花相依(“spark.sql.execution.arrow.maxRecordsPerBatch”,“5000”)
  • 批量加载数据和预取预处理输入数据的时候熊猫UDF。

    TensorFlow砖,推荐使用特遣部队。data API。你可以通过设置并行解析映射num_parallel_calls在一个地图函数和调用预取批处理预取和配料。

    数据集地图(parse_example,num_parallel_calls=num_process)预取(prefetch_size)批处理(batch_size)

    PyTorch砖,推荐使用DataLoader类。你可以设置batch_size批处理和num_workers并行数据加载。

    火炬跑龙套数据DataLoader(图片,batch_size=batch_size,num_workers=num_process)