mushding 的小小天地

歡迎來到 mushding 的雜七雜八生活筆記

常常我們初學 pytroch 的時候都一定會看過下面的程式碼:

1
2
3
4
5
6
7
8
for epoch in range(1, epochs+1):
output = model(dataset)
loss = criterion(output, target)

# wtf
optimizer = zero_grad()
loss.backward()
optimizer.step()

好不容易跨出第一步,並剛接觸程式碼的你,一看到這坨鬼東西一定心裡有三個問號…(至少我是這樣啦哈哈。

keywords: Backpropagation

閱讀全文 »

DDP 的全文是 Distributed Data Parallel,是一種可以透過多機多卡來訓練模型的一種方法,它的本質上就是一個像 Map-Reduce 的東西,把訓練資料、Gradient、Loss 等資訊平均分配給每一個 GPU,達成多工處理的目的

DDP 也可以就看成,提高 batch-size 來提高網路效果

下面我們直接先來看 code 吧:

keywords: DDP

閱讀全文 »

用一串話簡單解釋什麼是 AMP:

在 2017 Nvidia 提出了用於「混合精度的訓練方法」,是一種可使用不同精度來運算 cuda tensor 運算,Nvidia 很貼心的用 python 整理成 apex 套件讓大家方便使用 https://github.com/NVIDIA/apex。而在之後 pytorch 1.6 的更新中,在 Nvidia 的幫忙下,開發了 torch.cuda.amp 函式 (AMP 全稱 Automatic Mixed Precision),使得混合精度訓練可以在 pytorch 中直接引入並使用。

keywords: AMP

閱讀全文 »

你是不是常常覺得 GPU 顯存不夠用?是不是覺得自己太窮買不起好的顯卡、也租不起好的機台?覺得常常因為東卡西卡關就放棄深度學習?

沒關系!接下來有幾招可以在預算不太足的情況下,還是可以讓訓練跑得起來!

keywords: Gradient accumulation

閱讀全文 »

有時候我們在看別人的論文時會發現:常常會有一些「超參數」的出現,像是 ResNet shortcut 進入的權重值等等

這個時候就可以用 Pytorch 提供的 Parameter 和 buffer 來實作,想知道詳細差在哪裡就繼續往下看吧 ~

keywords: Parameter、buffer

閱讀全文 »

在處理 dataset,有時候我們會遇到需要資料前處理、資料擴增…等等對影像處理的步驟:像是希望可以透過旋轉、鏡像做到資料擴增;希望可以利用影像裁切統一輸入影像大小

而 pytorch 也很貼心的提供給我們一個套件使用:torchvision,torchvision 裡面提供了非常多的影像處理方法:像是旋轉、鏡像、裁切

以下這篇文章整理了大部份常用到的函式:Pytorch提供之torchvision data augmentation技巧

keywords: torchvision

閱讀全文 »