pytorch 安装

报错: OSError: [WinError 126] The specified module could not be found. Error loading "xxx\site-packages\torch\lib\fbgemm.dll" or one of its dependencies. 安装 VC_redist.X64 没用(即 …

pytorch多卡训练的一些问题

多卡训练时的batch_size设置 问:假设我有4张卡,我将 batch_size 设置为64,那么是每张卡上都有64的batch同时训练,还是每张卡batch为64/4=16? 答:不管是dp还是ddp模式,batch_size 都是单张卡上的batch大小,即每张卡训练的都是batch=64 我觉得挺奇怪,如果我是因为显存不足而使用多卡训练,模型中又有 …

为什么模型训练这么吃显存?

现象 我有一个pytorch深度学习模型,模型本身不大,经过计算发现其自身只有约40 million的待学习参数量,大约仅需要150m内存就够了,但是我在一块有24g显存的显卡上训练时,很容易OOM,即使将batch size调整到刚刚能训练且不爆显存的大小,在backward阶段仍然会OOM,问题在于为什么这么小的模型却需要这么大的显存? 排查 搜索一番发 …

pytorch中的unfold

torch.nn.functional.unfold 如果将卷积看作 滑动窗口+求和 的话,那么这个方法就是只有 滑动窗口 这一步了。 如图,a.unfold(0, 2, 1),表示在a的第0维以卷积核长度为2步长为1的方式开始取值。a的维度为(5,5),其第0维相当于行,所以图中是竖着取值的,最终得到维度为(4,5,2)的结果,因为a的0维只有5个数,而你 …

记一次模型训练速度优化的过程

优化之前每轮训练大概需要 3'10’’,优化之后大概只需要 35‘’ 优化前 优化后 问题提出 我有一个图像异常检测的模型,训练过程很慢,且在训练过程中GPU的使用率剧烈波动,一会100%一会又降到0。我使用的是GTX3090 24G显卡,在MVTec数据集上训练,该数据集有15个类别,单卡全部训练完大约需要4天。 寻找原因 python或pytorch本身 …

pytorch保存特征图

pytorch子项目torchvision提供了用于保存tensor为图片的方法 torchvision.utils.save_image …

pytorch自定义激活函数

代码 自定义函数需要继承 torch.autograd.Function 类,并实现两个静态方法 forward 和 backward import torch # 自定义函数 class MyFunc(torch.autograd.Function): @staticmethod def forward(ctx, input): """ 该自定义函数作用是 …

Pytorch dataloader加载数据很慢

现象 写了个模型,训练速度很慢,发现大部分时间都花在了加载数据的过程中,训练时间反而不多 主机内存占用(已提交相当于总申请内存,其中包含交换分区的大小,其后面的数字为总可申请大小,其会根据申请情况动态扩容): 解决 num_workers DataLoader中设置参数 num_workers=3 效果: 主机内存占用: 测试过程中貌似有一次内存申请越来越多 …

记录pytorch遇到的一些问题

Embedding层的 num_embeddings 设置过小 遇到了两个报错都是这个原因导致的: 报错一: RuntimeError: CUDA error: device-side assert triggered 报错二: RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR …

记一次模型训练时显存溢出的问题

出现的问题 写了一个Seq2Seq的中英翻译模型,使用Encoder-Decoder模式。训练时发现总是训练一段时间后就会报显存溢出的错误,训练终止。 根据报错信息可知,pytorch欲分配12.88G的显存,但我的显存只有4G,显然是不够的 寻找原因 从异常栈来看,报错问题出在我创建一个大小为 len(y) * batch_size * 30000 的 …