温馨提示×

centos如何部署pytorch服务

小樊
42
2026-10-23 23:46:04
栏目: 智能运维

在 CentOS 上部署 PyTorch 服务,通常分为 环境准备 → 模型服务化 → 部署运行 几个阶段。下面给你一套通用且可落地的方案,从简单到生产级。


一、基础环境准备(CentOS 7/8)

1. 系统更新

sudo yum update -y

2. 安装 Python(推荐 3.8+)

sudo yum install -y python3 python3-pip
python3 --version

3. 安装 CUDA(如有 GPU)

# 查看显卡
nvidia-smi
  • 有 GPU:安装对应版本 CUDA + cuDNN
  • 无 GPU:使用 CPU 版 PyTorch

二、安装 PyTorch

CPU 版本

pip3 install torch torchvision torchaudio

GPU 版本(示例 CUDA 11.8)

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

验证:

import torch
print(torch.__version__)
print(torch.cuda.is_available())

三、最简单的 PyTorch 服务(Flask)

1. 安装依赖

pip3 install flask

2. 示例服务 app.py

from flask import Flask, request, jsonify
import torch

app = Flask(__name__)

model = torch.jit.load("model.pt")  # 或 torch.load
model.eval()

@app.route("/predict", methods=["POST"])
def predict():
    data = request.json["input"]
    x = torch.tensor(data)
    with torch.no_grad():
        y = model(x)
    return jsonify({"result": y.tolist()})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)

3. 运行

python3 app.py

测试:

curl -X POST http://localhost:8080/predict \
  -H "Content-Type: application/json" \
  -d '{"input":[[1,2,3]]}'

四、生产级部署方案(推荐)

✅ 方案 1:FastAPI + Uvicorn(推荐)

pip3 install fastapi uvicorn
from fastapi import FastAPI
import torch

app = FastAPI()
model = torch.jit.load("model.pt")

@app.post("/predict")
def predict(data: list):
    x = torch.tensor(data)
    y = model(x)
    return {"result": y.tolist()}

运行:

uvicorn app:app --host 0.0.0.0 --port 8080

✅ 方案 2:TorchServe(官方生产方案)

安装

pip3 install torchserve torch-model-archiver

打包模型

torch-model-archiver \
  --model-name mymodel \
  --version 1.0 \
  --serialized-file model.pt \
  --handler image_classifier \
  --export-path model_store

启动服务

torchserve --start \
  --model-store model_store \
  --models mymodel=mymodel.mar

访问:

curl http://localhost:8080/predictions/mymodel -T test.jpg

✅ 方案 3:Docker 部署(最稳)

FROM pytorch/pytorch:2.1.0-cuda11.8-cudnn8-runtime

WORKDIR /app
COPY . /app
RUN pip install fastapi uvicorn

CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8080"]
docker build -t pytorch-service .
docker run -p 8080:8080 pytorch-service

五、后台运行 & 开机自启

nohup

nohup uvicorn app:app --host 0.0.0.0 --port 8080 &

systemd(推荐)

# /etc/systemd/system/pytorch.service
[Unit]
Description=PyTorch Service

[Service]
User=root
WorkingDirectory=/app
ExecStart=/usr/bin/python3 /app/app.py
Restart=always

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start pytorch
systemctl enable pytorch

六、常见坑

问题 解决
GLIBC 版本低 升级 CentOS 或用 Docker
显存不足 减小 batch / 用 CPU
并发低 用 FastAPI + 多 worker
模型加载慢 使用 TorchScript

七、推荐组合(总结)

✅ 学习 / 测试:Flask
✅ 生产 / API:FastAPI + Uvicorn
✅ 企业级:TorchServe / Docker


如果你愿意,可以告诉我:

  • ✅ CentOS 版本
  • ✅ 是否 GPU
  • ✅ 模型类型(CV / NLP / 自定义)
  • ✅ 是否要高并发

我可以直接帮你写 完整可运行部署方案。

0 踩