深入学习模型推理性能调优指南
本节提供一些建议为调试和性能调优模型推理砖。概述,请参阅深度学习推理工作流。
通常模型推理有两个主要部分:数据输入管道和推理模型。数据输入管道重数据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)