机器学习PAI使用pytorch2.0的话,编译或使用有啥注意事项说明么?
阿里云机器学习平台是构建在阿里云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
要关注下这个环境变量:TORCH_BLADE_CI_BUILD_TORCH_VERSION=2.0.0+cu117 ,我们CI脚本在:https://github.com/alibaba/BladeDISC/blob/main/.github/workflows/pytorch200_gpu.yml 也可以参考下。 此回答整理自“BladeDISC用户支持群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。