深度学习系列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,
     ):
  6. 接下来看一下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})

相关推荐
miofly几秒前
Kimi K3.1 Pro 跻身智能榜第四,开源权重模型逼近头部闭源水平
人工智能
行走的小派3 分钟前
Harmony输入法框架解析:IME架构、多模式输入引擎与语音识别链路
人工智能·架构·语音识别
UMI赋能企业7 分钟前
AI实战交流的提问模板:从业务描述到可分析的问题
人工智能·工作流·ai应用
2601_9620710011 分钟前
Claude 值不值得用?价格、缓存与 API 接入成本怎么算
人工智能·缓存
自养Agent12 分钟前
Agent Harness 从用到会造:prompt 不是问句,是控制面板
人工智能·大模型·llm·prompt
SeeweTek13 分钟前
设计仿真先行 · 工艺精益求精 · 磁场精准输出
人工智能·亥姆霍兹线圈·磁场发生装置·seewetek·磁控机器人·传感器检测
国科安芯18 分钟前
ASP4644系列抗辐射电源模块的国产化进程、供应链安全与产业生态综述
人工智能·物联网·安全·电池·电源芯片·低轨卫星·抗辐射
2601_9606312323 分钟前
从中药产线技改备案细节,看传统药企的“专精特新”路径
人工智能
SEO_juper25 分钟前
Node.js 全站死链检测工具:从 sitemap 出发一次找全 404
开发语言·人工智能·python·node.js·seo·外贸独立站
张彦峰ZYF28 分钟前
让 Agent 获得“手、脚与反射弧”: MHS 如何重构物理世界的长程自主化基础设施
人工智能·ai agent·mhs·可复用能力·治理、记忆、持久编排·工具路由和物理执行·长程agent五平面架构