DataParallel multigpu运行时错误:chunk需要至少1维张量

2024-04-27 14:46:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过设置model = nn.DataParallel(model).cuda()在多个GPU上使用DataParallel运行我的模型,但每次出现此错误时-

RuntimeError: chunk expects at least a 1-dimensional tensor (chunk at /pytorch/aten/src/ATen/native/TensorShape.cpp:184).

我的代码是正确的。有人知道怎么了吗

我已尝试在终端上设置device_ids=[0,1]参数和CUDA_VISIBLE_DEVICES。还尝试了不同的批量大小


Tags: 模型modelgpu错误nnpytorchatcuda
1条回答
网友
1楼 · 发布于 2024-04-27 14:46:25

要确定问题,您应该检查每个小批量的输入数据的形状。文档中说,nn.DataParalleldim0中分割输入张量,并将每个块发送到指定的GPU。从错误消息中,似乎您正试图传递一个0维张量

一个可能的原因是,如果您有一个带有n示例的小批处理,并且您在多个nGPU上运行程序,那么您将得到此错误

让我们考虑下面的场景。

  • 培训示例总数=161,批量大小=80,小批量总数=3
  • 为DataParallel指定的GPU数=3

现在,在上面的场景中,在第三个小批量中,将有一个示例。因此,不可能将块发送到所有特定的GPU,您将收到错误消息。因此,请检查您是否不是此问题的受害者

相关问题 更多 >