美团视觉GPU推理服务部署架构优化实战

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

文章目录
- 摘要
- 1.视觉模型服务部署面临的问题与挑战
- 视觉模型特点
- 优化工具与部署框架
- 模型优化与部署面临的问题与挑战
- 2. GPU服务优化实践分类模型优化
- 结论:
- 2.2 GPU服务优化实践-检测+分类模型优化
- 3.通用高效的推理服务部署架构
- 总结与展望:
- 🤔🤔🤔 关于模型部署优化的一些思考
- 原创声明
摘要
1.视觉模型服务部署面临的问题与挑战
2.GPU服务性能优化实践案例
3.通用高效的推理服务部署架构
1.视觉模型服务部署面临的问题与挑战
背景
美团视觉致力于将视觉A|技术应用于本地生活服务的各个场景。但随着视觉在线推理服务使用
的GPU资源不断增加,GPU利用率低的问题也日益凸显,浪费大量计算资源。
造成服务GPU利用率低下的重要原因之一

视觉模型特点
口深度学习模型,网络层数多(适合用GPU运算 口模型输入固定,需要预处理
优化工具与部署框架
口TensorRT、TF-TRT、TVM等优化工具 口TensorFlow、Torch、Triton等部署框架
模型优化与部署面临的问题与挑战
①模型优化不彻底:部分算子无法优化加速
②多模型串联部署难:串联逻辑灵活且复杂

2. GPU服务优化实践分类模型优化

分类模型是一种基础的视觉模型,常应用在图像 审核场景下,过滤风险内容实现机器自动审核 模型结构包含两个部分,“预处理”+“主于网络” TF-TRT可以将主干网络整体优化为1个Engine, 但 是预处理部分却不支持优化 .




结论:
异构计算情况下,模型不同部分可 能运行在不同设备上。将模型CPU/GPU运 算部分结耦分离,在服务层面实现运算流 GPU性能瓶颈。 水线处理,避免CPU计算速度缓慢导致的 .
2.2 GPU服务优化实践-检测+分类模型优化

3.通用高效的推理服务部署架构

总结与展望:
推理服务存在一个共性问题:模型结构中CPU算子和GPU算子相互耦 合,严重影响运行效率。为此,我们提出了一种通用高效的部署架构,通过模型结 构拆分和微服务化,解决这种常见的性能瓶颈问题。目前,该解决方案已在美团视 觉核心服务上广泛应用,优化后服务GPU利用率接近100%,服务性能成倍提升。 当然,这种优化方案也存在一些不足,模型如何拆分依赖人工经验或实验测试,没 有实现优化流程的自动化与标准化 .
🤔🤔🤔 关于模型部署优化的一些思考
① 模型部署性能优化需要考虑多个层面:从模型算子融合、剪枝、量化,到TensorRT、TVM工具优化,再到部署架构优化。只考虑一个层面优化无法取得好的效果,针对瓶颈进行优化才能事半功倍。
②异构计算体系下,需要考虑模型算子运行设备与交互通信开销。
③大模型分布式推理对部署系统提出更高要求,如何高效推理仍然具有挑战。
原创声明
=======
作者wx: [ libin9iOak ]
本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。
作者保证信息真实可靠,但不对准确性和完整性承担责任。
未经许可,禁止商业用途。
如有疑问或建议,请联系作者。
感谢您的支持与尊重。
点击
下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。
相关文章:
美团视觉GPU推理服务部署架构优化实战
🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~ἳ…...
什么是前端框架?怎么学习? - 易智编译EaseEditing
前端框架是一种用于开发Web应用程序界面的工具集合,它提供了一系列预定义的代码和结构,以简化开发过程并提高效率。 前端框架通常包括HTML、CSS和JavaScript的库和工具,用于构建交互式、动态和响应式的用户界面。 学习前端框架可以让您更高效…...
logstash 原理(含部署)
1、ES原理 原理 使⽤filebeat来上传⽇志数据,logstash进⾏⽇志收集与处理,elasticsearch作为⽇志存储与搜索引擎,最后使⽤kibana展现⽇志的可视化输出。所以不难发现,⽇志解析主要还 是logstash做的事情 从上图中可以看到&#x…...
CSS中的position属性有哪些值,并分别描述它们的作用。
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ static⭐ relative⭐ absolute⭐ fixed⭐ sticky⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那…...
视频联网报警厂家怎么找?
视频联网报警厂家怎么找?要找到联网报警设备厂家,可以按照以下步骤进行: 1. 在互联网上搜索:可以使用搜索引擎,如谷歌或百度,搜索关键词,如“联网报警设备厂家”、“安防设备厂家”等ÿ…...
配置文件优先级解读
目录 概述 同级目录application配置文件优先级 application 以及bootstrap 优先级 不同级目录配置文件优先级 外部配置加载顺序 概述 SpringBoot除了支持properties格式的配置文件,还支持另外两种格式的配置文件。三种配置文件格式分别如下: properties格式…...
在 React+Typescript 项目环境中创建并使用组件
上文 ReactTypescript清理项目环境 我们将自己创建的项目环境 好好清理了一下 下面 我们来看组件的创建 组件化在这种数据响应式开发中肯定是非常重要的。 我们现在src下创建一个文件夹 叫 components 就用他专门来处理组件业务 然后 我们在下面创建一个 hello.tsx 注意 是t…...
UNIAPP中开发企业微信小程序
概述 需求为使用uni-app开发企业微信小程序。希望可以借助现成的uni-app框架,快速开发。遇到的问题是uni-app引入jweixin-1.2.0.js提示异常: Reason: TypeError: Cannot read properties of undefined (reading ‘title’)。本文中描述了如何解决该问题,…...
NGINX负载均衡及LVS-DR负载均衡集群
目录 LVS-DR原理搭建过程nginx 负载均衡 LVS-DR原理 原理: 1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IPÿ…...
由于目标计算机积极拒绝,无法连接。 Could not connect to Redis at 127.0.0.1:6379
项目在启动时候报出redis连接异常 然后查看是redis 连接被计算机拒绝 解决方法 打开redis安装文件夹 先打开redis-servce.exe挂着,再打开redis-cli.exe 也不会弹出被拒接的问题了。而且此方法不用每次都去cmd里输入命令。...
电脑提示数据错误循环冗余检查怎么办?
有些时候,我们尝试在磁盘上创建分区或清理硬盘时,还可能会遇到这个问题:数据错误循环冗余检查。这是如何导致的呢?我们又该如何解决这个问题呢?下面我们就来了解一下。 导致冗余检查错误的原因有哪些? 数据…...
剑指offer62.圆圈中最后剩下的数字
这道题在算法课上的一个小故事上有一个类似的,就是一个军官打了败仗,带着他的几个兵逃到一个山洞,他们不想当俘虏想自杀,但是军官不想自杀但是又不好意思走,于是军官想了个办法,他们几个人围成一个圈&#…...
Python分享之 Spider
一、网络爬虫 网络爬虫又被称为网络蜘蛛,我们可以把互联网想象成一个蜘蛛网,每一个网站都是一个节点,我们可以使用一只蜘蛛去各个网页抓取我们想要的资源。举一个最简单的例子,你在百度和谷歌中输入‘Python,会有大量和…...
Golang项目中如何轻松实现私有仓库pkg包的引入
在企业内部创建一个公共的Golang模块工程可以帮助提高代码复用性和开发效率。本文将从如何创建一个公共的Golang工程开始,指导你一步步创建它、并引入到你的工程中。 1、公共模块规范 下面是一个简单的步骤指南来创建这样一个公共模块项目。 创建版本控制仓库&am…...
Python项目实战:基于napari的3D可视化(点云+slice)
文章目录 一、napari 简介二、napari 安装与更新三、napari【巨巨巨大的一个BUG】四、napari 使用指南4.1、菜单栏(File View Plugins Window Help)4.2、Window:layer list(参数详解)4.3、Window:layer…...
go的gin和gorm框架实现切换身份的接口
使用go的gin和gorm框架实现切换身份的接口,接收前端发送的JSON对象,查询数据库并更新,返回前端信息 接收前端发来的JSON对象,包含由openid和登陆状态组成的一个string和要切换的身份码int型 后端接收后判断要切换的身份是否低于该…...
仓库库存管理难点在哪?有哪些仓库库存管理软件?
仓库库存管理常见的难点有:库存数据混乱、库存成本较高、库存积压严重等问题 使用仓库管理软件,企业可以更好地管理库存、优化供应链、提高操作效率,并基于准确的数据进行决策和规划,从而解决许多仓库库存管理中的难题。 一、仓库…...
服务链路追踪
一、基础概念 1.背景 对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如: 如何串联整个调用链路,快速定位问题?如何理清各个微服务之间的依赖关系?如何进行各个微服…...
macOS - 安装使用 libvirt、virsh
文章目录 关于 libvirt使用安装启动服务virsh 交互模式virsh 帮助命令 关于 libvirt libvirt 官网: https://libvirt.org/gitlab : https://gitlab.com/libvirt/libvirtgithub : https://github.com/libvirt/libvirt 只读,gitlab 的镜像 libvirt是一套…...
Windows Server 2019设置使用照片查看器查看图片的设置方法
1、使用winR快捷键快速打开运行,输入regedit打开注册表: 2、在注册表中找到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations 3、在右侧新建字符串项: 4、例如新建两项.jpg 和.png值…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
