PyTorch 1.0发布,JIT、全新的分布式库、C++前端

摘要:JIT(Just-In-Time)是一组编译工具,用于弥合 PyTorch 研究与生产之间的差距。它允许创建可以在不依赖 Python 解释器的情况下运行的模型,并且可以更积极地进行优化。使用程序注解可以将现有模型转换为 PyTorch 可以直接运行的 Python 子集 Torch Script。模型代码仍然是有效的 Python 代码,可以使用标准的 Python 工具链进行调试。

Python 张量与动态神经网络 PyTorch 1.0 发布了。

PyTorch 1.0发布,JIT、全新的分布式库、C++前端

此版本的主要亮点包括 JIT 编译、全新并且更快的分布式库与 C++ 前端等。

JIT 编译器

JIT(Just-In-Time)是一组编译工具,用于弥合 PyTorch 研究与生产之间的差距。

它允许创建可以在不依赖 Python 解释器的情况下运行的模型,并且可以更积极地进行优化。使用程序注解可以将现有模型转换为 PyTorch 可以直接运行的 Python 子集 Torch Script。模型代码仍然是有效的 Python 代码,可以使用标准的 Python 工具链进行调试。

PyTorch 1.0 提供了 torch.jit.trace 和 torch.jit.script 两种方式使现有代码与 JIT 兼容。一经注解,Torch Script 代码便可以被积极地优化,并且可以被序列化以在新的 C++ API 中使用,并且 C++ API 不依赖于 Python。

# Write in Python, run anywhere!
@torch.jit.script
def RNN (x, h, W_h, U_h, b_h):
  y = []
  for t in range (x.size (0)):
    h = torch.tanh (x[t] @ W_h + h @ U_h + b_h)
    y += [h]
  return torch.stack (y), h

全新并且更快的分布式库

torch.distributed 软件包和 torch.nn.parallel.DistributedDataParallel 模块采用了重新设计的全新分布式库,亮点包括:

  • 新的 torch.distributed 是性能驱动的,并且对所有后端完全异步操作,包括:Gloo、NCCL 和 MPI。

  • 显着的分布式数据并行性能改进,尤其适用于网络较慢的主机,如基于以太网的主机。

  • 为 torch.distributed 包中的所有分布式集合操作添加异步支持。

  • 在 Gloo 后端添加了一些 CPU 操作:send、recv、reduce、all_gather、gather 与 scatter。

  • 在 NCCL 后端添加 barrier 操作。

  • 在 NCCL 后端添加 new_group 支持。

C++ 前端

C++ 前端是 PyTorch 后端的纯 C++ 接口,它遵循已建立的 Python 前端的 API 和体系结构,旨在实现高性能、低延迟和裸机 C++ 应用的研究。它提供了 torch.nn、torch.optim、torch.data 和 Python 前端的其它组件的等价物。下边是两种语言前端的简单比较:

python

import torch
model = torch.nn.Linear (5, 1)
optimizer = torch.optim.SGD (model.parameters (), lr=0.1)
prediction = model.forward (torch.randn (3, 5))
loss = torch.nn.functional.mse_loss (prediction, torch.ones (3, 1))
loss.backward ()
optimizer.step ()

C++

#include <torch/torch.h>

torch::nn::Linear model (5, 1);
torch::optim::SGD optimizer (model->parameters (), /*lr=*/0.1);
torch::Tensor prediction = model->forward (torch::randn ({3, 5}));
auto loss = torch::mse_loss (prediction, torch::ones ({3, 1}));
loss.backward ();
optimizer.step ();

注意,目前 C++ API 还处于 unstable 阶段。

此外还有一系列更新信息,详情查看发布公告

下载地址:

来自: 开源中国社区

扩展阅读

从Google Trends,看各大深度学习框架使用热度
Pytorch 0.3.0发布,实现多方面提速,增加对ONNX支持
进化策略入门:最优化问题的另一种视角
吴恩达专访LeCun:在神经网络的寒冬,我也坚信它终会重回公众视野
年度最佳硬件、软件、开发工具和云服务

为您推荐

10个最佳的HTML5代码段,以简化您的开发任务
基于 Bootstrap 的 UI 扩展:StyleBootstrap
最全面的前端开发指南
50个值得收藏的实用CSS代码片段
20个你应该知道的有用HTML5代码段

更多

PyTorch
开源软件