梯度累加(Gradient Accumulation)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                梯度累加(Gradient Accumulation)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                受顯存限制,運行一些預訓練的large模型時,batch-size往往設置的比較小1-4,否則就會‘CUDA out of memory’,但一般batch-size越大(一定范圍內)模型收斂越穩定效果相對越好,這時梯度累加(Gradient Accumulation)就可以發揮作用了,梯度累加可以先累加多個batch的梯度再進行一次參數更新,相當于增大了batch-size,這里記錄一下梯度累計的使用(Pytorch)
# 截取腳本片段 step = 0 accum_step = 10 for epoch in range(epochs):print(f"epochs: {epoch}/{epochs}")for batch in train_dataloader:step += 1input_ids = batch['input_ids'].to(device)labels = batch['decoder_input_ids'].to(device)loss = model(input_ids=input_ids, labels=labels).lossloss = loss / accum_steploss.backward()if step % accum_step ==0:optim.step()optim.zero_grad()總結
以上是生活随笔為你收集整理的梯度累加(Gradient Accumulation)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java版QQ 欢迎点评
- 下一篇: Daily Accumulation
