手动配置conda 镜像并安装GPU版Pytorch成功
·
忙了半天,即使按照豆包上说的自动配置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 秒
更多推荐


所有评论(0)