PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升
Posted 新智元
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升相关的知识,希望对你有一定的参考价值。
新智元编译
来源: github.com
编译:刘小芹
新智元启动 2017 最新一轮大招聘:。
新智元为COO和执行总编提供最高超百万的年薪激励;为骨干员工提供最完整的培训体系、高于业界平均水平的工资和奖金。加盟新智元,与人工智能业界领袖携手改变世界。
简历投递:jobs@aiera.com.cn HR 微信:13552313024
【新智元导读】PyTorch 发布了最新版,API 有一些变动,增加了一系列新的特征,多项运算或加载速度提升,而且修改了大量bug。官方文档也提供了一些示例。
torch.range 已被弃用,取代的是 torch.arange,这与 numpy 和 python 范围一致。
在稀疏张量上,contiguous 被重命名为 coalesce,coalesce 已经不合适。(注意 Sparse API 仍然是实验性而且在演变中,所以我们不提供向后兼容性)。
新的层和函数
torch.topk 现在支持所有 CUDA 类型,不仅是 torch.cuda.FloatTensor。
增加了一个 三路排序损失:nn.TripletMarginLoss
增加了每个实例的归一化层:nn.InstanceNorm1d, nn.InstanceNorm2d, nn.InstanceNorm3d
每个通道都被作为一个实例进行归一化处理,并进行均值消减和标准差。这在处理需要类似 BatchNorm 效果的较大的图像和较小的 mini-batches 时很有用。
增加了 nn.ZeroPad2d 和 nn.ConstantPad2d
增加了 nn.Bilinear,计算 Y = X1 * W * X2 + b
支持所有函数的负维
使用维度参数的每个函数也允许采取负维(negative dimensions)。负维将索引上个维度的张量。
例如:
这里,由于x具有3维,并且dim = -1,因此最后一个维度,即 dim = 3 被采用来得到平均值。
具有维度参数的函数有:
CUDA 支持稀疏张量,更快的 CPU sparse
新版本中 torch.sparse API 的一部分也支持 torch.cuda.sparse。* Tensor。
CUDA 支持的函数有:
利用这些稀疏函数,nn.Embedding 现在也在 CUDA 上支持 sparse(使用 sparse = True 标志)。
一种新的混合矩阵乘法 hspmm,将稀疏矩阵与密集矩阵相乘,并以混合张量的形式(即1个稀疏维度,1个密集维度)返回1个矩阵。
几个CPU稀疏函数具有更高效的实现。
这里有一个嵌入式分类器训练脚本,作者是@martinraison,我们可以对比 CUDA sparse 和 CUDA dense 的表现。()
named_parameters 过滤特定的参数类型
假设你想为模型除 biases 外的所有参数增加权重衰减(weight decay),怎样只获得模型的 biases?
这里我们引入了 nn.Module.named_parameters,它结合 named_children 和 named_modules 来帮助过滤模型的特定属性。
例子:过滤一个模型的 biases, weight_decay 为0
在适当的情况下,通过使用一些 thrust primitives,cumsum 和 cumprod 在GPU上显着加快了。
通过一个 fused kernel,LSTMCell 和 GRUCELL 在GPU上显着加快了。
CuDNN 的默认算法更改为 PRECOMP_GEMM,这是一个更快的算法,需要的工作空间很小。这个之前是 IMPLICIT_GEMM,占用的工作空间为0,但是慢很多。
通过将 batches 直接整到共享内存中,数据加载速度提升了 5%~10%。
通过分治法(sgesdd)在 GPU 上计算 SVD,加速了2~5倍。
常用的函数 expand 移到 C,在较小的模型中具有更好的性能。
Added contiguous checks on weight and bias for a large range of THNN functions
make the range of random_ correct when both lower and upper bound are specified
parallel_apply now can take arguments that are unhashable
Reshape grad correctly in the Dot function (inputs don't have to be 1D vectors...)
Added Variable.type_as
Unify argument names of norm and renorm to have p=norm_type, dim=dim
btrisolve works on CPU doubles
ipython autocomplete for torch.nn.Module fixed via implementing __dir__
device_ids can now be None again in F.data_parallel and will use all available GPUs
workaround cudnn bugs in BatchNorm (<5.1.10) and Dilation (6.0.20)
Padding bugfix in Conv1d CPU
remainder and cremainder are fixed for integer types
fix memory leak in btrisolve and getri
If nn.Module's source cant be retrieved because of any exception,
handle serialization to be non-fatal
collate_fn now retains the type of the numpy array
is_tensor and is_storage are now fixed for old-style Python classes
torch.cat now supports keyword arguments
CUDA collectives supported coalescing, but the inputs were all assumed
to be of the same Tensor type. This is fixed.
Fix a deadlock bug in autograd because of an underlying glibc bug in specific
linux distros (ArchLinux in particular)
abs is now fixed for char and short cuda types
fix torch.diag autograd when giving a dimension argument
fix grouped convolution on CPU when bias=False
expose dilated convolutions for ConvTranspose*d
Fix a bug in HingeEmbeddingLoss where margin can now be specified via kwargs
下载源码:
新智元招聘
职位:客户经理
职位年薪:12 - 25万(工资+奖金)
工作地点:北京-海淀区
所属部门:客户部
汇报对象:客户总监
工作年限:3 年
语 言:英语 + 普通话
学历要求:全日制统招本科
职位描述:
精准把握客户需求和公司品牌定位,策划撰写合作方案;
思维活跃、富有创意,文字驾驭能力强,熟练使用PPT,具有良好的视觉欣赏及表现能力,PS 能力优秀者最佳;
热情开朗,擅长人际交往,良好的沟通和协作能力,具有团队精神;
优秀的活动筹备与执行能力,较强的抗压能力和应变能力,适应高强度工作;
有4A、公关公司工作经历优先;
对高科技尤其是人工智能领域有强烈兴趣者加分。
岗位职责:
参与、管理、跟进上级指派的项目进展,确保计划落实。制定、参与或协助上层执行相关的政策和制度。定期向公司提供准确的市场资讯及所属客户信息,分析客户需求,维护与指定公司关键顾客的关系,积极寻求机会发展新的业务。建立并管理客户数据库,跟踪分析相关信息。
应聘邮箱:jobs@aiera.com.cn
HR微信:13552313024
新智元欢迎有志之士前来面试,更多招聘岗位请点击查看。
以上是关于PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升的主要内容,如果未能解决你的问题,请参考以下文章