在一条线上提供一个API模型。
pytorch-deplo的Python项目详细描述
火炬部署
安装
要安装:
pip install pytorch-deploy
您还必须安装torch
和torchvision
。你可以这样做here。在
使用
部署预先训练的ResNet-18:
^{pr2}$默认主机和端口为0.0.0.0:8000。在
端点
您可以访问位于主机:端口/文档“在运行python server.py
之后。在
/预测
请求正文:application/json 响应体:application/json
下面是一个如何使用/predict端点的示例。在
importrequestsfromPILimportImageimportnumpyasnpfromtorchvisionimporttransformsim=Image.open('palm.jpg')resize=transforms.Resize(224)to_tensor=transforms.ToTensor()normalize=transforms.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])tensor=normalize(to_tensor(resize(im))).unsqueeze(0)body={"inputs":tensor.tolist()}r=requests.post("http://127.0.0.1:8000/predict",json=body)response=r.json()output=np.array(response["output"])
注意您需要在请求JSON主体中的字段“inputs”下发送模型输入。 如果你想在请求中发送一个张量或者numpy数组,你需要先把它变成一个列表。在
模型的输出将在响应JSON主体的“output”字段下。在
回复格式示例:
response={"output":(yournumpyarrayasalisthere)}
/预测图像
请求正文:多部分/表单数据 响应体:application/json
下面是一个如何使用/predict_image端点的示例。在
importrequestsimportnumpyasnpfilename="../palm.jpg"files={'file':open(filename,"rb")}r=requests.post("http://127.0.0.1:8000/predict_image",files=files)response=r.json()output=np.array(response["output"])print(np.argmax(output))
文件以内容类型“multipart/formdata”上载。这只需要在客户端完成最少的工作,并且与标准的文件上载请求兼容。在
文件
torch_deploy.deploy(model:nn.Module,pre:Union[List[Callable],Callable]=None,post:Union[List[Callable],Callable]=None,host:str="0.0.0.0",port:int=8000,ssl_keyfile:str=None,ssl_certfile:str=None,ssl_ca_certs:str=None,logdir:str="./deploy_logs/",inference_fn:str=None)
轻松地将Pythorch模型转换为API以供生产使用。在
model
:一个亚类的PyTorch模型nn.模块而且是可以赎回的。用于API的模型。在pre
:要应用于输入的函数或函数列表。在post
:在作为响应发送之前应用于模型输出的函数或函数列表。在host
:为模型提供服务的地址。在port
:为模型提供服务的端口。在ssl_keyfile
,ssl_certfile
,ssl_ca_certs
:传递给uvicorn的SSL配置logfile
:Filename创建一个文件,该文件存储API的每次访问的日期、ip地址和输入大小。如果None
,则不会创建任何文件。在inference_fn
:应该为输入调用的模型方法的名称。如果None
,则模型本身将被调用(如果model
是nn.Module
,那么它相当于调用model.forward(inputs)
)。在
示例
examples/目录中有一些示例代码。在
目前正在进行中
仍在使用OAuth2登录系统,该系统需要正确的用户凭据才能使用torch deploy。在
依赖关系
torch, torchvision, fastapi, uvicorn, requests, numpy, pydantic
- 项目
标签: