机器学习PAI使用pytorch2.0的话,编译或使用有啥注意事项说明么?[阿里云机器学习PAI]

机器学习PAI使用pytorch2.0的话,编译或使用有啥注意事项说明么?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 阿里云机器学习平台是构建在阿里云MaxCompute(原ODPS)计算平台之上,集数据处理、建模、离线预测、在线预测为一体的机器学习平台。

    PyTorch是一个非常有可能改变深度学习领域前景的Python库。用来提供一个具有灵活性的深度学习开发平台。PyTorch的工作流程非常接近Python的科学计算库——numpy。

    PyTorch使用了命令式/热切的范例。在构建一个图形时,每一行代码都定义了改图的一个组件。能在图形构建完成前,独立的对这些组件进行计算。这就是所说的“逐运行”方法。

    PyTorch提供了一个类似的借口,可以使用200个以上的数学运算。

    还可以在定义的PyTorch张量上执行各种矩阵运算。

    PyTorch使用了一种叫做自动微分的技术。它会有一个记录所有执行操作的记录器,之后再回放记录来计算我们的梯度。这一技术在构建神经网络时尤其有效,因为可以通过计算前路参数的微分来节省时间。

    PyTorch中用于数据加载的API设计的非常好,它的接口可以在数据集、采样器和数据加载器中指定。并且通过与TensorFlow(读取器、队列等)数据加载工具比较发现,PyTorch的数据加载模块非常容易使用。此外,PyTorch在构建神经网络时是无缝的,所以不必依赖像Keras这样的第三方高层库。

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

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

    开箱即用,PyTorch 2.0 与 PyTorch 1.x 相同,您的模型以 eager 模式运行,即 Python 的每一行都一个接一个地执行。 

    在 2.0 中,如果使用model = torch.compile(model),模型在执行之前会经历 3 个步骤,即Graph acquisition、Graph lowering和Graph compilation

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

    2.0 版本的分布式训练Compiled 模式下的 DDP 和 FSDP 运行速度比 FP32 中的 Eager 模式快 15%、AMP 精度快 80%。

    以前运行的代码在 2.0 中崩溃了,参考一下对代码可能失败的位置进行分类,并打印有用的日志

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

  2. 要关注下这个环境变量:TORCH_BLADE_CI_BUILD_TORCH_VERSION=2.0.0+cu117 ,我们CI脚本在:https://github.com/alibaba/BladeDISC/blob/main/.github/workflows/pytorch200_gpu.yml 也可以参考下。 此回答整理自“BladeDISC用户支持群”