在Linux系统上部署PyTorch前,需满足以下基础要求:
apt install python3 python3-pip安装);nvidia-smi命令检查驱动版本);build-essential(编译源码时可能需要)、git(源码安装时克隆仓库)等基础工具。PyTorch的安装主要分为CPU版本(无GPU加速)和GPU版本(支持CUDA加速),推荐通过conda(环境管理便捷)或pip(官方源稳定)安装。
conda create -n pytorch_env python=3.8 # 创建名为pytorch_env的环境,指定Python 3.8
conda activate pytorch_env # 激活环境
conda install pytorch torchvision torchaudio cpuonly -c pytorch
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install torch torchvision torchaudio
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
若需修改PyTorch源码或支持特定硬件,可从GitHub克隆仓库编译:
git clone --recursive https://github.com/pytorch/pytorch # 克隆仓库及子模块
cd pytorch
pip install -r requirements.txt # 安装依赖
python setup.py install # 编译安装
注:源码编译耗时较长,需提前安装C++编译工具链(如
gcc、cmake)。
安装完成后,通过Python代码验证PyTorch是否正常工作及GPU是否可用:
import torch
print("PyTorch版本:", torch.__version__) # 输出版本号
print("CUDA可用性:", torch.cuda.is_available()) # GPU版本应返回True
print("GPU设备数量:", torch.cuda.device_count()) # 查看可用GPU数量
若输出版本号且torch.cuda.is_available()返回True(GPU版本),则说明安装成功。
若需将PyTorch模型部署为服务或进行推理,可按以下步骤操作:
.pth文件):import torch
from torchvision.models import resnet50
model = resnet50(pretrained=True) # 加载预训练ResNet50
model.eval() # 设置为评估模式(禁用dropout/batchnorm)
from PIL import Image
import torchvision.transforms as transforms
# 图像预处理:转为Tensor并归一化
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 加载图像并预测
image = Image.open("test.jpg")
input_tensor = transform(image).unsqueeze(0) # 添加batch维度
with torch.no_grad(): # 禁用梯度计算
output = model(input_tensor)
print("预测结果:", output.argmax().item()) # 输出类别索引
from flask import Flask, request, jsonify
import torch
from torchvision.models import resnet50
app = Flask(__name__)
model = resnet50(pretrained=True)
model.eval()
@app.route('/predict', methods=['POST'])
def predict():
# 获取输入数据(假设为JSON格式的图像路径列表)
data = request.json['image_paths']
results = []
for path in data:
image = Image.open(path)
input_tensor = transform(image).unsqueeze(0)
with torch.no_grad():
output = model(input_tensor)
results.append(output.argmax().item())
return jsonify(results)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) # 监听所有IP的5000端口
启动服务后,可通过curl或Postman向http://<服务器IP>:5000/predict发送请求,获取预测结果。pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple设置;nvcc --version检查驱动支持的CUDA版本,选择对应PyTorch版本(如CUDA 11.8对应PyTorch 2.4.0+);--user参数安装到用户目录(如pip install --user torch),或通过虚拟环境隔离权限。