PyTorch 1.5上线:加入稳定C++前端,高级自动梯度API

PyTorch 1.5上线:加入稳定C++前端,高级自动梯度API,第1张

概述点击上方"程序员小乐"关注, 星标或置顶一起成长每天凌晨00点00分, 第一时间与你相约每日英文Neverexpect.Neverassume.Andneverdemand.Justletitbe.Ifit'smeanttobe,itwillhappen.不要期待,不要假想,不要强求,顺其自然,如果注定,便一定会发生。每日掏心话

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约

每日英文

Never expect. Never assume. And never demand. Just let it be. If it's meant to be, it will happen.

不要期待,不要假想,不要强求,顺其自然,如果注定,便一定会发生。

每日掏心话

千万不要被胜利冲昏头脑。得意忘形的人,常常会因一时的兴奋而失去理智,看不清眼前的形势和未来的趋势,这样势必会使他不再像以前那样努力,更不会像以前那样稳重。

来自:公众号 机器之心 | 责编:乐乐

程序员小乐(ID:study_tech) 第 853 次推文  图源:百度

往日回顾:史上最污技术解读,我竟然秒懂了

     

   正文   

在新版本中,Facebook 与 AWS 还合作共同推出了大规模生产级工具库 TorchServe。

今天,PyTorch 1.5 宣布上线,此版本主要包括几个新的 API 的添加和改进。新版 PyTorch 包括对 C++前端的重大更新,用于计算机视觉模型的「channels last」存储格式,以及用于模型并行训练的分布式 RPC 框架的稳定版本。该版本还提供了针对自动求导机制中黑塞和雅可比的新 API,以及受 pybind 启发,允许用户创建自定义 C++类的一个 API。另外,torch_xla 已可在 PyTorch 1.5 版中使用,并在 1.5 版本中进行了测试,可提供成熟的 Cloud TPU 体验。

版本说明:github.com/pytorch/pytorch/releases/tag/v1.5.0

主要变化

以下是 PyTorch 1.5 版本的主要变化

C++ 前端 API(稳定型)

现在 C++前端 API 与 Python 版同等丰富,之前实验性的功能都已移到「稳定版」中。主要亮点如下:

专为计算机视觉设计的「Channels last」储存格式(实验型)

「Channels last」储存布局解锁了使用高效卷积算法与硬件的能力。另外,它被设计为在众多运算中自动传播,使得用户能在不同储存布局间轻松切换。

自定义 C++类(实验型)

这次发布的版本中加入了 torch.CutomClassHolder 这一新的 API,能够将自定义的 C++类同时绑定到 TorchScript 和 Python 中。该 API 的用法几乎与 pybind11 相同,它允许用户将自定义的 C++类与方法暴露给 TorchScript 类型的系统,这使得用户能够从 TorchScript 和 Python 中实例化并 *** 纵任意 C++对象。

以下为一个官方给出的实例:

template <class T>struct MyStackClass : torch::CustomClassHolder {  std::vector<T> stack_;  MyStackClass(std::vector<T> init) : stack_(std::move(init)) {}  voID push(T x) {    stack_.push_back(x);  }  T pop() {    auto val = stack_.back();    stack_.pop_back();    return val;  }};static auto testStack =  torch::class_<MyStackClass<std::string>>("myclasses", "MyStackClass")      .def(torch::init<std::vector<std::string>>())      .def("push", &MyStackClass<std::string>::push)      .def("pop", &MyStackClass<std::string>::pop)      .def("size", [](const c10::intrusive_ptr<MyStackClass>& self) {        return self->stack_.size();      });

上述代码就暴露了一个类,用户可在 TorchScript 和 Python 中用如下方式调用:

@torch.jit.scriptdef do_stacks(s : torch.classes.myclasses.MyStackClass):    s2 = torch.classes.myclasses.MyStackClass(["hi", "mom"])    print(s2.pop()) # "mom"    s2.push("foobar")    return s2 # ["hi", "foobar"]

分布式 RPC 框架 API(稳定型)

分布式 RPC 框架在 1.4 版中作为实验性功能发布。当前版本涉及大量针对分布式 RPC 框架的可靠性与鲁棒性的功能强化以及错误修复,并加入了如性能调试支持、在 RPC 中使用 TorchScript 功能等一系列新功能。以下为该框架下各种 API 总览:

全新的高级 autograd API(实验型)

PyTorch 将包括 jacobian,hessian,jvp,vjp,hvp 和 vhp 在内的新函数导入到了 torch.autograd.functional 子模块中。这个特性建立在当前的 API 之上,允许用户轻松地执行这些函数。

不再支持 Python 2

从 1.5.0 开始,PyTorch 将不再支持 Python 2,具体来说是 Python 2.7。PyTorch 对 Python 的支持将仅限于 Python 3,特别是 Python 3.5、3.6、3.7 和 3.8(首先在 PyTorch 1.4.0 中启用)。

参考链接:pytorch.org/blog/pytorch-1-dot-5-released-with-new-and-updated-APIs/

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。

欢迎各位读者加入订阅号程序员小乐技术群,在后台回复“加群”或者“学习”即可。

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题汇集

如果世界上只有一种数据结构,那么我选择 hash

深入理解Spring的ImportSelector接口

Git 如何优雅地回退代码,用 reset 还是 revert ?

关注订阅号「程序员小乐」,收看更多精彩内容

嘿,你在看吗?

总结

以上是内存溢出为你收集整理的PyTorch 1.5上线:加入稳定C++前端,高级自动梯度API全部内容,希望文章能够帮你解决PyTorch 1.5上线:加入稳定C++前端,高级自动梯度API所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1185257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存