首页 > 其他分享 >模型部署推理速度评估

模型部署推理速度评估

时间:2024-04-08 17:24:49浏览次数:8  
标签:dgpu ProfilerActivity 模型 torch record 推理 评估

前言(废话)

因为jetsonNano算力吃紧,在上面开发CNN模型面临了新的挑战。像dgpu上常用的YOLO系列,即使最小的模型搬上去也就25fps的水平。而上面要求一台jetsonNano要跑多路视频推理,因此开发一个小模型迫在眉睫。

尝试过主流的MobileNet和ShuffleNet后,使用ShuffleNet暂时取得了比较好的效果,能实时达到约100fps。

当然是不可能就此罢手的,调研了时间比较新的小模型:VoVNet和VanillaNet。并分别先在dgpu上测试发现效果还不错,特别是VoVNet,速度和ShuffleNetV2差不多的情况下,AP05能提高十几个点。开心地移植过去,结果发现在jetson上只有17fps。于是开启分析过程

Pytorch

torch官方是有提供相关工具的。具体使用网上的教程也挺多的,此处就简略过。

from torch.profiler import profile, record_function, ProfilerActivity

with profile(activities=[
    ProfilerActivity.CPU, ProfilerActivity.CUDA], record_shapes=True) as prof:
    with record_function("model_inference"):
        preds = model(img)

print(prof.key_averages(group_by_input_shape=False).table(sort_by="cpu_time_total", row_limit=10))

这里分享一个坑,就是如果你只跑一个batch的话,得到的结果是不准确的。这一点网上是完全找不到相关的资料,你会发现数据进入模型的第一次卷积特别耗时,cpu_total_time爆炸(主要时间都在这里了)。排除了N个原因后直接上结论,torch在第一次推理(初始化)时会初始化cudnn相关组件,这个过程是相当耗时的。因此想要得到比较准确的结果,第一次推理应该当做warm up,以后几次推理得到的结果为准。

tensorRT

得到序列化后的tensorRT plan/engine文件后,使用

/usr/src/tensorrt/bin/trtexec --loadEngine=model_name.engine --dumpProfile

即可打印每层推理消耗的时间
此处终于发现,dgpu和jetson在某些layer上的表现完全不同,等待后续排查原因。

当然,网上也有相关的使用代码来打印时间的博客,后续有时间再更新。

标签:dgpu,ProfilerActivity,模型,torch,record,推理,评估
From: https://www.cnblogs.com/zhouyuchong/p/18121780

相关文章

  • 贝叶斯线性回归和多元线性回归构建工资预测模型|附代码数据
    原文链接:http://tecdat.cn/?p=21641最近我们被客户要求撰写关于贝叶斯线性回归的研究报告,包括一些图形和统计输出。在劳动经济学领域,收入和工资的研究为从性别歧视到高等教育等问题提供了见解工资模型在本文中,我们将分析横断面工资数据,以期在实践中使用贝叶斯方法,如BIC和贝叶......
  • 模型调用接口查找数据
    fromlangchain.chainsimportAPIChainfromlangchain_community.llms.ollamaimportOllamallm=Ollama(model="qwen:7b")api_docs="""BASEURL:https://api.python.langchain.comAPIDocumentation:TheAPIendpoint/en/latest/la......
  • Java内存模型与可见性:volatile关键字、内存屏障与原子操作 第一章
    目录一、引言1.1定义Java内存模型(JMM)及其在并发编程中的重要性1.2简述可见性问题及其对程序正确性的影响二、Java内存模型概述2.1JMM的基本概念:主内存、工作内存、数据同步与一致性保证2.2JMM的特性:原子性、可见性、有序性2.3并发环境下常见的内存可见性问题示例......
  • Transformer模型-Feed Forward前馈网络和Relu激活函数的简明介绍
     今天介绍transformer模型的FeedForwardnetwork前馈网络和Relu激活函数背景位置感知Position-Wise前馈网络(FFN)由两个全连接层(fullyconnecteddenselayers,就是线性层(LinearLayer),或密集层(DenseLayer))组成,或者也可以称为多层感知机(MLP:multi-layerperceptron)。 参见:Tr......
  • 开源模型应用落地-qwen1.5-7b-chat与sglang实现推理加速的正确姿势(一)
    一、前言   SGLangisastructuredgenerationlanguagedesignedforlargelanguagemodels(LLMs).ItmakesyourinteractionwithLLMsfasterandmorecontrollablebyco-designingthefrontendlanguageandtheruntimesystem。简单来说就是,SGLang简化了LLM......
  • 【大模型应用篇3】LLM时代下的智能体
    上篇文章《【大模型应用篇2】提示词实践-短剧文案》我们演示了提示词的应用场景,但是仅仅依靠提示词,无法应对现实生活中复杂场景,比如我们在大模型上制定了旅游计划,但是还要到各个平台查询最新的机票、酒店等,然后进行预订,再比如在2023年,中国的平均每日出生人口是多......
  • 联合学习MOON——无需共享原始数据,通过模型对比联合学习实现准确的图像分类
    1.概述联合学习(FederatedLearning)是一种分布式的机器学习方法,它允许多个参与者协作训练一个共享的模型,同时保持各自数据的隐私性。这种方法特别适用于那些涉及敏感数据的场景,如医疗、金融和个人设备等。在传统的中心化机器学习方法中,所有的数据需要被收集到一个中心服务......
  • 开源大模型本地私有化部署
    1、安装ollamaollma下载https://ollama.com/download/windowslinux安装curl-fsSLhttps://ollama.com/install.sh|sh运行ollamarungemma:2bollamarungemma:7b使用端口114342、下载open-webui代码https://github.com/open-webui/open-webui.git生成目录open-webuidoc......
  • 模型代码理解本地知识库
    importosfromlangchain.chainsimportRetrievalQAfromlangchain_community.document_loadersimportTextLoaderfromlangchain_community.embeddingsimportOllamaEmbeddingsfromlangchain_community.llms.ollamaimportOllamafromlangchain_community.vectors......
  • 基于PI+重复控制的有源滤波器谐波抑制策略模型(Simulink仿真实现)
     ......