计算逻辑很简单就是: a@b 想使用 pytorch 做 GPU 计算,10 块 GPU 的显存都是 10G ,想问问大家有好办法吗?
|      1Scirocco      2021-12-11 16:22:36 +08:00 说实话没怎么看明白。。就是普通的矩阵作乘法吗?那感觉没必要用 pytorch 呀? | 
|      3Scirocco      2021-12-11 16:27:37 +08:00 | 
|  |      4mingl0280      2021-12-11 16:45:35 +08:00 | 
|  |      5miracleyin      2021-12-11 16:45:49 +08:00 如果是稀疏矩阵的话可以通过 TORCH.SPARSE 这样的 api 来写,如果是非稠密的可能得思考为什么会有那么大的矩阵乘法了。 | 
|      6gckend OP | 
|  |      7Juszoe      2021-12-11 18:55:27 +08:00  1 可以考虑用矩阵分块乘法,可以将一次矩阵乘法分步计算,用 pytorch 应该不难实现,同时还能利用多块 GPU | 
|      8hbdh5      2021-12-11 19:39:31 +08:00 简单分个块不就可以么,20g+的话分成 2x2 就行了,数据算完就取回内存或者先暂存到磁盘,乘的时候可以用 strassen 算法能减少一次子块乘 | 
|  |      9woctordho      2021-12-11 22:06:36 +08:00 via Android 原理无非就是分块,可以试试 Dask 这个包 | 
|  |      10c0xt30a      2021-12-11 22:46:51 +08:00 ABx = A(Bx) 如果有 x 这个向量的话 | 
|      11zhoujinjing09      2021-12-12 01:17:50 +08:00 分块就行了呀,就要手动分一下 | 
|      12dayeye2006199      2021-12-12 02:26:39 +08:00 这个需要 out of core computation 不考虑用 GPU 的话可以考虑 http://xarray.pydata.org/en/stable/dask.html 或者 https://docs.dask.org/en/stable/array.html | 
|      13zhoujinjing09      2021-12-12 04:51:13 +08:00 或者精度要求不高的话可以考虑半精度,bfloat16 或者 tf32 | 
|  |      14necomancer      2021-12-13 13:19:54 +08:00 矩阵分块 |A B| |E F| = | AE+BG AF +BH| |C D| |G H| |CE+DG CF+DH| |