![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch
*Lisen
这个作者很懒,什么都没留下…
展开
-
(真实有效)NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.原创 2024-07-19 15:30:33 · 146 阅读 · 0 评论 -
矩阵混乱度(熵值)代码计算
极端混乱度,熵值最大。最大值为log_2(dim),实例的dim为4,索引log_2(4) = 2。极端混乱度,熵值最小,最小值跟矩阵的维度无关,基本都为0。增加混乱度,熵值减小。原创 2024-04-19 14:13:59 · 612 阅读 · 0 评论 -
pytorch分布式训练,支持单机多卡,多机多卡
参考:https://zhuanlan.zhihu.com/p/373395654本人手撸简单的GitHub项目地址:https://github.com/Lisennlp/distributed_train_pytorch原创 2021-07-01 16:19:24 · 651 阅读 · 0 评论 -
apex和pytorch autocast混合精度训练速度和时间对比
众所周知,自从pytorch更新1.6版本之后,就引入了自家的混合精度训练模式(下面统称autocast),这种方法简单,只需要添加几行代码即可实现,可以说是pytorch爱好者的福音。autocast在面对主流的apex时,是完爆还是被吊打呢,请看下面分析:模型架构:Transformer-xl环境:python3.6.9 、torch1.7.1、cuda==10.11、即不用apex,也不用autocastbatch size = 1占用内存:7561M,每个batch的时间为285原创 2021-06-23 19:04:12 · 1663 阅读 · 8 评论 -
手动分开计算交叉熵每个位置的loss值
交叉熵loss函数交叉熵损失函数最后得到的是所有位置的平均loss,如果我们想要知道每个位置的loss多少,可以分开计算,如下例子所示:import torchfn = torch.nn.CrossEntropyLoss()logits = torch.tensor([[0.7595, 0.3526, 0.0479, 0.6684], [0.5149, 0.4248, 0.5377, 0.9349], [0.0801, 0.2237, 0.2990, 0.3178]原创 2020-10-13 17:52:01 · 658 阅读 · 0 评论 -
numpy, tensor cpu和tensor gpu运算时间比较
import timeimport torchfrom functools import wrapsdef timethis(func): @wraps(func) def wrapper(*args, **kwargs): start = time.perf_counter() r = func(*args, **kwargs) end = time.perf_counter() print('{}.{} : {}'原创 2020-07-07 18:28:02 · 2356 阅读 · 0 评论 -
pytorch 模型训练时多卡负载不均衡(GPU的0卡显存过高)解决办法(简单有效)
本文主要解决pytorch在进行模型训练时出现GPU的0卡占用显存比其他卡要多的问题。如下图所示:本机GPU卡为TITAN RTX,显存24220M,batch_size = 9,用了三张卡。第0卡显存占用24207M,这时仅仅是刚开始运行,数据只是少量的移到显卡上,如果数据在多点,0卡的显存肯定撑爆。出现0卡显存更高的原因:网络在反向传播的时候,计算loss的梯度默认都在0卡上计算。因此会比其他显卡多用一些显存,具体多用多少,主要还要看网络的结构。因此,为了防止训练由于 out of memory原创 2020-05-14 13:29:42 · 21948 阅读 · 49 评论 -
解决RuntimeError: reduce failed to synchronize: device-side assert triggered问题
首先,上一波报错信息:/pytorch/aten/src/THC/THCTensorIndex.cu:362: void indexSelectLargeIndex(TensorInfo<T, IndexType>, TensorInfo<T, IndexType>, TensorInfo<long, IndexType>, int, int, IndexTy...原创 2020-04-07 11:04:23 · 4222 阅读 · 4 评论 -
bert在预训练时的两个下游任务详解
一直很困惑bert在经过transformer的encoder之后的两个任务是怎么做的。比如:这两个任务的loss函数是什么?拿到encoder输出做了什么?很多人都是这么回答的:bert的loss就是下一句预测的分类loss和mask词的预测loss拿encoder输出直接算loss啊如果你继续问:那他们的loss都分别怎么算的?相信很多人都讲不出来。下面就详细在这阐...原创 2020-03-11 18:28:05 · 13400 阅读 · 28 评论 -
论文笔记 -《REALM: Retrieval-Augmented Language Model Pre-Training》
1、前言2019年可以说是语言模型快速发展的一年,BERT、XLNET、Albert等等模型不断刷新各个NLP榜单。在NLP榜单中比较引人注目的应该属于阅读理解型的任务,例如SQuAD等等。以SQuAD为例,模型需要阅读一段给定的文本,然后回答几个问题,问题如果存在答案,答案一定可以在文章中找到。所以说虽然叫阅读理解,但其实和序列标注有点相像,是在给定序列中标出答案段。而这篇论文针对的问题叫开放...原创 2020-03-06 16:30:07 · 3228 阅读 · 9 评论 -
手把手教你使用谷歌cloud tpu(从创建虚拟机到进行pytorch训练)
当然,要想用谷歌的东西,首先必须有一个谷歌的账号。如何创建谷歌账号不是本文的重点。本文是基于你有谷歌账号,并申请了免费的谷歌TPU的情况下进行的。如果申请了免费的TPU或者打算付费使用,请继续阅读。谷歌vm和tpu简单介绍vm其实就是虚拟机,相当于一个电脑,需要使用谷歌的电脑才能连接他们家的tpu节点。创建谷歌vm第一种方法:google cloud platform创建:地址:http...原创 2019-12-06 16:34:21 · 5657 阅读 · 0 评论 -
pytorch,numpy根据权重取值 -- np.random.multinomial,np.random.choice和torch.multinomial函数
np.random.multinomial(n, pvals, size=None) -> 取到的次数分布数组该函数表示根据一个概率数组,取若干次,得到一个次数分布数组参数说明:–n : 从矩阵中取值次数;–pvals:根据概率取值,这是一个数组,并且所有数据之和为1;–size:输出的维度,默认为1,即1 x pvals例子:a = np.random.rand(6)p...原创 2019-11-07 20:45:56 · 4526 阅读 · 0 评论 -
pytorch, numpy利用另一个数组的索引进行重排序,如torch.gather.......
import torchtorch.manual_seed(1)logits = torch.rand(3, 10)label_ids = torch.rand(3, 10)print(logits)print(label_ids)sorted_logits, indices = logits.sort(dim=1)new_label_ids = label_ids.gather(...原创 2019-11-05 17:08:01 · 6524 阅读 · 1 评论 -
pytorch的expand_as和expand
expand(*sizes) → Tensor参数:sizes的数组,可以是list,tuple,或者直接输入n, m例子:expand_as(other) → Tensor参数:tensorb = torch.arange(0, 6).view(6, 1, 1)print(b.shape) # torch.Size([6, 1, 1])c = torch.Tensor(6, 2...原创 2019-10-16 19:25:44 · 815 阅读 · 0 评论 -
pytorch中的scatter_add_函数解析
关于这个函数,很少博客详细的介绍。下面就我个人理解简单介绍下。函数:scatter_add_(dim, index_tensor, other_tensor) → 输出tensor参数:dim:表示需要改变的维度,但是注意,假如dim=1,并不是说self_tensor在dim=0上的数据不会改变,这个dim只是在取矩阵数据时固定了dim=1维的索引,不使用index_tensor矩阵中...原创 2019-10-16 17:13:52 · 12123 阅读 · 6 评论 -
numpy和pytorch实现简单的线性神经网络
numpy实现说明:一个全连接ReLU神经网络,一个隐藏层,没有bias。用来从x预测y,使用L2 Loss。h=W1Xh = W_1Xh=W1Xa=max(0,h)a = max(0, h)a=max(0,h)yhat=W2ay_{hat} = W_2ayhat=W2a这一实现完全使用numpy来计算前向神经网络,loss,和反向传播。forward passloss...原创 2019-10-15 13:34:02 · 526 阅读 · 0 评论