【发布时间】:2020-05-31 16:35:57
【问题描述】:
我使用 pytorch 作为数组处理语言(不是用于传统的深度学习目的),我想知道规范的方法是什么来做“批处理”并行。
例如,假设我想计算 3-d 张量的二维层的 svds(例如使用 torch.svd()),并且我想返回一个堆叠的元组 us,堆叠的 s,堆叠v。
据推测,通过 SIMD 并行的魔力,这应该与单层 svd(在 gpu 上)大致相同的时间完成,但是如何编程呢?
【问题讨论】:
-
请提供完整的minimal reproducible example 以帮助解决问题。具体来说,您可以用伪代码或类似代码替换有问题的部分,使其更易于理解。
-
不确定我是否理解这个问题。 Pytorch 已经支持批量数据的 SVD,您希望与现有实现有什么不同?
-
@jodag 我已经实现了部分 SVD(以获得 K 个最高奇异值/向量)。通过我的代码,所有的火炬功能都是可批处理的(qr、svd、mm、转置),所以一切都很好。如果你知道一个规范的手电筒功能可以做到这一点,我全神贯注。
-
不幸的是,目前不支持截断的 SVD(尽管有一个 open feature request 似乎已实现并等待拉取请求)。还有两个相关的问题here 和here,您可能会觉得有用。