使用FastAPI和Docker为PyTorch模型提供服务

使用FastAPI和Docker为PyTorch模型提供服务的方法

SpaceX在Unsplash上的照片

学习如何开发完整的机器学习服务

简介

个人机器/深度学习项目的工作非常有趣。在晚上,面对电脑,您能编写自己喜欢的代码,阅读有趣的论文,而且没有任何需要满足的截止日期。我们都知道,编程只有在不为工作而编写的情况下才好!😂

无论如何,即使这只是个人项目,当其他人开始使用您所做的东西时,最大的满足感就产生了。因此,您需要将自己的模型提供给他人,并学习正确的工具来实现。在本文中,我将向您展示如何使用PyTorchFastAPIDocker提供Deep Learning模型的服务。

作者提供的图片

使用FastAPI设置服务器

首先,我们创建一个计算机视觉模型。该模型将能够识别猫的图像和鱼的图像。为此,我们采用预训练的ResNet50类型的网络,并更改最后的分类层,以使输出结果为二进制。

我将以下代码放入一个名为model.py的文件中

from torchvision import modelsimport torch.nn as nnCatfishClasses = ["猫", "鱼"]CatfishModel = models.resnet50()CatfishModel.fc = nn.Sequential(    nn.Linear(CatfishModel.fc.in_features, 500),    nn.ReLU(),    nn.Dropout(),    nn.Linear(500, 2))

现在,我们使用FastAPI实例化服务器,客户端可以连接到该服务器,并请求我们的模型进行预测。

from PIL import Imagefrom torchvision import transformsimport torchimport osfrom fastapi import FastAPIfrom fastapi.responses import JSONResponsefrom .model import CatfishModel, CatfishClassesfrom io import BytesIOfrom fastapi import HTTPExceptionimport requestsapp = FastAPI()def open_image(image_path):    # 在此处添加任何必要的图像预处理逻辑    image = Image.open(image_path)    return imagedef load_model():    return [email protected]("/")def status():    return {"status"…