我正在阅读TF性能指南的数据加载部分。对于预取,它说,
tf.data API通过tf.data.dataset.prefetch变换提供软件流水线机制,其可用于将产生数据的时间与消费数据的时间解耦。具体而言,转换使用后台线程和内部缓冲区在请求元素之前从输入数据集中预取元素。要预取的元素数应等于(或可能大于)单个训练步骤所消耗的批处理数。您可以手动调整此值,也可以将其设置为tf.data.experimental.AUTOTUNE,这将提示tf.data运行时在运行时动态调整此值。
AUTOTUNE内部在做什么?应用了什么算法?启发式算法?
此外,在实践中,需要进行哪种手动调整?
2条答案
按热度按时间5jvtdoz21#
tf.data
生成输入管道的性能模型,并运行优化算法,以在指定为AUTOTUNE
的所有参数之间找到CPU预算的良好分配。输入管道运行时,tf.data
跟踪每个操作所花费的时间,以便将这些时间输入优化算法。OptimizationOptions对象对自动调优的行为提供了一些控制。
nwwlzxa72#
作者在他们的vldb论文https://vldb.org/pvldb/vol14/p2945-klimovic.pdf中提供了关于
AUTOTUNE
的详细信息,请参阅第3.3.2节。