PyTorch 1.5 发布了,此版本包括新增加了几个主要的?API 和一些改进、对 C++ 前端有重大更新、用于计算机视觉模型的“通道维持(channels last)”存储格式,以及用于模型并行训练的分布式 RPC 框架的稳定版本。
同时,此版本还提供了针对 hessian 和 jacobian 的 autograd 的新 API,以及一个受 pybind 启发的允许创建 Custom C++ Class(定制类)的 API。
C++ FRONTEND API (STABLE)
之前被标记为实验性质的?C++ 前端 API 现在已经与 Python 地位相当,并且总体特性已移至“稳定”状态。一些主要亮点包括:
‘CHANNELS LAST’ MEMORY FORMAT FOR COMPUTER VISION MODELS (EXPERIMENTAL)
用于计算机视觉模型的“通道维持(channels last)”存储格式,目前处于实验阶段。该格式的内存布局可以充分发挥性能高效的卷积算法和硬件(NVIDIA 的 Tensor Core、FBGEMM、QNNPACK)的能力。此外,它被设计为通过运算符自动传播,从而允许在内存布局之间轻松切换。
CUSTOM C++ CLASSES (EXPERIMENTAL)
此版本添加了一个新的 API torch.CutomClassHolder,用于将自定义 C++ 类同时绑定到 TorchScript 和 Python,该 API 的语法与 pybind11 几乎相同。它允许开发者向 TorchScript 类型系统和运行时系统暴露其 C++ 类及其方法,以便他们可以实例化和操作 TorchScript/Python 中的任意 C++ 对象。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(); });
它暴露了可以在 Python 和 TorchScript 中使用的类,如下所示:
@torch.jit.script def 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"]
DISTRIBUTED RPC FRAMEWORK APIS (NOW STABLE)
分布式 RPC 框架在 1.4 版本中以实验性形式出现,现在它已经处于稳定状态。此过程涉及许多增强功能和 bug 修复,以使分布式 RPC 框架总体上更可靠和更健壮。同时还添加了两个新特性,包括概要分析支持,在 RPC 中使用 TorchScript 函数以及一些易于使用的增强功能。
此外,从 1.5 开始,PyTorch 不再支持 Python 2,今后,对 Python 的支持将仅限于 Python 3,特别是 Python 3.5、3.6、3.7 和 3.8。
更多具体的细节见发布公告:https://pytorch.org/blog/pytorch-1-dot-5-released-with-new-and-updated-apis
原文标题:PyTorch 1.5 发布,C++ 前端重大更新、引入新存储格式提高性能
原文地址:https://www.oschina.net/news/115100/pytorch-1-5-released
简介: 背景自从五十年前关系型数据模型被发明出来后,凭借优秀的表达能力和清晰...
微信搜索【 脑子进煎鱼了 】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycj...
作者:小傅哥 博客: https://bugstack.cn 沉淀、分享、成长,让自己和他人都能...
PartialType 构造类型 Type ,并将它所有的属性设置为可选的。它的返回类型表示...
在传统的 web 优化中,我们可以采取压缩、拆包、动态加载等方法减少首屏资源大小...
简介: 对于运维工程师而言,如果要票选五大最抓狂运维支撑场景,花样繁多的各种...
默认情况下,HTML文档的格式与文档内容在浏览器窗口中显示的格式是不相关的,例...
8月17日开始, TOP云 举办了为期10天的.xyz精品保留 域名拍卖 会,目前,本次拍...
【一】知道居中元素的宽高 absolute + 负margin 代码实现 .wrapBox5{ width: 300...
在pc版网页( http://pc_url ) 上,添加: link rel=alternate media=only screen...