忙了半天,即使按照豆包上说的自动配置conda镜像源都没成功,最后按照如下所说手动配置,终于一下子成功了,特此记录下:

如果你想自己编辑配置文件:

1. 打开配置文件bash运行

conda config --show-sources

在C:\Users\Administrator文件夹中打开 .condarc 文件,进行编辑。

2. 把内容替换成下面这段(清华镜像)

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

为什么要这么做呢,因为若不使用清华的镜像, Conda 默认从国外服务器下载,创建环境过程中下载metadata可能会出现卡死的现象。接下来清理缓存:

conda clean -i

三、验证是否配置成功

bash运行

conda config --show channels

如果看到 https://mirrors.tuna.tsinghua.edu.cn 开头的链接,就说明成功了 ✅

四、创建环境,显卡版本12.5可以选择下面命令安装Pytorch

根据显卡要求,选择python3.11的环境

conda create -n AI_Env python=3.11 -y
conda activate AI_Env

pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1+cu118 -f https://download.pytorch.org/whl/torch_stable.html

安装完后使用以下代码进行测试GPU是否已经安装成功。

import torch
print(f"PyTorch 版本: {torch.__version__}")
print(f"CUDA 是否可用: {torch.cuda.is_available()}")
# 如果上面一行输出 True,可以再打印一下 GPU 名字
if torch.cuda.is_available():
    print(f"你的 GPU 是: {torch.cuda.get_device_name(0)}")

结果如下:

PyTorch 版本: 2.0.0+cu118
CUDA 是否可用: True
你的 GPU 是: NVIDIA GeForce GTX 1060 6GB

五、比较CPU和GPU的速度差异。

这个程序自动检测你的电脑有没有 NVIDIA GPU,有 GPU:devices = ["cpu", "cuda"],没 GPU:devices = ["cpu"],然后循环分别在 CPU / GPU 上跑测试

import torch
import torch.nn as nn
import time

# 定义一个只有三层的小型网络
class TinyNN(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(1000, 2000),
            nn.ReLU(),
            nn.Linear(2000, 2000),
            nn.ReLU(),
            nn.Linear(2000, 10)
        )
    def forward(self, x):
        return self.net(x)

# 生成随机数据:10000个样本,每个样本1000维特征
# 目标:10000个样本,每个样本对应10个类别的标签
X = torch.randn(10000, 1000)
y = torch.randint(0, 10, (10000,))

# 创建损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD
devices = ["cpu", "cuda"]
# 分别在 CPU 和 GPU 上测试
for device in devices:
    print(f"\n--- 训练网络于 {device.upper()} ---")
    
    # 将数据和模型移动到指定设备
    model = TinyNN().to(device)
    x_dev = X.to(device)
    y_dev = y.to(device)
    
    # 初始化优化器(每次测试都需要重新初始化)
    optimizer_dev = optimizer(model.parameters(), lr=0.01)
    
    # 预热
    if device == 'cuda':
        for _ in range(5):
            pred = model(x_dev)
            loss = criterion(pred, y_dev)
            optimizer_dev.zero_grad()
            loss.backward()
            optimizer_dev.step()
        torch.cuda.synchronize()
    
    # 正式计时,训练100轮
    start_time = time.time()
    for epoch in range(100):
        pred = model(x_dev)
        loss = criterion(pred, y_dev)
        optimizer_dev.zero_grad()
        loss.backward()
        optimizer_dev.step()
    if device == 'cuda':
        torch.cuda.synchronize()
    elapsed_time = time.time() - start_time
    
    print(f"训练100轮耗时: {elapsed_time:.4f} 秒")

运行后显示如下结果:

--- 训练网络于 CPU ---
训练100轮耗时: 114.3591 秒

--- 训练网络于 CUDA ---
训练100轮耗时: 9.6692 秒
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐