torchserve使用-注册模型设置参数(二)

目录

1、自定义处理程序

2、托管多个模型

3、模型接口

3.1、添加注册新模型

3.2、查看是否注册成功

3.3、查看注册模型基本信息

3.4、设置注册模型参数

3.5、使用以下代码注销模型

3.6、模型版本控制

4、记录和指标


1、自定义处理程序

torch-model-archiver使用默认处理程序进行初始化,预处理和后处理。如果您具有自定义模型或想要引入自定义逻辑以扩展默认处理程序,则仍可以编写自定义处理程序。有关受支持的默认处理程序的完整列表,请参见GitHub repo。有关编写自己的自定义处理程序的说明,请参见GitHub repo

2、托管多个模型

TorchServe提供了一个管理API,用于列出已注册的模型,将新模型注册到现有服务器,取消注册当前模型,增加或减少每个模型的工作人员数量,描述模型的状态,添加版本以及设置默认版本。Management API正在端口8081上侦听,并且默认情况下只能从localhost访问,但是您可以更改默认行为。

通过1,已经生成了分类、分割、检测模型。

ls model_store/
=>
densenet161.mar  densenet161_ts.mar  fcn_resnet_101.mar  maskrcnn.mar

要注册新模型,请完成以下步骤:

step1、首先启动服务,注册一个模型

torchserve --start --model-store model_store --models densenet161=densenet161.mar

step2、查询已注册的模型

curl "http://localhost:8081/models"

结果:

若,结果与期望值不一致,删除logs文件夹缓存即可。

3、模型接口

3.1、添加注册新模型

curl -X POST "http://localhost:8081/models?url=maskrcnn.mar"

打印结果:

{
  "status": "Model \"maskrcnn\" Version: 1.0 registered with 0 initial workers. Use scale workers API to add workers for the model."
}

3.2、查看是否注册成功

curl "http://localhost:8081/models"

输出:

3.3、查看注册模型基本信息

curl "http://localhost:8081/models/densenet161"

3.4、设置注册模型参数

curl "http://localhost:8081/models/maskrcnn"

与直接启动服务的densenet161不一样,未新模型分配进程数worker,因此请使用以下代码设置最小worker数:

curl -v -X PUT "http://localhost:8081/models/maskrcnn?min_worker=2"

打印:

再次查询状态:

curl "http://localhost:8081/models/maskrcnn"

结果:

如果模型托管在具有许多核心的CPU上,例如具有96个vCPU的c5.24xlarge EC2实例,则可以使用上述方法轻松扩展线程数。

3.5、使用以下代码注销模型

curl -X DELETE http://localhost:8081/models/fastrcnn/

3.6、模型版本控制

要对模型进行版本控制,请在调用时torch-model-archiver,将版本号传递给--version,请参见以下代码:

torch-model-archiver --model-name fastrcnn --version 1.0 ...

4、记录和指标

TorchServe使您可以轻松访问完全可自定义的日志指标。默认情况下,TorchServe将日志消息打印到stderr和stout。TorchServe使用log4j,您可以通过修改log4j属性来自 定义日志记录。

TorchServe也收集系统级的指标,如CPUUtilization,DiskUtilization在默认情况下,和其他人。您还可以使用指标API指定自定义指标。以下屏幕快照显示了从TorchServe请求推理时的默认日志输出。

上一节:torchserve使用-安装测试(一),下一节:torchserve使用-网络端访问(三)

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面我来给你一个使用torchserve进行PyTorch模型部署的示例。 首先,我们需要将PyTorch模型导出为TorchScript格式。假设我们有一个PyTorch模型文件`model.pth`,可以使用以下代码将其导出为TorchScript格式: ```python import torch # 加载PyTorch模型 model = torch.load('model.pth') # 将PyTorch模型导出为TorchScript格式 traced_model = torch.jit.trace(model, torch.randn(1, 3, 224, 224)) traced_model.save('model.pt') ``` 接下来,我们可以使用torchserve的命令行工具启动服务并加载模型。假设我们有一个TorchServe配置文件`config.properties`,内容如下: ``` inference_address=http://0.0.0.0:8080 management_address=http://0.0.0.0:8081 model_store=/path/to/model/store ``` 其中,`inference_address`和`management_address`分别指定了推理服务和管理服务的地址和端口,`model_store`指定了模型存储的路径。 我们可以使用以下命令启动torchserve服务并加载模型: ``` torchserve --start --model-name my_model --model-version 1.0 --max-workers 4 --model-store /path/to/model/store --ts-config config.properties ``` 其中,`--start`参数表示启动服务,`--model-name`和`--model-version`参数指定了模型的名称和版本号,`--max-workers`参数指定了工作线程数,`--model-store`参数指定了模型存储的路径,`--ts-config`参数指定了TorchServe配置文件的路径。 一旦服务启动,我们就可以使用HTTP请求来调用模型并获取预测结果。例如,可以使用以下Python代码向服务发送POST请求: ```python import requests import json import base64 from PIL import Image # 加载测试图片 img = Image.open('test.jpg') # 将图片转换为base64编码的字符串 img_str = base64.b64encode(img.tobytes()).decode('utf-8') # 构造请求数据 data = { 'data': img_str, 'content_type': 'application/json' } # 发送POST请求 response = requests.post('http://localhost:8080/predictions/my_model', data=json.dumps(data)) # 解析预测结果 result = json.loads(response.text) print(result) ``` 以上示例代码中,我们加载了一张测试图片`test.jpg`,将其转换为base64编码的字符串,并构造了一个包含图片数据和内容类型的请求数据。然后,我们向服务发送POST请求,并解析返回的预测结果。注意,请求的URL中包含了模型的名称`my_model`,这是在启动服务时指定的模型名称。 希望这个示例能帮助你更好地了解如何使用torchserve进行PyTorch模型的部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingbo1801

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值