pytorch 分布式計算 你們都遇到過哪些 坑 bug?

時間 2021-05-12 06:43:35

1樓:謝永斌

在DistributedDataParallel模式中,dataloader增加DistributedSampler,發現訓練中記憶體(記憶體!非視訊記憶體)會緩慢增加,直到最後出現OSError: [Errno 12] Cannot allocate memory。

到現在也沒解決這個坑。。。(如果有大佬解決了,能否提供下思路。。。torch==1.

7.1)

2樓:

1.UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars;

will instead unsqueeze and return a vector.

Mario:Pytorch的nn.DataParallel2.沒有單卡訓練精度高

3樓:hzwer

多卡並行,需要存模型的時候,注意只在主卡和 cpu 之間進行操作,否則會引發記憶體洩漏

可能發生各種詭異的情況,包括資料產生變化,多卡梯度對不上,模型精度下降等

4樓:

講乙個引數吧。

呼叫DDP有類似version counter不對的inplace操作錯誤,可能是包裝的module有register buffer,設定下DDP的引數`broadcast_buffers=False`。

BN的runing mean和var也是不要求導的buffer。參考:Inplace error if DistributedDataParallel module that contains a buffer is called twice · Issue #22095 · pytorch/pytorch

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.

cuda.FloatTensor [1, 32]] is at version 3; expected version 2 instead

5樓:範汝超

說下我之前遇到的坑,如果是用pytorch實現同步梯度更新,然後資料介面是自己寫的話一定要注意保證每張卡分配的batch數是一樣的。因為如果某張卡少了乙個batch的話,其他卡就會等待,從而程式卡在torch.all_reduce()上。

最後的情況就會出現在第乙個epoch結尾處程式卡住,而且沒有報錯資訊。

當時調了半天,一度以為是pytorch的某種bug,最後檢查資料介面才發現了這個小錯誤。

6樓:鄭華濱

乙個武斷,不一定對:不要用看似方便的DataParallel或DistributedDataParallel,自己調torch.distributed裡面的通訊介面進行梯度通訊才是墜吼的。

海量資料,分布式計算,平行計算 ,虛擬化與雲計算的關係是怎樣的?

億方雲 海量資料涉及到一些方面。我給你介紹一下 第一點涉及到雲儲存和分布式儲存。第二點涉及到分布式計算和平行計算。分布式計算和平行計算 平行計算偏科學領域,偏單使用者,單請求,在配置多處理機的伺服器下處理。分布式計算偏多使用者,多請求,涉及多台伺服器多個計算單元的分布式處理。分布式計算本身又分為兩種...

分布式計算與雲和SOA有什麼關係?

Shijie XU 總結 三個不同的名詞,側重點不一樣,又有重疊,分布式計算 側重多個程序 位於同乙個機器,不同機器,甚至雲上的主機 相互通訊,交流,然後共同完成乙個任務,請求等。分布式計算的概念出來很早,從80,90年代那個時候的RPC,CORBA通訊開始,通訊協議也多種多樣,比如底層的TCP,I...

有了分布式計算平台後,像天河這種超級計算機還有存在的必要嗎?

山梔 超算中心會雲計算化,雲計算平台也會提供越來越多的超算部署。雲計算和超算本質上沒有區別,兩者的趨同是商業模式適應時代大勢的不斷優化。這裡時代大勢指的是大資料量高效能的計算越來越普及。舊時王謝堂前燕,飛入尋常百姓家 時至今日,乙個普通的本科生可能都能把1000個CPU或者100張GPU充分利用起來...