tongchenkeji 发表于:2023-6-9 15:29:130次点击 已关注取消关注 关注 私信 机器学习PAI使用pytorch2.0的话,编译或使用有啥注意事项说明么?[阿里云机器学习PAI] 暂停朗读为您朗读 机器学习PAI使用pytorch2.0的话,编译或使用有啥注意事项说明么? 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 机器学习PAI# 人工智能平台 PAI1410# 机器学习深度学习1219
飞云觅宙AM 2023-11-28 2:43:32 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
凌777AM 2023-11-28 2:43:32 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用户支持群”
阿里云机器学习平台是构建在阿里云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用户支持群”