pytorch serve开始-Getting started

官网链接

Getting started — PyTorch/Serve master documentation

安装TorchServe和torch-model-archiver

安装依赖

注意::对于Conda,运行Torchserve需要Python >=3.8。

对于基于Debian的系统/ MacOS

  • CPU
python ./ts_scripts/install_dependencies.py
  • 对于使用Cuda 12.1的GPU。可选:cu92、cu101、cu102、cu111、cu113、cu116、cu117、cu118、cu121
python ./ts_scripts/install_dependencies.py --cuda=cu121


注意:PyTorch 1.9+不支持cu92和cu101。因此,在PyTorch 1.8.1之前,TorchServe只支持cu92和cu101。安装文件参考https://github.com/pytorch/serve.git

对于Windows系统

请参阅此处的文档。here.

  • 安装torchserve、torch-model-archiver和torch-workflow-archiver

conda 安装

注意:Windows不支持Conda包。请参阅此处的文档here.

conda install torchserve torch-model-archiver torch-workflow-archiver -c pytorch

Pip安装

pip install torchserve torch-model-archiver torch-workflow-archiver

模型服务

本节展示了一个使用TorchServe为模型提供服务的简单示例。要完成这个示例,您必须已经安装了TorchServe和model archiver。

要运行这个例子,克隆TorchServe仓库:

git clone https://github.com/pytorch/serve.git 

然后在存储库根目录的父目录中运行以下步骤。例如,如果您将存储库克隆到/home/my_path/serve,则从/home/my_path运行步骤。

存储模型

要使用TorchServe为模型提供服务,首先将模型归档为MAR文件。您可以使用模型归档程序来打包模型。您还可以创建模型存储来存储您的存档模型。

  1. 创建一个目录来存储模型。
mkdir model_store
  1. 下载一个训练好的模型。
wget https://download.pytorch.org/models/densenet161-8d451a50.pth
  1. 通过使用模型归档器来归档模型。extra-files参数使用了一个来自TorchServe仓库的文件,因此如果有必要,请更新路径。
torch-model-archiver --model-name densenet161 --version 1.0 --model-file ./serve/examples/image_classifier/densenet_161/model.py --serialized-file densenet161-8d451a50.pth --export-path model_store --extra-files ./serve/examples/image_classifier/index_to_name.json --handler image_classifier

有关模型归档器的更多信息,请参见Torch Model archiver for TorchServe

启动TorchServe服务模型

存档和存储模型后,使用torchserve命令为模型提供服务。

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

注意:如果你在运行TorchServe时指定了模型,它会自动将后端worker的数量扩展到等于可用vcpu的数量(如果你在CPU实例上运行)或可用GPU的数量(如果你在GPU实例上运行)。如果是具有大量计算资源(vcpu或gpu)的强大主机,这个启动和自动扩展过程可能需要相当长的时间。如果你想最小化TorchServe的启动时间,你应该避免在启动时间注册和扩展模型,并通过使用相应的管理API(Management API)将其移动到程序入口点,它允许更细粒度地控制分配给任何特定模型的资源)。

从模型中获得预测结果

要测试模型服务器,请向服务器的 predictions API发送请求。TorchServe通过gRPC和HTTP/REST支持所有的推理和管理api。

通过python客户端使用GRPC api

  • 安装grpc的python依赖:
pip install -U grpcio protobuf grpcio-tools
  • 使用proto文件生成推理客户端
python -m grpc_tools.protoc --proto_path=frontend/server/src/main/resources/proto/ --python_out=ts_scripts --grpc_python_out=ts_scripts frontend/server/src/main/resources/proto/inference.proto frontend/server/src/main/resources/proto/management.proto
  • 使用示例客户端gRPC python客户端运行inference
python ts_scripts/torchserve_grpc_client.py infer densenet161 examples/image_classifier/kitten.jpg

使用REST api

作为一个例子,我们将下载下面这只可爱的小猫

curl -O https://raw.githubusercontent.com/pytorch/serve/master/docs/images/kitten_small.jpg

然后调用预测地址

curl http://127.0.0.1:8080/predictions/densenet161 -T kitten_small.jpg

它将返回以下JSON对象

[{"tiger_cat": 0.46933549642562866},{"tabby": 0.4633878469467163},{"Egyptian_cat": 0.06456148624420166},{"lynx": 0.0012828214094042778},{"plastic_bag": 0.00023323034110944718}
]

所有的交互都将记录在logs/目录中,所以一定要查看它!

在你已经看到了使用TorchServe服务于深度学习模型是多么容易!你想知道更多吗(Would you like to know more?)

停止TorchServe

要停止当前运行的TorchServe实例,运行:

torchserve --stop

检查日志

所有与模型注册、管理、推理相关的输出到stdout的日志都记录在/logs文件夹中。

可以使用基准测试生成吞吐量或百分位精度等高级性能数据,并在报告中可视化。

调试处理程序代码

如果你想调试处理程序代码,可以只使用后端运行TorchServe,因此可以使用任何python调试器。你可以参考这里定义的一个例子(here)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hadoop】高可用集群搭建

知识目录 一、写在前面💕二、Zookeeper安装✨三、Hadoop配置✨四、Hadoop HA自动模式✨五、HA脚本分享✨七、结语💕 一、写在前面💕 大家好!这篇文章是我在搭建Hdfs的HA(高可用)时写下的详细笔记与感想,希望能帮助到大…

Notes数据直接在Excel中统计

大家好,才是真的好。 我希望你看过前面两篇内容《Domino REST API安装和运行》和《Domino REST API安装和运行》,因为今天我们正是使用REST API方式在Excel中查询和统计Notes数据。 不过首先你得知道一个OData协议,全名Open Data Protocol(…

布隆过滤器,Redis之 bitmap,场景题【如果微博某个大V发了一条消息,怎么统计有多少人看过了】

文章目录 一、什么是 bitmap1-1、Bitmap 相关命令二、bitmap 和 set 对比2-1、数据准备2-2、内存对比2-3、性能对比三、布隆过滤器3-1、理论主要作用如何将数据放到过滤器内呢?注意事项布隆过滤器 有两个重要的参数3-2、代码实现3-3、Java中的hash函数最近面试,面试官问了一个…

Windows系统Java开发环境安装

总结一下Java软件开发工程师常见的环境的安装,仅限Windows环境。 以下下载链接均来自官网,网络条件自己克服。 目录 1. JDKJDK Oracle 官网下载地址配置系统环境变量 2. Mavenapache maven 官网地址本地仓库和中央仓库配置配置系统环境变量 3. GitGit 官…

springboot3 liquibase SQL执行失败自动回滚,及自动打tag

一&#xff1a; 自动执行回滚&#xff0c; 已执行成功的忽略&#xff0c;新sql执行失败则执行新sql文件中的回滚sql pom.xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0&…

【工厂方法】设计模式项目实践

前言 以采集数据处理逻辑为例&#xff0c;数据采集分为不同种类如&#xff1a;MQTT、MODBUS、HTTP等&#xff0c;不同的采集数据有不同的解析处理逻辑。但总体解析处理步骤是固定的。可以使用工厂方法设计模式简化代码&#xff0c;让代码变得更加优雅。 代码实践 抽象类 总体…

分布式环境下的session 共享-基于spring-session组件和Redis实现

1、问题概述 不是所有的项目都是单机模式的&#xff0c;当一个项目服务的局域比较广&#xff0c;用户体量比较大&#xff0c;数据量较大的时候&#xff0c;我们都会将项目部署到多台服务器上&#xff0c;这些个服务器都是分布在不同的区域&#xff0c;这样实现了项目的负载和并…

Redis有序集合对象

一.编码 有序集合的编码可以是ziplist或者skiplist。 ziplist编码的有序集合对象使用压缩列表作为底层实现&#xff0c;每一个集合元素使用紧挨在一起的两个压缩列表节点来保存。第一个节点保存元素的成员(member)&#xff0c;而第二个元素则保存元素的分值(score)。 127.0.0.…

鸿蒙app获取文本控件按钮控件_修改控件名称_按钮触发事件_提示信息显示

鸿蒙app获取文本控件按钮控件_修改控件名称_按钮触发事件_ 点击启动&#xff1a;提示信息显示 package com.example.myapplication.slice;import com.example.myapplication.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; impor…

12.1电梯控制器——文档记录

《数字逻辑》实验报告 实验名称 项目三 电梯控制器设计 一、实验目的 设计一个多楼层的电梯控制器系统&#xff0c;并能在开发板上模拟电梯运行状态。可以利用按键作为呼叫按键&#xff0c;数码管显示电梯运行时电梯所在楼层&#xff0c;led灯显示楼层叫梯状态。 二、实…

太良心了!微软面向初学者,开源机器学习、数据科学、AI、LLM

大家好&#xff0c;推荐几个质量上乘且完全免费的微软开源课程&#xff0c;由粉丝小伙伴梳理&#xff0c;分享给大家。 文末可以加我们粉丝群 面向初学者的机器学习课程 ML for beginners banner 地址&#xff1a;https://microsoft.github.io/ML-For-Beginners/#/ 学习经典…

讲解把一个文件夹里面的内容复制到另一个文件夹中的操作

&#x1f38a;专栏【Java小练习】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;需求⭐思路✨代码✨效果 &#x1f384;如果要复制…

Vue3:表格单元格内容由:图标+具体内容 构成

一、背景 在Vue3项目中&#xff0c;想让单元格的内容是由 &#xff1a;图标具体内容组成的&#xff0c;类似以下效果&#xff1a; 二、图标 Element-Plus 可以在Element-Plus里面找是否有符合需求的图标iconfont 如果Element-Plus里面没有符合需求的&#xff0c;也可以在这…

Proteus仿真--基于NM24C08的EEPROM仿真设计

本文介绍基于NM24C08的EEPROM仿真设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 其中NM24C08是标准的2线总线接口的串行EEPROM&#xff0c;开机画面在LCD12864上显示 仿真图如下 仿真运行视频 Proteus仿真--基于NM24C08的EEPROM仿真设计 附完整Proteus仿真资料…

零一万物模型折腾笔记:官方 Yi-34B 模型基础使用

当争议和流量都消失后&#xff0c;或许现在是个合适的时间点&#xff0c;来抛开情绪、客观的聊聊这个 34B 模型本身&#xff0c;尤其是实践应用相关的一些细节。来近距离看看这个模型在各种实际使用场景中的真实表现和对硬件的性能要求。 或许&#xff0c;这会对也想在本地私有…

Docker本地部署Drupal内容管理框架并实现公网远程访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址7. 结语 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它…

使用条件格式突出显示单元格数据-sdk

使用条件格式突出显示单元格数据 2023 年 12 月 6 日 根据数据值将视觉提示应用于特定单元格、行或列&#xff0c;从而更轻松地识别模式和趋势。 网格中的条件格式允许用户根据单元格或范围包含的数据将视觉样式应用于单元格或范围。它通过以数据驱动的方式突出显示关键值、异常…

【基于Python的二手车数据可视化平台的设计与实现】

基于Python的二手车数据可视化平台的设计与实现 前言数据获取与处理网络爬虫数据存储 可视化平台的设计与实现Flask框架数据可视化 创新点结语 前言 随着社会的不断发展&#xff0c;二手车市场也逐渐成为一个备受关注的领域。为了更好地为二手车的买家和卖家提供信息&#xff…

计算和传输背后的时空观

吞吐和速度(率)经常被混淆&#xff0c;当提到 100Gbps 网卡时&#xff0c;“它很快” 的意义可能只是 “它很多” 100Gbps 指 1s 内发送的比特数为 100G&#xff0c;如果在这 1s 内塞入更多比特&#xff0c;以下是两种方式&#xff1a; 显然&#xff0c;上面是更多&#xff…

iOS分段控件UISegmentedControl使用

在故事板中添加UISegmentedControl 具体添加步聚如下: 选择Xcode的View菜单下的Show Library (或者Shift+Common+L) 打开控件库如下 在控件库中输入seg搜索控件,在出现Segmented Control后,将其拖到View Controller Scene中 到这里,添加分段控件UI已完成, 接下来将控件与变量…