Pytorch 0.3.0发布,实现多方面提速,增加对ONNX支持

摘要:2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch。一经发布,这款开源工具包就受到广泛关注和讨论,经过几个月的发展,目前 PyTorch 已经成为从业者最重要的研发工具之一。经过将近一年的发展,日前,迎来了 PyTorch 0.3.0 版本。

2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch。一经发布,这款开源工具包就受到广泛关注和讨论,经过几个月的发展,目前 PyTorch 已经成为从业者最重要的研发工具之一。经过将近一年的发展,日前,迎来了 PyTorch 0.3.0 版本。

Pytorch 0.3.0发布,实现多方面提速,增加对ONNX支持

根据官方文档的介绍,此次增加了多个函数和功能,多方面的性能均实现提升。

重大变更

0. 3 版本中删掉了 Variable.reinforce () 等随机函数,因为它们的功能有限,并且会影响到性能。设置随机函数的初衷是为了避免采样值的 book-keeping,在实际中,由于各种各样的原因,用户的代码中仍然会包括 book-keeping。他们引入了 torch.distributions 包来代替随机函数。

之前的代码如下:

probs = policy_network (state)

action = probs.multinomial ()

next_state, reward = env.step (action)

action.reinforce (reward)

action.backward ()

现在的代码如下:

probs = policy_network (state)

# NOTE: categorical is equivalent to what used to be called multinomial

m = torch.distributions.Categorical (probs)

action = m.sample ()

next_state, reward = env.step (action)

loss = -m.log_prob (action) * reward

loss.backward ()

新的功能

1、目前,有些损失函数能直接计算 mini-batch 中每个 sample 的损失值。

2、构建了一个 in-built Profiler,能对模型进行瓶颈分析,这个 Profiler 同时支持 CPU 和 CUDA 模型。

更多信息可以参见 http://pytorch.org/docs/0.3.0/autograd.html#profiler

3、增加 Higher order gradients 模块,支持如下层:

  • ConvTranspose, AvgPool1d, AvgPool2d, LPPool2d, AvgPool3d, MaxPool1d, MaxPool2d, AdaptiveMaxPool, AdaptiveAvgPool, FractionalMaxPool2d, MaxUnpool1d, MaxUnpool2d, nn.Upsample, ReplicationPad2d, ReplicationPad3d, ReflectionPad2d

  • PReLU, HardTanh, L1Loss, SoftSign, ELU, RReLU, Hardshrink, Softplus, SoftShrink, LogSigmoid, Softmin, GLU

  • MSELoss, SmoothL1Loss, KLDivLoss, HingeEmbeddingLoss, SoftMarginLoss, MarginRankingLoss, CrossEntropyLoss

  • DataParallel

4、优化器

  • optim.SparseAdam:能实现适用于稀疏张量的简单亚当算法
  • 优化器中增加了 add_param_group 函数,能在构建好的优化器中增加新的参数组。

除此之外,还增加了新的张量函数和功能,在新版本中,能通过 ONNX 将模型迁移到其他框架上。另外,在加速方面,重写 gpu kernel 之后,softmax 和 log_softmax 的速度能实现 4-256 倍的提升;在分布式 AllReduce 中,能实现 2.5-3 倍的性能提升;torch.norm 函数的 backward 能实现 1.5 倍的加速;pack_padded_sequence 的性能也有提升。

具体的介绍可以参加说明文档:https://github.com/pytorch/pytorch/releases/tag/v0.3.0

来自: 雷锋网

扩展阅读

TensorFlow 1.0正式发布 你需要知道的都在这里
化解谷歌的AI霸权,开发平台开始了生态围剿
Angular 4发布以及与React的深度对比
微软开源深度学习工具包CNTK更新2.3版,带来多重性能改进
近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)

为您推荐

AlloyTeam:致我们终将组件化的 Web (多图)
Linux命令行的艺术
FEX 技术周刊 - 2015/11/23
近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
jQuery设计思想

更多

Pytorch
facebook
IT业界