PyTorch在Linux上的部署流程是怎样的
导读:一、前置准备 在Linux系统上部署PyTorch前,需满足以下基础要求: 操作系统:支持Ubuntu、CentOS、Deepin等主流Linux发行版; Python环境:推荐使用Python 3.7及以上版本(系统自带或通过apt i...
一、前置准备
在Linux系统上部署PyTorch前,需满足以下基础要求:
- 操作系统:支持Ubuntu、CentOS、Deepin等主流Linux发行版;
- Python环境:推荐使用Python 3.7及以上版本(系统自带或通过
apt install python3 python3-pip
安装); - 硬件要求:若使用GPU加速,需配备NVIDIA GPU并安装兼容的NVIDIA驱动(可通过
nvidia-smi
命令检查驱动版本); - 依赖工具:安装
build-essential
(编译源码时可能需要)、git
(源码安装时克隆仓库)等基础工具。
二、安装PyTorch
PyTorch的安装主要分为CPU版本(无GPU加速)和GPU版本(支持CUDA加速),推荐通过conda(环境管理便捷)或pip(官方源稳定)安装。
1. 使用conda安装(推荐新手)
- 创建虚拟环境:隔离项目依赖,避免包冲突。
conda create -n pytorch_env python=3.8 # 创建名为pytorch_env的环境,指定Python 3.8 conda activate pytorch_env # 激活环境
- 安装CPU版本:无需CUDA支持的基础版本。
conda install pytorch torchvision torchaudio cpuonly -c pytorch
- 安装GPU版本:需匹配CUDA版本(如CUDA 11.8),确保驱动兼容。
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
2. 使用pip安装(灵活适配)
- 安装CPU版本:直接通过PyTorch官方源安装。
pip install torch torchvision torchaudio
- 安装GPU版本:需指定CUDA Toolkit版本(如CUDA 11.8),从PyTorch官方whl仓库下载预编译包。
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
3. 源码编译安装(自定义需求)
若需修改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模型部署为服务或进行推理,可按以下步骤操作:
1. 准备模型
- 加载预训练模型(如ResNet)或加载自定义模型权重(
.pth
文件):import torch from torchvision.models import resnet50 model = resnet50(pretrained=True) # 加载预训练ResNet50 model.eval() # 设置为评估模式(禁用dropout/batchnorm)
2. 编写推理脚本
- 处理输入数据(如图像预处理)并进行预测:
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()) # 输出类别索引
3. 使用Web框架部署(对外提供服务)
- 通过Flask/FastAPI构建RESTful API,实现远程推理:
启动服务后,可通过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可通过
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
设置; - CUDA版本不匹配:通过
nvcc --version
检查驱动支持的CUDA版本,选择对应PyTorch版本(如CUDA 11.8对应PyTorch 2.4.0+); - 权限问题:使用
--user
参数安装到用户目录(如pip install --user torch
),或通过虚拟环境隔离权限。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PyTorch在Linux上的部署流程是怎样的
本文地址: https://pptw.com/jishu/725604.html