PyTorch 2.0发布!来看看有没有你关注的问题

PyTorch 官方 发布了 2.0版本,来看看一些关注的问题吧:

1、什么是 PT 2.0?

2.0 是最新的 PyTorch 版本。PyTorch 2.0 提供了相同的 eager 模式,同时增加了 torch.compile 编译模式。这种编译模式有可能在训练和预测过程中提高模型运行速度。

2、为什么是 2.0 而不是 1.14?

PyTorch 2.0 就是计划中的 1.14 的版本。新版本发布了大量的新功能,且这些功能会改变使用 PyTorch 的方式,所以称之为 2.0。

3、如何安装 2.0?有什么额外要求吗?

CUDA 11.7

$ pip3 install numpy --pre torch[dynamo] torchvision torchaudio --force-reinstall --extra-index-url https://download.pytorch.org/whl/nightly/cu117

CUDA 11.6

$ pip3 install numpy --pre torch[dynamo] torchvision torchaudio --force-reinstall --extra-index-url https://download.pytorch.org/whl/nightly/cu116

CPU

$ pip3 install numpy --pre torch torchvision torchaudio --force-reinstall --extra-index-url https://download.pytorch.org/whl/nightly/cpu

4、2.0 代码是否向后兼容 1.X?

是的,使用 2.0 不需要有任何修改。另外使用一行代码 model = torch.compile(model) 就可以优化您的模型以使用 2.0 堆栈,并与其余的 PyTorch 代码一起平稳运行。

5、默认启用 2.0 吗?

No,默认不启用,必须通过函数调用优化模型,从而在 PyTorch 代码中显式启用 2.0。

6、如何迁移我的 PT1.X 代码到 PT2.0?

您的代码应按原样工作,无需任何迁移。如果要使用 2.0 中引入的新编译模式功能,则可以从使用一行 model = torch.compile(model) 优化模型开始, 如果模型运行速度快于 eager 模式,也可以使用它进行训练

import torch

def train(model, dataloader):
    model = torch.compile(model)
    for batch in dataloader:
        run_epoch(model, batch)

def infer(model, input):
    model = torch.compile(model)
    return model(**input)

7、是否有不应该使用 PT 2.0 的应用程序?

PT 2.0 的当前版本仍处于实验阶段。torch.compile 中对Dynamic shapes支持还为时过早,您还不应该使用它,请等到 2023 年 3 月稳定版 2.0 发布。

8、我的代码在运行 PyTorch 2.0 时有什么不同之处?

开箱即用,PyTorch 2.0 与 PyTorch 1.x 相同,您的模型以 eager 模式运行,即 Python 的每一行都一个接一个地执行。 在 2.0 中,如果使用model = torch.compile(model),模型在执行之前会经历 3 个步骤,即Graph acquisition、Graph lowering和Graph compilation

9、PyTorch 2.0为 PT 添加了哪些新组件?

TorchDynamo 从Python bytecode生成 FX Graphs 。 AOTAutograd 生成与 TorchDynamo 捕获的前向图相对应的反向图 PrimTorch 将复杂的 PyTorch 操作分解为更简单,更基本的操作 后端与TorchDynamo集成,将图形编译为可以在加速器上运行

10、2.0 目前支持哪些编译器后端?

默认和最完整的后端是 TorchInductor,TorchDynamo有很多后端列表,可以通过调用 torchdynamo.list_backends() 查找。

11、2.0 版本的分布式训练能力如何?

Compiled 模式模式下的 DDP 和 FSDP 运行速度比 FP32 中的 Eager 模式快 15%、AMP 精度快 80%。

12、为什么我的代码用 2.0 的 Compiled Model 运行变慢?

性能下降的最可能原因是graph breaks中断过多。例如,类似模型前向 trigger 中的输出语句这样的东西会触发 graph break

13、以前运行的代码在 2.0 中崩溃了,该如何调试?

参考一下对代码可能失败的位置进行分类,并打印有用的日志

https://pytorch.org/docs/master/dynamo/faq.html#why-is-my-code-crashing

展开阅读全文

页面更新:2024-03-29

标签:为时过早   堆栈   原样   编译器   模型   版本   模式   代码   操作   功能

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top