代码之家  ›  专栏  ›  技术社区  ›  gspr

当网络需要共享(常量)`Tensor时使用`DataParallel``

  •  0
  • gspr  · 技术社区  · 6 年前

    DataParallel 将我的计算沿着批处理维度分布在多个GPU上。我的网络需要 Tensor (我们称之为 A )在内部,这是不变的,不会通过优化而改变。看来 数据并行 不会自动复制此 张量 对于所有有问题的gpu,网络将因此抱怨输入数据块 x 它看到的驻留在不同的GPU上 A

    有办法吗 你能自动处理这种情况吗?或者,有没有办法复制 张量 全部的 GPU?还是我应该留一个 张量 并根据用户看到的块的位置手动确定要使用哪个副本 forward 居住?

    0 回复  |  直到 6 年前
        1
  •  3
  •   Szymon Maszke    6 年前

    你应该把张量包起来 torch.nn.Parameter requires_grad=False 在创作过程中。

    torch.nn.参数 .

    它仅仅意味着它是模型的一部分,如果需要的话应该被转移(例如多个GPU)。

    torch 知道哪个张量在里面 __init__ 是模型的一部分(您可以对张量执行一些操作并添加到 self 只是为了完成一些事情)。