1. 安裝系統依賴
在Linux系統上安裝PyTorch前,需先安裝必要的系統依賴(以Debian/Ubuntu和RPM/CentOS為例):
sudo apt update && sudo apt install -y build-essential cmake git libopenblas-dev liblapack-dev libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-pip
,安裝編譯工具、線性代數庫、圖像處理庫及Python開發環境。sudo yum install -y gcc-c++ cmake git openblas-devel lapack-devel libjpeg-turbo-devel libpng-devel libtiff-devel ffmpeg-devel python3-devel python3-pip
,完成類似依賴安裝。2. 安裝Python與pip
確保系統已安裝Python3(≥3.6)及pip3:
sudo apt install -y python3 python3-pip
sudo yum install -y python3 python3-pip
python3 --version
和pip3 --version
驗證版本,確認Python環境正常。3. 創建虛擬環境(推薦)
為避免項目依賴沖突,建議使用虛擬環境隔離PyTorch及其依賴:
python3 -m venv pytorch_env
創建虛擬環境,之后通過source pytorch_env/bin/activate
激活。wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
),然后運行bash Miniconda3-latest-Linux-x86_64.sh
并按提示安裝;安裝后通過conda create -n pytorch_env python=3.8
創建環境,conda activate pytorch_env
激活。4. 安裝PyTorch
根據硬件配置選擇安裝CPU版或GPU版PyTorch:
pip3 install torch torchvision torchaudio
conda install pytorch torchvision torchaudio cpuonly -c pytorch
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
(將cu118
替換為實際CUDA版本,如cu117
、cu111
)conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
(同樣替換cudatoolkit
版本)。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代碼,提升開發效率。