PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升

Posted 新智元

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升相关的知识,希望对你有一定的参考价值。

  新智元编译  

来源: github.com

编译:刘小芹

新智元启动 2017 最新一轮大招聘:

新智元为COO和执行总编提供最高超百万的年薪激励;为骨干员工提供最完整的培训体系、高于业界平均水平的工资和奖金。加盟新智元,与人工智能业界领袖携手改变世界。

简历投递:jobs@aiera.com.cn    HR 微信:13552313024


【新智元导读】PyTorch 发布了最新版,API 有一些变动,增加了一系列新的特征,多项运算或加载速度提升,而且修改了大量bug。官方文档也提供了一些示例。



API 改变


  • torch.range 已被弃用,取代的是 torch.arange,这与 numpy 和 python 范围一致。

  • 在稀疏张量上,contiguous 被重命名为 coalescecoalesce 已经不合适。(注意 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)。负维将索引上个维度的张量。


例如:


PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升


这里,由于x具有3维,并且dim = -1,因此最后一个维度,即 dim = 3 被采用来得到平均值。


具有维度参数的函数有:


PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升


CUDA 支持稀疏张量,更快的 CPU sparse


新版本中 torch.sparse API 的一部分也支持 torch.cuda.sparse。* Tensor


CUDA 支持的函数有:


PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升


利用这些稀疏函数,nn.Embedding 现在也在 CUDA 上支持 sparse(使用 sparse = True 标志)。


一种新的混合矩阵乘法 hspmm,将稀疏矩阵与密集矩阵相乘,并以混合张量的形式(即1个稀疏维度,1个密集维度)返回1个矩阵。


几个CPU稀疏函数具有更高效的实现。


这里有一个嵌入式分类器训练脚本,作者是@martinraison,我们可以对比 CUDA sparse 和 CUDA dense 的表现。(


PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升


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,在较小的模型中具有更好的性能。


Bug 修复


  • 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 年

语  言:英语 + 普通话

学历要求:全日制统招本科


职位描述:


  1. 精准把握客户需求和公司品牌定位,策划撰写合作方案;

  2. 思维活跃、富有创意,文字驾驭能力强,熟练使用PPT,具有良好的视觉欣赏及表现能力,PS 能力优秀者最佳;

  3. 热情开朗,擅长人际交往,良好的沟通和协作能力,具有团队精神;

  4. 优秀的活动筹备与执行能力,较强的抗压能力和应变能力,适应高强度工作;

  5. 有4A、公关公司工作经历优先

  6. 对高科技尤其是人工智能领域有强烈兴趣者加分。

岗位职责:


参与、管理、跟进上级指派的项目进展,确保计划落实。制定、参与或协助上层执行相关的政策和制度。定期向公司提供准确的市场资讯及所属客户信息,分析客户需求,维护与指定公司关键顾客的关系,积极寻求机会发展新的业务。建立并管理客户数据库,跟踪分析相关信息。


应聘邮箱:jobs@aiera.com.cn 

HR微信:13552313024

新智元欢迎有志之士前来面试,更多招聘岗位请点击查看。




以上是关于PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升的主要内容,如果未能解决你的问题,请参考以下文章

最新PyTorch0.4.0教程01PyTorch的动态计算图深入浅出

JAVA 8 新特性

2020年最新JDK14新特新课程高清完整资源

php7新特新

java8新特性学习六(新时间日期API)

java8新特性学习六(新时间日期API)