在Ubuntu上部署PyTorch模型通常涉及以下几个步骤:
安装Python和PyTorch:
sudo apt update
sudo apt install python3 python3-pip
pip3 install torch torchvision torchaudio
如果不需要CUDA支持,可以使用CPU版本的PyTorch:pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
准备模型:
.pth
或.pt
格式保存。编写部署脚本:
import torch
from torchvision import transforms
from PIL import Image
# 加载模型
model = torch.load('path_to_your_model.pth')
model.eval() # 设置模型为评估模式
# 图像预处理
preprocess = 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('path_to_your_image.jpg')
input_tensor = preprocess(image)
input_batch = input_tensor.unsqueeze(0) # 创建一个mini-batch作为模型的输入
# 进行预测
with torch.no_grad():
output = model(input_batch)
# 处理输出
probabilities = torch.nn.functional.softmax(output[0], dim=0)
print(probabilities)
运行部署脚本:
python3 your_deployment_script.py
使用Web框架(可选):
from flask import Flask, request, jsonify
import torch
from torchvision import transforms
from PIL import Image
app = Flask(__name__)
# 加载模型
model = torch.load('path_to_your_model.pth')
model.eval()
# 图像预处理
preprocess = 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]),
])
@app.route('/predict', methods=['POST'])
def predict():
file = request.files['image']
image = Image.open(file.stream)
input_tensor = preprocess(image)
input_batch = input_tensor.unsqueeze(0)
with torch.no_grad():
output = model(input_batch)
probabilities = torch.nn.functional.softmax(output[0], dim=0).tolist()
return jsonify(probabilities)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
python3 your_flask_app.py
http://your_server_ip:5000/predict
来获取预测结果。通过以上步骤,你可以在Ubuntu上部署PyTorch模型,并根据需要进行扩展和优化。