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