当前位置: 首页 > article >正文

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中,遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。


警告内容

警告 1: torch.cuda.amp.autocast

FutureWarning: `torch.cuda.amp.autocast(args...)` 
is deprecated. Please use `torch.amp.autocast('cuda', args...)` 
instead.   with autocast():

警告 2: torch.cuda.amp.GradScaler

FutureWarning: `torch.cuda.amp.GradScaler(args...)` 
is deprecated. Please use `torch.amp.GradScaler('cuda', args...)` 
instead.   scaler = GradScaler()

原因分析

在这里插入图片描述

根据 PyTorch 官方文档的更新说明,从 PyTorch 2.4 版本开始,torch.cuda.amp 模块中的部分 API 已被标记为弃用(deprecated)。为了统一 API 的设计风格,并支持更多的后端设备(如 CPU 和其他加速器)。

虽然目前这些警告并不会导致程序报错,但官方建议开发者尽快调整代码以适配最新版本的规范。


方法 1: 适配新 API

替换 autocastGradScaler

from torch.cuda.amp import autocast
with autocast():
    # Your code

from torch.cuda.amp import GradScaler
scaler = GradScaler()

改为:

from torch.amp import autocast
with autocast('cuda'):
    # Your code 

from torch.amp import GradScaler
scaler = GradScaler(device='cuda')

注意:如果需要支持多设备(如 CPU),可以将 'cuda' 替换为 'cpu' 或其他目标设备。


方法 2: 降级 PyTorch 版本

如果你暂时不想修改代码,可以选择降级到 PyTorch 2.3 或更低版本。可以通过以下命令安装指定版本的 PyTorch:

pip install torch==2.3

不过,这种方法并不推荐,因为旧版本可能会缺少一些新功能或性能优化。


方法3:懒得管

import warnings
warnings.filterwarnings("ignore", category=UserWarning)

两行代码解决一切(不推荐)

尽管这些警告不会立即导致程序运行失败,但为了确保代码的兼容性和未来的可维护性,建议按照官方文档的要求对代码进行调整。此外,定期关注 PyTorch 官方文档和技术博客,可以及时了解最新的 API 变更和最佳实践。

如果还有其他疑问,欢迎留言交流。 😊


http://www.kler.cn/a/542965.html

相关文章:

  • 路由过滤方法与常用工具
  • 【云安全】云原生-K8S- kubeconfig 文件泄露
  • 详解 JavaScript 中 fetch 方法
  • Java多线程——线程池的使用
  • SSM仓库物品管理系统 附带详细运行指导视频
  • Mybatis快速入门与核心知识总结
  • 手撕Transformer编码器:从Self-Attention到Positional Encoding的PyTorch逐行实现
  • MySQL主从复制过程,延迟高,解决应对策略
  • MS08067练武场--WP
  • IntelliJ IDEA Console控制台输出成json的配置方式
  • 4、k8s的pod详解
  • 公开免费的API集合
  • 嵌入式音视频开发(零)移植ffmpeg及推流测试
  • Spring Boot 配置 Mybatis 读写分离
  • 【机器学习案列】车辆二氧化碳排放量预测
  • Redis哨兵模式相关问题及解决方案
  • <tauri><rust><GUI>基于rust和tauri的图片显示程序(本地图片的加载、显示、保存)
  • Qt QOpenGLFunctions详解
  • AF3 drmsd函数解读
  • .Net使用EF Core框架如何连接Oracle
  • JVM-Java虚拟机
  • 在postman中设置环境变量和全局变量以及五大常用响应体断言
  • 【C#零基础从入门到精通】(十四)——面向对象三大特征C#封装详解
  • 二叉树、平衡二叉树、B树与B+树的区别与应用
  • redis的数据结构介绍(string
  • 心脏滴血漏洞复现(CVE-2014-0160)