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

美团视觉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技术核心学习团队。一起探索科技的未来,共同成长。

http://www.lryc.cn/news/125369.html

相关文章:

  • 什么是前端框架?怎么学习? - 易智编译EaseEditing
  • logstash 原理(含部署)
  • CSS中的position属性有哪些值,并分别描述它们的作用。
  • 视频联网报警厂家怎么找?
  • 配置文件优先级解读
  • 在 React+Typescript 项目环境中创建并使用组件
  • UNIAPP中开发企业微信小程序
  • NGINX负载均衡及LVS-DR负载均衡集群
  • 由于目标计算机积极拒绝,无法连接。 Could not connect to Redis at 127.0.0.1:6379
  • 电脑提示数据错误循环冗余检查怎么办?
  • 剑指offer62.圆圈中最后剩下的数字
  • Python分享之 Spider
  • Golang项目中如何轻松实现私有仓库pkg包的引入
  • Python项目实战:基于napari的3D可视化(点云+slice)
  • go的gin和gorm框架实现切换身份的接口
  • 仓库库存管理难点在哪?有哪些仓库库存管理软件?
  • 服务链路追踪
  • macOS - 安装使用 libvirt、virsh
  • Windows Server 2019设置使用照片查看器查看图片的设置方法
  • 【需求输出】流程图输出
  • opencv+ffmpeg+QOpenGLWidget开发的音视频播放器demo
  • stable-diffusion-webui 的模型更新
  • Gin模板语法
  • Go http.Handle和http.HandleFunc的路由问题
  • 如何使用Kali Linux进行渗透测试?
  • 简单易用且高效的跨平台开发工具:Xojo 2023 for Mac
  • HIVE SQL实现分组字符串拼接concat
  • 【问心篇】渴望、热情和选择
  • 【贪心】CF1841 D
  • 移动端预览指定链接的pdf文件流