当前位置: 首页 > news >正文

深度学习系列70:模型部署torchserve

1. 流程说明

ts文件夹下,
从launcher.py进入,执行jar文件。
入口为model_server.py的start()函数。内容包含:

  1. 读取args,创建pid文件
    在这里插入图片描述
  2. 找到java,启动model-server.jar程序,同时读取log-config文件,TEMP文件夹地址,TS_CONFIG_FILE文件
  3. 根据cpu核数、gpu个数,启动多进程。每个进程有一个socket_name和socket_type,执行model_service_worker.py,创建TorchModelServiceWorker类,并执行run_server方法。run_server不断执行handle_connection方法,handle_connection不断执行predict(cmd为I时)或者load_model(cmd为L时)任务。
  4. load_model可以返回service对象,而service可以执行predict函数。如果handler中间包含冒号,则用后面的function作为_entry_point,否则默认用handle函数作为_entry_point。
  5. service的定义如下。其中manifest是一个字典,记录在MAR包里面的MAR_INF/MANIFEST.json中,包含modelName,serializedFile,handler,modelVersion等信息。这些信息也是modelArchiver打包模型时需要的内容。
class Service(object):"""Wrapper for custom entry_point"""def __init__(self,model_name,model_dir,manifest,entry_point,gpu,batch_size,limit_max_image_pixels=True,metrics_cache=None,):
  1. 接下来看一下predict函数。首先是调用retrieve_data_for_inference方法获取input_batch,其格式为{parameter["name"]: parameter["value"]}。然后是调用ret = self._entry_point(input_batch, self.context),这里的_entry_point就是我们自己定义的handler.handle方法。默认的handle方法执行三步:
data_preprocess = self.preprocess(data)
output = self.inference(data_preprocess)
output = self.postprocess(output)

2. 运行

  1. 首先安装java,然后pip install torchserve torch-model-archiver
  2. 接着将模型和参数打包:torch-model-archiver --model-name test --version 1.0 --serialized-file test.torchscript.pt --handler handler_test.py --export-path model_store
  3. 启动服务torchserve --start --ncs --model-store model_store --models test.mar --disable-token-auth --ts-config config.properties
  4. 停止服务torchserve --stop
  5. 调用:
res = requests.post("http://127.0.0.1:8080/predictions/test",files = {"data":data})
http://www.lryc.cn/news/406838.html

相关文章:

  • 算法日记day 20(中序后序遍历序列构造二叉树|最大、合并、搜索二叉树)
  • 【科研】# Taylor Francis 论文 LaTeX template模版 及 Word模版
  • Linux网络配置及常见命令!
  • linux之shell脚本实战
  • 文件上传漏洞(ctfshow web151-161)
  • 小猪佩奇.js
  • 人工智能AI合集:Ollama部署对话语言大模型-网页访问
  • CentOS搭建Apache服务器
  • CDGA|数据治理:安全如何贯穿数据供给、流通、使用全过程
  • 32单片机bootloader程序
  • MongoDB - 数组更新操作符:$、$[]、$pop、$pull、$push、$each、$sort、$slice、$position
  • 多GPU并行处理[任务分配、进程调度、资源管理、负载均衡]
  • 项目部署到服务器
  • Idea2024 创建Meaven项目没有src文件夹
  • LeetCode 2766.重新放置石块:哈希表
  • 基于STM32的农业大棚温湿度采集控制系统的设计
  • go语言的命名规则
  • 新增ClamAV病毒扫描功能、支持Java和Go运行环境,1Panel开源面板v1.10.12版本发布
  • Windows通过命令查看mac : getmac
  • Android笔试面试题AI答之Android系统与综合类(1)
  • 【Android】数据存储方案——文件存储、SharedPreferences、SQLite数据库用法总结
  • 抖音矩阵管理系统功能说明:一站式掌握
  • 旅游卡使用指南及常见疑问解答
  • 【MySQL篇】Percona XtraBackup标准化全库完整备份策略(第三篇,总共五篇)
  • 背单词工具(C++)
  • 面试八股 | 数据库引擎 | InnoDB和myISAM的区别?
  • GEE计算五种植被指数(NDVI、EVI2、RVI、MTVI2、OSAVI)
  • C/S架构和B/C架构
  • 音乐曲谱软件Guitar Pro 8.2 for Mac 中文破解版
  • 浅聊Web Storage(localStorage 和 sessionStorage)、cookie的使用场合