PyTorch 2.0 中设置默认使用 GPU 的方法

PyTorch 2.0 中设置默认使用 GPU 的方法

在 PyTorch 2.0 中,默认情况下仍然是使用 CPU 进行计算,除非明确指定使用 GPU。torch.set_default_device 是 PyTorch 2.0 引入的新功能,用于设置默认设备,使得所有后续张量和模块在没有明确指定设备的情况下,会被创建在这个默认设备上。这在代码中提供了一种更简洁的方式来指定设备,而无需在每次创建张量或模型时手动指定。

  1. 检查 PyTorch 版本

    确保使用的是 PyTorch 2.0 或更高版本:

    python 复制代码
    import torch
    print(torch.__version__)  # 必须是 2.0 或更高版本
  2. 检查 CUDA 是否可用

    在设置 GPU 为默认设备之前,确认 CUDA 可用性:

    python 复制代码
    print(torch.cuda.is_available())  # True 表示可用
  3. 设置默认设备为 GPU

    使用 torch.set_default_device 将默认设备设置为 GPU:

    python 复制代码
    import torch
    
    # 确保 CUDA 可用
    if torch.cuda.is_available():
        # 设置默认设备为 GPU
        torch.set_default_device('cuda')
        print("默认设备已设置为 GPU")
    else:
        print("CUDA 不可用,无法设置 GPU 为默认设备")
  4. 验证默认设备设置

    创建一个张量,验证其是否在 GPU 上:

    python 复制代码
    x = torch.tensor([1.0, 2.0, 3.0])
    print(x.device)  # 输出:cuda:0
  5. 模型自动加载到 GPU

    如果设置了默认设备,模型的参数和新建的张量会自动加载到 GPU:

    python 复制代码
    class MyModel(torch.nn.Module):
        def __init__(self):
            super().__init__()
            self.linear = torch.nn.Linear(10, 1)
    
        def forward(self, x):
            return self.linear(x)
    
    model = MyModel()
    print(next(model.parameters()).device)  # 输出:cuda:0
全局设置代码示例

以下代码展示如何在脚本中全局设置默认设备为 GPU:

python 复制代码
import torch

# 检查并设置默认设备
if torch.cuda.is_available():
    torch.set_default_device('cuda')
    print("默认设备已设置为 GPU")
else:
    raise RuntimeError("CUDA 不可用,请检查环境配置")

# 示例:自动使用 GPU 创建张量
x = torch.tensor([1.0, 2.0, 3.0])
print(f"x device: {x.device}")  # 输出:cuda:0

# 示例:自动将模型参数放到 GPU
model = torch.nn.Linear(5, 2)
print(f"Model parameters device: {next(model.parameters()).device}")  # 输出:cuda:0
注意事项
  1. 与设备显式管理的代码兼容性

    如果代码中显式指定了设备(如 tensor.to(device)),torch.set_default_device 不会影响这些张量。建议在全局设置后,尽量减少显式设备管理操作。

  2. 多 GPU 环境

    如果有多个 GPU,可以指定具体设备,比如 'cuda:1'。示例:

    python 复制代码
    torch.set_default_device('cuda:1')  # 使用第二块 GPU
  3. 性能调优

    默认将所有操作转移到 GPU 可能并不适合所有场景,尤其是小规模任务时,GPU 的初始化开销可能超过性能提升。根据需求灵活调整设备。

相关推荐
江瀚视野几秒前
多家银行向甲骨文断贷,巨头甲骨文这是怎么了?
大数据·人工智能
码界筑梦坊1 分钟前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
ccLianLian3 分钟前
计算机基础·cs336·损失函数,优化器,调度器,数据处理和模型加载保存
人工智能·深度学习·计算机视觉·transformer
asheuojj4 分钟前
2026年GEO优化获客效果评估指南:如何精准衡量TOP5关
大数据·人工智能·python
多恩Stone4 分钟前
【RoPE】Flux 中的 Image Tokenization
开发语言·人工智能·python
callJJ6 分钟前
Spring AI ImageModel 完全指南:用 OpenAI DALL-E 生成图像
大数据·人工智能·spring·openai·springai·图像模型
铁蛋AI编程实战8 分钟前
2026 大模型推理框架测评:vLLM 0.5/TGI 2.0/TensorRT-LLM 1.8/DeepSpeed-MII 0.9 性能与成本防线对比
人工智能·机器学习·vllm
23遇见9 分钟前
CANN ops-nn 仓库高效开发指南:从入门到精通
人工智能
SAP工博科技10 分钟前
SAP 公有云 ERP 多工厂多生产线数据统一管理技术实现解析
大数据·运维·人工智能
芷栀夏12 分钟前
CANN ops-math:异构计算场景下基础数学算子的深度优化与硬件亲和设计解析
人工智能·cann