linux

Linux系统如何支持PyTorch训练

小樊
52
2025-09-29 14:03:09
栏目: 智能运维

1. 安装系统依赖
在Linux系统上安装PyTorch前,需先安装必要的系统依赖(以Debian/Ubuntu和RPM/CentOS为例):

2. 安装Python与pip
确保系统已安装Python3(≥3.6)及pip3:

3. 创建虚拟环境(推荐)
为避免项目依赖冲突,建议使用虚拟环境隔离PyTorch及其依赖:

4. 安装PyTorch
根据硬件配置选择安装CPU版或GPU版PyTorch:

5. 验证PyTorch安装
安装完成后,通过Python代码验证PyTorch是否正常工作及是否支持GPU:

import torch
print("PyTorch版本:", torch.__version__)  # 输出版本号,确认安装成功
print("CUDA可用性:", torch.cuda.is_available())  # 若为True,说明GPU支持正常

torch.cuda.is_available()返回True,则表示GPU加速可用。

6. 配置CUDA环境(GPU用户必选)
若使用GPU版PyTorch,需确保CUDA环境变量正确配置,使PyTorch能找到CUDA库:

export PATH=/usr/local/cuda/bin:$PATH  # 添加CUDA二进制文件路径到PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH  # 添加CUDA库路径到LD_LIBRARY_PATH

可将上述命令添加到~/.bashrc~/.zshrc中,实现开机自动加载。

7. 编写并运行PyTorch训练脚本
创建Python脚本(如train.py),实现模型定义、数据加载、训练循环等核心逻辑。以下是一个简单的全连接神经网络训练示例:

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# 1. 准备数据(示例:随机生成数据)
inputs = torch.randn(1000, 10)  # 1000个样本,每个样本10个特征
labels = torch.randint(0, 2, (1000,))  # 1000个二分类标签
dataset = TensorDataset(inputs, labels)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

# 2. 定义模型
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Linear(10, 50)  # 输入层→隐藏层
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(50, 2)  # 隐藏层→输出层

    def forward(self, x):
        x = self.relu(self.fc1(x))
        x = self.fc2(x)
        return x

model = SimpleNet()

# 3. 定义损失函数与优化器
criterion = nn.CrossEntropyLoss()  # 交叉熵损失(适用于分类任务)
optimizer = optim.SGD(model.parameters(), lr=0.01)  # 随机梯度下降优化器

# 4. 训练循环
for epoch in range(10):  # 训练10个epoch
    for batch_inputs, batch_labels in dataloader:
        # 前向传播
        outputs = model(batch_inputs)
        loss = criterion(outputs, batch_labels)
        
        # 反向传播与优化
        optimizer.zero_grad()  # 清空梯度
        loss.backward()  # 反向传播计算梯度
        optimizer.step()  # 更新模型参数
    
    print(f"Epoch [{epoch+1}/10], Loss: {loss.item():.4f}")  # 打印当前epoch的损失

通过python3 train.py运行脚本,观察训练过程中的损失变化,确认模型是否正常训练。

8. 可选优化:使用Jupyter Notebook
若偏好交互式编程,可安装Jupyter Notebook:pip install notebook,然后运行jupyter notebook启动服务,在浏览器中编写和运行PyTorch代码,提升开发效率。

0
看了该问题的人还看了