请问下机器学习PAI ParquetDataset做shuffle应该如何构建最佳实践呢?我理解的是ParquetDataset出的dataset已经是batch过的,再设置shuffle_buffer=k应该是缓存了k*batch_size条样本,出来的结果也是batch 之间的shuffle,不同的batch内部并不会有样本的shuffle对吗?
请问下机器学习PAI ParquetDataset做shuffle应该如何构建最佳实践呢?[阿里云机器学习PAI]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
对的,是batch级别的shuffle,每个batch内部的样本不做shuffle。Parquet是列存,样本级别shuffle的内存拷贝开销会比较大,此回答整理自钉群“DeepRec用户群”
是的,你的理解是正确的。在PAI中使用ParquetDataset时,由于ParquetDataset已经将数据按批次处理,因此再进行shuffle操作时,是在批次之间进行shuffle,而不是在每个批次内部进行shuffle。这样可以保证每个批次内部的样本顺序不变,但不同批次之间的样本顺序会发生变化。
如果你希望在每个批次内部也进行shuffle,你可能需要使用其他的DataSet类型,例如TFRecordDataset或者CSVDataset等,这些数据集类型可以在每个批次内部进行shuffle。
至于shuffle_buffer的设置,它决定了每次shuffle操作的样本数量。较大的shuffle_buffer可以提高shuffle的效果,但也可能会增加计算和存储的开销。因此,你需要根据实际的业务需求和计算资源来进行合理的设置。