当前位置:首页 > 技术分析 > 正文内容

技术博客 | 使用 Python 和 C 快速构建 AI 流应用程序++

ruisui883个月前 (02-05)技术分析24

边缘传感器流的 AI 处理的计算需求越来越高。边缘设备必须跟上高速率的传入数据流、处理、显示、存档和流结果,或实时关闭控制循环。这需要能够进行高性能计算的强大、高效、准确的硬件和软件解决方案。

边缘设备还必须快速安全地将数据传输到其他边缘设备、预数据中心或云,以存储和分析接收到的数据。先进的边缘 AI 处理解决方案可快速处理大量传感器数据,并实时产生可操作的见解。

NVIDIA Holoscan SDK v0.4 现在为边缘的流式 AI 应用程序提供了更高效的处理。开发人员可以使用包含加速库、预训练 AI 模型和参考应用程序的 SDK ,使用 Python 和 C ++ 构建自己的流式应用程序。

Holoscan 最初用于医疗 AI 用例,现在已准备好在多个行业中应用更广泛的应用,以实现边缘的高性能计算。

新的 Holoscan SDK v0.4 功能包括:

  • 快速应用程序开发的 Python 开发人员经验。
  • 使用 C ++ 的显著改进。
  • 高效的多 AI 推理。
  • 低延迟现场可编程门阵列( FPGA )阿尔法混合。
  • HoloHub ,一个收集对 Holoscan 贡献的集中存储库。

此外,部署堆栈已更新为与 v0.4 中添加的新功能同步。接下来,将使用新的 SDK 版本更新部署堆栈。


Python 开发人员经验

Holoscan SDK 现在提供了 Python 应用程序开发经验。无需编译任何代码,开发人员可以使用 NVIDIA GPU 、 NVIDIA Clara AGX 和 NVIDIA IGX Orin 开发套件在 x86 _ 64 工作站上快速原型化和部署工作流。

开发人员还可以与其他 GPU 加速的 Python 库集成,如 RAPIDSCuPy ,以使用 NVIDIA 硬件并优化处理管道。

内置 Tensor 类支持 DLPack 和 NumPy 数组接口( __array_interface____cuda_array_interface__ ),以与 CuPyPyTorch JAXTensorFlowNumba 库和多维数组处理兼容。

Holoscan Tensor 对象可以与 cuSignalcuCIM 一起使用,以获得有效的信号。

下面的示例代码演示了使用 Python API 创建 Holoscan 应用程序是多么简单。compose ()函数通过实例化运算符并将它们连接到工作流中来定义应用程序的整个工作流。

class BasicRadarFlow(Application):
   
    def compose(self):
        src = SignalGeneratorOp(self, CountCondition(self, iterations), name="src")
        pulseCompression = PulseCompressionOp(self, name="pulse-compression")
        mtiFilter = MTIFilterOp(self, name='mti-filter')
        rangeDoppler = RangeDopplerOp(self, name='range-doppler')
        cfar = CFAROp(self, name='cfar')
        sink = SinkOp(self, name="sink")

        self.add_flow(src, pulseCompression, {('x', 'x'), ('waveform', 'waveform')})
        self.add_flow(pulseCompression, mtiFilter)
        self.add_flow(mtiFilter, rangeDoppler)
        self.add_flow(rangeDoppler, cfar)
        self.add_flow(cfar, sink)

此应用程序的完整 Python 源代码可在 HoloHub repository 中找到。

Holoscan Python 包可供开发者通过 Python wheels 调用 pip install holoscan。有关先决条件,请参阅 PyPI 上的说明。

C++ 开发人员经验

Holoscan SDK 现在为创建 Holoscan 运算符和流提供了完整的 C++ 应用程序开发经验。以前,创建 Holoscan 运算符的唯一方法是包装 GXF 代码集。现在,您可以使用 Holoscan SDK 直接创建运算符,并轻松将其与其他 C ++ 库集成。了解 Holoscan User ‘ s Guide 中的本机运算符。


多 AI 推理

Holoscan SDK 支持在同一输入流上的多个 AI 管道和多个 AI 模型的并行推理。通过多 AI 推理模块进行的并行推理可以将性能提高约 30% ,以便在相同的时间约束下将更多模型引入推理模块。

了解 NVIDIA Inception 成员 iCardio.ai 如何使用 NVIDIA Clara Holoscan实时运行多 AI 流水线


低延迟 FPGA alpha 混合

某些视频 I / O 卡,如 AJA KONA 5 ,支持 FPGA 上的 alpha 混合。此功能可实现从输入到输出的亚毫秒视频信号延迟传递。这还包括 AI 推理与 Holoscan 流混合的时间。

除了低延迟实现之外,这还启用了一个安全功能,以减轻 AI 流中的故障。在 AI 管道发生故障的情况下,原始视频源继续从捕获卡流到显示器。下图显示了用于手术工具跟踪的低延迟 FPGA alpha 混合工作流。有关详细信息,请参阅 Holoscan SDK 用户手册

图 1 :使用 AJA 卡进行手术工具跟踪推断的工作流程图


霍洛维兹

Holoscan SDK v0.4 版本在所有示例应用程序管道中都利用了 Holoviz 。以前 OpenGL 可视化运算符支持的功能是通过使用 Vulkan 的 Holoviz 启用的。该操作符易于配置,可处理 RGB / RGBA 图像、遮罩、几何图元和文本的合成、混合和可视化。

它还支持无头渲染和流式输出,以及绕过桌面合成器的模式延迟。


HoloHub 公司

此版本引入了名为 HoloHub 的新存储库。作为一个公共存储库,HoloHub 托管了一组示例应用程序和操作员,并发布开发人员社区提供的贡献。

通过 HoloHub , NVIDIA 合作伙伴(包括传感器供应商)可以实施 Holoscan 支持,并将其分发给社区,以便快速实施新的处理工作流。


开始使用 Holoscan SDK

开始使用 Holoscan SDK 0.4 的最快方法是在 Holoscan 开发工具包或 x86 设备上运行 Holoscan 容器中的示例和示例应用程序。此更新的容器使用运行时配置来测试当前应用程序。它还提供 C ++ 和 Python 开发工具和示例,以修改和创建新的处理工作流。

Holoscan SDK 可通过 PyPi 为 Python 3.8 至 3.11 以及 Ubuntu 20.04 的 Debian 软件包提供。

对于希望构建 Holoscan SDK 的开发人员,源代码可以通过 nvidia-holoscan GitHub repository 的 Apache 2 许可证获得。


*本文转自 NVIDIA英伟达

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1695.html

标签: 技术博客
分享给朋友:

“技术博客 | 使用 Python 和 C 快速构建 AI 流应用程序++” 的相关文章

Vue2的16种传参通信方式

前言先直入主题列出有哪些传参方式,下面再通过事例一一讲解。props(父传子)$emit与v-on (子传父)EventBus (兄弟传参).sync与update: (父子双向)v-model (父子双向)ref$children与$parent$attrs与$listeners (爷孙双向)pr...

vue2中路由的使用步骤,你学会了吗?

今天我们来整理下关于vue2中路由的使用步骤:1. 导入 vue 文件和Vue-router文件(注意:vue-router是依赖vue运行的,所以一定在vue后引入vue-router)2. 定义路由组件模板3. 创建路由实例并定义路由规则4. 将路由实例挂载给Vue实例5. 在结构区域定义控制路...

深入理解vue-router原理

说到vue-router就表明他只适合于vue和vue是强绑定的关系;不适合其他框架;现在我们模仿实现一个VueRouter;1.要使页面刷新;借助vue本身的响应式原理;import Home from "./views/Home"; import About from "...

三勾商城(java+vue3)微信小程序商城+SAAS+前后端源码

项目介绍本系统功能包括: 前台展示+后台管理+SAAS管理端,包括最基本的用户登录注册,下单, 购物车,购买,结算,订单查询,收货地址,后台商品管 理,订单管理,用户管理等等功能,小伙伴一起来看看吧。三勾小程序商城基于springboot+element-ui+uniapp打造的面向开发的小程序商城...

vue.js 双向绑定如何理解,有什么好处!#云南小程序开发

Vue.js 的双向数据绑定是借助于 JavaScript 的一些特性,如对象的属性 getter 和 setter 以及 Vue 的依赖追踪系统实现的。简单来说,双向数据绑定就是数据与视图间的双向通信,也就是说数据的改变会马上反映到视图中,视图的改变也会立刻改变数据。具体来说,当你改变了数据时,视...

嵌入式实操——基于RT1170 使能SEMC配置SDRAM功能(八)

本文主要是通过迁移的思维,记录本人初次使用NXP MCUXpresso SDK API进行BSP开发MCUXpresso SDK SEMC API 接口链接  在MCUXpresso SDK 框架下提供了对SEMC DDR进行操作的接口。学习链接:https://community.nxp.com/...