用 WasmEdge 和 YoMo 对实时数据流进行 AI 推理

本文介绍了如何结合WasmEdge WebAssembly runtime和YoMo编程框架,实现基于Tensorflow的实时图片分类。YoMo利用QUIC协议提供高速数据传输,适合Metaverse、VR/AR和IoT场景。通过WasmEdge,YoMo能在不牺牲性能的情况下隔离和管理多个外部开发者编写的处理函数,特别适合边缘计算中的实时任务。文中展示了用Rust编写和编译为WebAssembly的Tensorflow图片识别函数,以及如何在YoMo中集成和运行该函数。
摘要由CSDN通过智能技术生成

YoMo 是一个用于辅助开发者方便构建分布式云系统(Geo-Distributed Cloud System)的编程框架。YoMo 的通讯层构建在 QUIC 协议之上,带来高速数据传输的同时,内置了 Streaming Serverless 的“流函数”,大幅提升了分布式云系统的开发体验。YoMo 构建的分布式云系统在近场算力和终端之间提供了超高速通讯机制,在 Metaverse、VR/AR、IoT 等领域有广泛的应用场景。

在这里插入图片描述

YoMo 使用 Go 语言编写,Streaming Serverless 部分使用了 Golang 的插件和共享库动态加载用户代码和共享库,但也给开发者带来了一些局限性,尤其是使用 Windows 的开发者。加之Serverless 架构对隔离的刚性需求,这使得 WebAssembly 成为运行用户定义函数的绝佳选择。

例如在 AR/VR、智能工厂里做实时 AI 推理的过程中,摄像头可以通过 YoMo 将实时的非结构化数据发送到近场 MEC (多访问边缘计算)设备中的计算节点,并自动执行托管的 AI 推理函数。当 AI 推理完成,YoMo将 AI 计算结果实时发送给端设备。

然而,YoMo 面临的挑战是在边缘计算节点中合并和管理由多个外部开发者编写的处理程序函数。这需要在不牺牲性能的情况下对这些函数进行 runtime 隔离。传统的软件容器解决方案,如 Docker,无法胜任这项任务,因为太重且速度太慢,无法处理实时任务。

WebAssembly 提供了一个轻量级高性能的软件容器。它非常适合作为 YoMo 数据处理 handler 函数的 runtime。

本文中,我们将向你展示如何为基于 Tensorflow 的图片识别创建 Rust 函数,将其编译为 WebAssembly,然后使用 YoMo 将其作为流数据 handler 运行。我们使用 WasmEdge 作为 WebAssembly runtime,因为与其它 WebAssembly runtime 相比,WasmEdge 提供了最佳性能和最高灵活度。WasmEdge 是唯一稳定支持 Tensorflow 的 WebAssembly 虚拟机。 YoMo 通过 WasmEdge 的 Golang API管理 WasmEdge VM 实例和容器内的 WebAssembly 字节码应用。

GitHub 源代码:https://github.com/yomorun/yomo-wasmedge-tensorflow

准备工作

显然,需要安装 Golang 。我们假设你已经安装。

Golang 版本需要比 1.15 新,我们的示例才能运行。

同时,需要安装 YoMo CLI 应用程序。它安排和协调数据流和 handler 函数调用。

$ go install github.com/yomorun/cli/yomo&#
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值