赞
踩
近日,PyTorch 发布了 PyTorch 1.13 版本,本次新版发布主要包含以下亮点:
随着 PyTorch 1.13 的发布,MMCV 从 1.7.0 版本也开始为 PyTorch 1.13 提供预编译包,并且提供了 macOS 的预编译包,欢迎大家安装使用:
pip install -U openmim
mim install mmcv-full
MMCV GitHub 主页:https://github.com/open-mmlab/mmcv
在发布 PyTorch 1.13 版本的同时,还对 PyTorch 相关库进行了一系列改进,此次 PyTorch 库的更新包括:
受限于篇幅,本文将只对新增的几个 PyTorch 库进行展开介绍:TorchEval,torch::deploy 和 TorchSnapshot。
TorchEval 是 PyTorch 新发布的一个评测库,具有以下特点:
TorchEval 中的评测指标提供了两种使用方式,分别是基于类的接口和函数式的接口。函数式的接口可以在 torcheval.metrics.functional
中找到,在使用单个进程评测时使用函数式接口比较方便。当需要多进程评测时候,应该使用 statefull 的类接口,以支持多进程之间的状态同步。
目前 TorchEval 已经支持了一些基础常用的分类、回归和排序的评测指标,并且提供了单进程和多进程评测的示例。
torch::deploy(MultiPy)是一个 C++ 库,使你能够在生产环境中运行 Eager 模式的 PyTorch 模型,而无需对模型进行任何修改以支持导出可部署的静态图。
Python 已经成为训练深度神经网络广泛使用的语言,然而当模型被用于推理时,它们通常被从 Python 程序中提取为 TensorFlow Graph 或 TorchScript,以满足推理的性能要求以及方便打包。
但是这个提取过程在 PyTorch 中可能很耗时,这阻碍了快速的原型设计。 MultiPy 展示了如何能够在使用 Python 进行推理的同时,满足性能要求和打包限制。
MulitPy 定义了一种新的模型容器格式,其中包含本地 Python 代码和数据。这种方法不需要模型的静态图提取步骤,简化了模型部署的过程,并使之更容易整合现有的 Python 库。特别的是,MultiPy 提出了一种在单个进程中使用多个 Python 解释器的方法,摆脱 Python GIL 的限制以实现可扩展的推理。
MultiPy 在 GitHub 上的一些流行的 PyTorch 模型上进行了评估,展示了它们如何被打包成推理格式,并与 TorchScript 比较了它们的性能。对于较大的模型,MultiPy 打包的 Python 模型的性能与 TorchScript 相同,而对于较小的模型,多解释器方法确保推理仍然是可扩展的。
如下伪代码展示了如何使用 torch::deploy 调用 Python 模型进行推理:
torch::deploy::InterpreterManager manager(4);
// access one of the 4 interpreters
auto I = manager.acquireOne();
// run infer from your_model.py
I.global("your_model", "infer")({at::randn({10, 240, 320})});
TorchSanpshot 是一个为 PyTorch 应用专门开发的 checkpoint 工具,设计时考虑到了大型、复杂的分布式工作负载。具有以下特点:
此次 PyTorch 1.13 的更新,除了 PyTorch 本身 API 的变化以及新 Feature 的增加以外,也有许多 PyTorch 库也进行了更新。这些 PyTorch 库涉及领域从视觉、语音到推荐算法和多模态,从评测、数据工具到 checkpoint 和部署工具。这些 PyTorch 库的更新表明,PyTorch 正专注于在许多领域开发通用和可扩展的 API,使社区更容易在 PyTorch 上构建生态系统项目。
本次提到的更新中,关于部署工具的更新有两个,分别是 Torch-TensorRT 新增 torch.fx 前端,和 torch::deploy(MultiPy)Beta 版本的发布。
PyTorch 由于其动态图的特性,在模型部署方面天然的弱于拥有静态图特性的深度学习框架。PyTorch 一直在尝试寻找好的解决方法,目前可以看到在动态图静态化方面,已经有 TorchScript 和 torch.fx 两个方案。而 MultiPy 或许是提出了另外一个思路,跳过动态图静态化这一步,直接将 Python 程序部署推理,期待 MultiPy 后续的发展。
另外本次 TorchEval 的发布也是一大亮点,截止目前,今年已经有三个开源的算法评测库发布,按照时间顺序分别是 huggingface/evaluate,pytorch/torcheval 和 open-mmlab/mmeval,再加上更早时候的 Lightning-AI/metrics,目前已有四个专注于算法评测的工具库。随着模型训练工具链逐步完善,模型评测工具链的价值也被大家所重视。
在这些开源评测库之中,OpenMMLab 开源的 MMEval 定位为统一开放的跨框架算法评测库。与 TorchEval 相比,MMEval 具有多框架支持的能力,并且提供了更为丰富和细分的评测指标,具体可以参考往期内容。MMEval 目前已支持 20+ 细分任务领域的评测指标,更多的评测指标正在火热添加中。同时我们也发布了一些为 MMEval 添加 Metric 的任务,欢迎大家参与:https://github.com/open-mmlab/mmeval/issues/50
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。