日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

一行代碼消除PyTorch的CUDA內(nèi)存溢出報錯,這個GitHub項目剛發(fā)布就攬星600+


多少人用PyTorch“煉丹”時都會被這個bug困擾 。
CUDAerror:outofmemory.
一般情況下 , 你得找出當(dāng)下占顯存的沒用的程序 , 然后kill掉 。如果不行 , 還需手動調(diào)整batchsize到合適的大小 , 有點(diǎn)麻煩 。
現(xiàn)在 , 有人寫了一個PyTorchwrapper , 用一行代碼就能“無痛”消除這個bug 。
有多厲害?
相關(guān)項目在GitHub才發(fā)布沒幾天就收獲了600+星 。
一行代碼解決內(nèi)存溢出錯誤
軟件包名叫koila , 已經(jīng)上傳PyPI , 先安裝一下:
pipinstallkoila
現(xiàn)在 , 假如你面對這樣一個PyTorch項目:構(gòu)建一個神經(jīng)網(wǎng)絡(luò)來對FashionMNIST數(shù)據(jù)集中的
#AbatchofMNISTimageinput=torch.randn(8,28,28)#Abatchoflabelslabel=torch.randn(0,10,[8])classNeuralNetwork(Module):def__init__(self):super(NeuralNetwork,self).__init__()self.flatten=Flatten()self.linear_relu_stack=Sequential(Linear(28*28,512),ReLU(),Linear(512,512),ReLU(),Linear(512,10),)defforward(self,x):x=self.flatten(x)logits=self.linear_relu_stack(x)returnlogits
然后定義loss函數(shù)、計算輸出和losses 。
loss_fn=CrossEntropyLoss()#Calculatelossesout=nn(t)loss=loss_fn(out,label)#Backwardpassnn.zero_grad()loss.backward()
好了 , 如何使用koila來防止內(nèi)存溢出?
超級簡單!
只需在第一行代碼 , 也就是把輸入用lazy張量wrap起來 , 并指定bacth維度 , koila就能自動幫你計算剩余的GPU內(nèi)存并使用正確的batchsize了 。
在本例中 , batch=0 , 則修改如下:
input=lazy(torch.randn(8,28,28),batch=0)
完事兒!就這樣和PyTorch“煉丹”時的OOM報錯說拜拜 。
靈感來自TensorFlow的靜態(tài)/懶惰評估
下面就來說說koila背后的工作原理 。
“CUDAerror:outofmemory”這個報錯通常發(fā)生在前向傳遞(forwardpass)中 , 因為這時需要保存很多臨時變量 。
koila的靈感來自TensorFlow的靜態(tài)/懶惰評估(static/lazyevaluation) 。
它通過構(gòu)建koila作者是一位叫做RenChuWang的小哥 。
項目地址:點(diǎn)此直達(dá)
參考鏈接:點(diǎn)此直達(dá)
以上就是愛惜日網(wǎng)?一行代碼消除PyTorch的CUDA內(nèi)存溢出報錯 , 這個GitHub項目剛發(fā)布就攬星600+的相關(guān)內(nèi)容了 , 更多精彩請關(guān)注作者:愛惜日知識
聲明:本文由愛惜日網(wǎng)【創(chuàng)業(yè)者資源平臺】作者編輯發(fā)布 , 更多技術(shù)關(guān)注愛惜日技術(shù)!
【一行代碼消除PyTorch的CUDA內(nèi)存溢出報錯,這個GitHub項目剛發(fā)布就攬星600+】

    推薦閱讀