MindSpore:npu 多卡训练自定义数据集如何给不同npu传递不同数据

问题描述:

mindspore npu 多卡训练自定义数据集如何给不同npu传递不同数据?

是在ds.GeneratorDataset传递num_shards=num_shards, shard_id=device_id还是自定义数据集__getitem__里面用rank id取不同数据?

解决方案:

使用GeneratorDataset的时候,可以使用 num_shards=num_shards, shard_id=device_id 参数来控制不同卡读取哪个分片的数据,__getitem__ 和 __len__ 按全量数据集处理即可。

举例:

卡0:ds.GeneratorDataset(..., num_shards=8, shard_id=0, ...)

卡1:ds.GeneratorDataset(..., num_shards=8, shard_id=1, ...)

卡2:ds.GeneratorDataset(..., num_shards=8, shard_id=2, ...)

...

卡7:ds.GeneratorDataset(..., num_shards=8, shard_id=7, ...)

你可能感兴趣的:(深度学习,人工智能,服务器)