【分享NVIDIA GTC 23大会干货】在 GPU 上使用 Video Codec SDK,CV-CUDA 和 TensorRT 加速现代云上视频应用 [SE51229]

2023-11-08


本文视频来源为NVIDIA GTC大会详细链接如下:https://register.nvidia.cn/flow/nvidia/gtcspring2023/registrationcn/page/sessioncatalog/session/1666233352698001A01c

前言

人工智能技术广泛应用于云和 on-prem 数据中心的短视频和直播应用当中,覆盖了超分辨率,直播视频特效,旧视频修复,自动像素化,视频内容理解等。然而,当部署这些应用程序时,传统视频处理管线混合了 CPU 和 GPU 负载,其性能将受到以下因素的限制: 1) h2d 和 d2h 内存拷贝,2) CPU 上的前处理和后处理,3) CPU 上的视频编解码,4) 未充分优化的 AI 推理框架。

针对以上限制, NVIDIA 提供了丰富的视频处理相关的 SDK,例如用于视频编解码的 Video Codec SDK,用于图像前处理/后处理的 CV-CUDA,以及用于加速 DL 模型推理的 TensorRT。如何在实践中高效地在云上使用这些工具是搭建基于人工智能的新式视频处理管线的关键。

基于现代AI的视频流水线架构与运用场景

常用的视频处理流水线包括以下几个部分:1.视频编解码器
。2.图像前后处理。3.AI智能分析模块。如下图所示:在这里插入图片描述
由于在此架构中存在GPU与CPU的数据拷贝以及没有使用加速会使流水线GPU的利用率不高

NVIDIA 视频处理的工具集

针对这个问题NVIDA提供了全流程的视频处理流水线工具集。

1.视频编解码工具

在这里插入图片描述
支持多种编码格式和色彩格式,应届编解码器与GPU上的CUDA Cores共享内存,减少大部分拷贝操作。与CUDA配合可以实现高效性能。并且支持Python API

2.前后处理部分-CV-CUDA

CV-CUDA是一个开源图像处理库,采用独立算子设置。
不仅支持相同分辨率的图像保存连续的显存,也可以支持,非连续显存保存不同分辨率的图像。与Python和C++,C的API,结果保证与OPencv对齐,也可以与Pytorch和TensorRT进行对接。
下面我们就来看一下CV-CUDA与Ope的对比效果:
在这里插入图片描述
可以看出Opencv无论是在CPU和GPU上性能都不及CV-CUDA

3.智能分析部分

NVIDAI提供了TensorRT
在这里插入图片描述
TensorRT推理引擎是目前在工业上应用最广泛的ai部署工具,支持多种训练框架训练的模型,并进行模型转化。在转化过程中TensorRT可以进行量化,算子融合,以及正对硬件自动优化,获得最佳精度性能和最少的精度衰减。

4.Decinfer

Decinfe可以最大化GPU利用率,充分利用GPU利用率.下图为Decinfer架构
在这里插入图片描述

全GPU视频加速流水线的最佳实践

使用Decinfe可以将所有的算子迁移到GPU上,充分利用了GPU硬件加速和解码功能,以及高性能处理框架。
以下是使用Decinfe的demo的效果图:
在这里插入图片描述
Decinfe采用多线程并行和异步流并行,最大化利用GPU的硬件资源。

在没有并行时候系统的优化空间
如下图所示:
在这里插入图片描述
TensorRT为橙色,通过图可以看出,优化空间就是图中的空洞。

Decinfe采用多线程来进行优化:
在这里插入图片描述
优化效果时间轴:
在这里插入图片描述
可以看出GPU占用率还有空闲
于是Decinfe采用异步流并行技术,详细如下图:
在这里插入图片描述
进过优化后的时序图:
在这里插入图片描述
可以看出CUDA已经全部占满,GPU也全部占满。性能比串行流水线高了1.2倍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【分享NVIDIA GTC 23大会干货】在 GPU 上使用 Video Codec SDK,CV-CUDA 和 TensorRT 加速现代云上视频应用 [SE51229] 的相关文章

随机推荐

  • 线程(Linux系统实现)

    目录 1 线程概述 2 主线程和子线程 3 创建线程 线程函数 创建线程示例 4 线程退出 线程退出的原理主要包括以下两个方面 5 线程回收 回收子线程数据 6 线程分离 7 线程取消 8 线程 ID 比较 1 线程概述 线程是轻量级的进程
  • Windows最全DOS的CMD命令

    CMD命令 开始 gt 运行 gt 键入cmd或command 在命令行里可以看到系统版本 文件系统版本 1 appwiz cpl 程序和功能 2 calc 启动计算器 3 certmgr msc 证书管理实用程序 4 charmap 启动
  • Python爬虫可以干什么?Python入门必看!

    在爬虫领域 Python几乎是霸主地位 虽然C Java GO等编程语言也可以写爬虫 但Python更具优势 不仅拥有优秀的第三方库 还可以为我们做很多的事情 那么Python爬虫可以干什么 Python爬虫有什么用 想必很多人都比较好奇
  • 【机考】华为OD2022.11.01机考题目思路与代码

    题目一 描述 输入一个长度为4的倍数的字符串 字符串中仅包含WASD四个字母 将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换 如果替换后整个字符串中WASD四个字母出现的频数相同 那么我们称替换后的字符串是 完美走位 求子串
  • keil5如何打开智能提示

    在使用keil中需要敲上许多重复代码 并且经常需要调用别人写好的包 这时候我们总不能每句代码都重复的敲一遍 这样不仅没有效率 还要去花时间记住许多自己或许不常用的代码 这时候就需要智能提示来帮助我们了 第一步 打开编辑Edit 目录里找到设
  • Kubernetes(k8s)安装和搭建集群时kubeadm init失败

    Kubernetes k8s 按官方文档描述安装和搭建集群遇到kubelet状态异常 环境 Cenots 7 9 2009 adm64 我在搭建master节点时通过以下命令安装了docker kubelet kubectl kubeadm
  • 建立实体-关系模型(案例)

    一 标识实体 通常有用户 角色这两个实体 二 标识关系 用户与角色间为多对多的互相拥有关系 三 标识实体 关系的属性 不仅仅是实体有属性 关系同样也有属性 这些属性在实体间建立关系时才会存在 有时属性太多 无法在图上一一列出 可以用表格 在
  • AndroidStudio运行项目时的Run/debug configurations问题

    今天遇到的问题一个接一个 在调试项目时突然不能调试 但并没有报代码出错 看Logcat提示的是Android SDK没配置 还有一个明显不同之处 就是右上角那个显示当前项目名称的地方 显示的是app还有一个红叉 根据提示是配置Android
  • Spring Cloud Bus消息总线

    目录 一 概述简介 1 1 Bus是什么 1 2 Bus能干嘛 1 3 为何被称为总线 二 RabbitMQ环境配置 2 1 windows下载与安装 2 2 使用RabbitMQ 三 Bus动态刷新全局广播 3 1 Bus设计思想 3 2
  • PHP 获取当天凌晨时间戳

    总结几种PHP 获取当天凌晨时间戳方法 首先设置时区 header Content type text html charset utf 8 设置北京时间为默认时区 date default timezone set PRC 方法一 当天的
  • Django Error——Requested setting INSTALLED_APPS, but settings are not configured.

    django core exceptions ImproperlyConfigured Requested setting INSTALLED APPS but settings are not configured You must ei
  • jupyter notebook主题、字体、字号管理工具

    jupyter notebook编写 调试代码非常方便 但是其默认主题和字体实在是太难看了 因此大家一般都有修改主题的想法 感谢GitHub上的大神提供了一款主题管理工具 网上已经有文章提出其使用方法 如 jupyter notebook
  • Servlet基础_0500_Application

    一 application概念 application即ServletContext 能够被所有的客户端页面共享 不同的浏览器 不同电脑上的浏览器 演示 ServletContextTest java package com servlet
  • docker下使用apt install报错E: Unable to locate package

    解决方法 方法1 方法2 问题背景 由于docker环境是独立的 gcc vim等需要重新安装 输入安装命令 sudo apt install gcc 7 报错 E Unable to locate package gcc 7 原因是软件源
  • airpods固件更新方法_AirPods Pro迎来首个固件更新,检查耳机版本及更新方法

    airpods pro AirPods Pro推出了一段时间 获得一致好评 但有不少bug存在 针对此 苹果推出了airpods Pro的Firmware 固件 更新 早前购买的AirPods Pro都是 2B584 版本 在11月15日
  • Linux网络发送流程概述

    Linux网络的数据发送 本文主要是学习一下有关Linux 基于Linux3 10 网络层数据写入的流程 在Linux中通过网络写入的数据是如何发送到设备层 socket数据写入 在应用层一般写入的往已经创建好的连接进行数据发送的都会使用s
  • ubuntu20.04下载谷歌浏览器

    第一步 打开终端输入 wget https dl google com linux direct google chrome stable current amd64 deb 第二步 在终端中输入 sudo apt install goog
  • 关于临时表空间问题总结

    oracle经常需要查数据库临时表空间大小 使用率 加表空间等 这里总结临时表空间相关的语句 0 查看实例的临时表空间 SELECT FROM dba tablespaces t where t CONTENTS TEMPORARY SEL
  • 移动端通用404页面

  • 【分享NVIDIA GTC 23大会干货】在 GPU 上使用 Video Codec SDK,CV-CUDA 和 TensorRT 加速现代云上视频应用 [SE51229]

    在 GPU 上使用 Video Codec SDK CV CUDA 和 TensorRT 加速现代云上视频应用 前言 基于现代 的视频流水线架构与运用场景 NVIDIA 视频处理的工具集 1 视频编解码工具 2 前后处理部分 CV CUDA