Pytorch DataParallel 和 RNN

前言

Pytorch 中使用DataParallel很简单只需要nn.DataParallel(model) 但是如果在GPU上使用而且模型较大可能会遇到一个warning RNN module weights are not part of single contiguous chunk of memory. This means they need to be compacted at every call, possibly greatly increasing memory usage. To compact weights again call flatten_parameters()

原因

就如同warning 中所说model参数放在gpu上的时候不保证放置的memory位置一定是连续的,所以会增加memory的使用,解决方法添加 flatten_parameters()
使用方法如下

class Model(nn.Module):
    def __init__(self, input_size, output_size):
        super(Model, self).__init__()
        self.rnn = nn.RNN(input_size, output_size)
 
    def forward(self, input):
        self.rnn.flatten_parameters()
        ...

ps: 正则化(regularization) 一定要和 normalization/standardization 一起使用, 因为正则化对小权重有偏好,如果不使用normalization/standardization 就会让小weight和最后的大输出之间有一个gap.

posted @   逍遥叹wan  阅读(1330)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示