以下是在Ubuntu上部署PyTorch模型的主要方法,步驟基于搜索資源整合:
sudo apt update && sudo apt upgrade
# Conda
conda create -n pytorch_env python=3.8
conda activate pytorch_env
# 或venv
python3 -m venv pytorch_env
source pytorch_env/bin/activate
pip install torch torchvision torchaudio
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
(需替換為實際CUDA版本)。.pt
或.pth
文件,例如:torch.save(model.state_dict(), 'model.pth')
import torch
from model import MyModel # 假設模型定義在此文件中
model = MyModel()
model.load_state_dict(torch.load('model.pth'))
model.eval()
# 示例輸入(需根據模型調整)
input_data = torch.randn(1, 3, 224, 224)
with torch.no_grad():
output = model(input_data)
print(output)
運行:python deploy.py
。pip install flask
app.py
:from flask import Flask, request, jsonify
import torch
from model import MyModel
app = Flask(__name__)
model = MyModel()
model.load_state_dict(torch.load('model.pth'))
model.eval()
@app.route('/predict', methods=['POST'])
def predict():
data = request.json['input'] # 假設輸入為JSON格式
input_tensor = torch.tensor(data).unsqueeze(0)
with torch.no_grad():
output = model(input_tensor)
return jsonify({'output': output.tolist()})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
python app.py
,通過HTTP請求調用。pip install gunicorn
,運行:gunicorn -w 4 -b 0.0.0.0:5000 app:app
(-w
指定進程數)。Dockerfile
:FROM pytorch/pytorch:latest
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
docker build -t pytorch-model .
docker run -p 5000:5000 pytorch-model
```。
pip install torchserve torch-model-archiver
scripted_model = torch.jit.script(model)
scripted_model.save('model.ts')
torchserve --start --model_name=my_model --model_path=/path/to/model.ts
。torch.onnx.export(model, input, 'model.onnx')
。curl
或Postman測試API接口:curl -X POST -H "Content-Type: application/json" -d '{"input": [1,2,3]}' http://localhost:5000/predict
參考來源: