【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

让你的 AI 模型尽可能的靠近数据源

  • 2019-10-24
  • 本文字数:2036 字

    阅读完需:约 7 分钟

让你的AI模型尽可能的靠近数据源

今天我们发布了一个 RedisAI 的预览版本,预集成了[tensor]werk 组件。RedisAI 是一个可以服务 tensors 任务和执行深度学习任务的 Redis 模块。在这篇博客中,我们将介绍这个新模块的功能,并解释我们为什么会认为它能颠覆机器学习(ML)、深度学习(DL)的解决方案。


RedisAI 的产生有两大原因:首先,把数据迁移到执行 AI 模型的主机上成本很高,并且对实时性的体验很大的影响;其次,Serving 模型一直以来都是 AI 领域中 DevOps 的挑战。我们构建 RedisAI 的目的,是让用户可以在不搬迁 Redis 多节点数据的情况下,也能很好地服务、更新并集成自己的模型。

数据位置很重要

为了证明运行机器学习、深度学习模型中数据位置的重要性,我们举一个聊天机器人的例子。聊天机器人通常使用递归神经网络模型(RNN),来解决一对一(seq2seq)用户问答场景。更高级的模型使用两个输入向量、两个输出向量,并以数字中间状态向量的方式来保存对话的上下文。模型使用用户最后的消息作为输入,中间状态代表对话的历史,而它的输出是对用户消息和新中间状态的响应。



为了支持用户自定义的交互,这个中间状态必须要保存在数据库中,所以 Redis +RedisAI 是一个非常好的选择,这里将传统方案和 RedisAI 方案做一个对比。

1、传统方案

使用 Flask 应用或其它方案,集成 Spark 来构建一个聊天机器人。当收到用户对话消息时,服务端需要从 Redis 中获取到中间的状态。因为在 Redis 中没有原生的数据类型可用于 tensor,因此需要先进行反序列化,并且在运行递归神经网络模型(RNN)之后,保证实时的中间状态可以再序列化后保存到 Redis 中。


考虑到 RNN 的时间复杂度,数据序列化/反序列化上 CPU 的开销和巨大的网络开销,我们需要一个更优的解决方案来保证用户体验。


2、RedisAI 方案

在 RedisAI 中,我们提供了一种叫 Tensor 的数据类型,只需使用一系列简单的命令,即可在主流的客户端中对 Tensor 向量进行操作。同时,我们还为模型的运行时特性提供了另外两种数据类型:Models 和 Scripts。



Models 命令与运行的设备(CPU 或 GPU)和后端自定义的参数有关。RedisAI 内置了主流的机器学习框架,如 TensorFlow、Pytorch 等,并很快能够支持 ONNX Runtime 框架,同时增加了对传统机器学习模型的支持。然而,很棒的是,执行 Model 的命令对其后端是不感知的:


AI.MODELRUN model_key INPUTS input_key1 … OUTPUTS output_key1 …


这允许用户将后端选择(通常由数据专家来决定)和应用服务解耦合开来,置换模型只需要设置一个新的键值即可,非常简单。RedisAI 管理所有在模型处理队列中的请求,并在单独的线程中执行,这样保障了 Redis 依然可以响应其它正常的请求。


Scripts 命令可以在 CPU 或 GPU 上执行,并允许用户使用 TorchScript 来操作 Tensors 向量,TorchScript 是一个可操作 Tensors 向量的类 Python 自定义语言。这可以帮助用户在执行模型前对数据进行预处理,也可以用在对结果进行后处理的场景中,例如通过集成不同的模型来提高性能。



RedisAI 的数据类型和后端概览


我们计划未来通过 DAG 命令支持批量执行命令,这会允许用户在一个原子性操作中批量执行多个 RedisAI 命令。例如在不同的设备上运行一个模型的不同实例,通过脚本对执行结果做平均预测。使用 DAG 命令,就可并行地进行计算,再执行聚合操作。如果需要全量且更深的特性列表,可以访问 redisai.io


新的架构可以简化为:


模型服务可以更简单

在生产环境中,使用 Jupyter notebooks 来编写代码并将其部署在 Flask 应用并不是最优方案。用户如何确定自己的资源是最佳的呢?如果用户主机宕机之后,上述聊天机器人的中间状态会发生什么呢?用户可能会重复造轮子,实现已有的 Redis 功能来解决问题。另外,由于组合方案的复杂度往往超出预期,固执地坚持原有的解决方案也会非常有挑战性。


RedisAI 通过 Redis 企业级的数据存储方案,支持深度学习所需要的 Tensors、Models 和 Scripts 等数据类型,很好的实现了 Redis 和 AI 模型的深度整合。如果需要扩展模型的计算能力,只需要简单的对 Redis 集群进行扩容即可,所以用户可以在生产环境中增加尽可能多的模型,从而降低基础设施成本和总体成本。


最后,RedisAI 很好地适应了现有的 Redis 生态,允许用户执行脚本来预处理、后处理用户数据,可使用 RedisGear 对数据结构做正确的转换,可使用 RedisGraph 来保持数据处于最新的状态。

结论和后续计划

1、短期内,我们希望使用 RedisAI 在支持 3 种主流后端(Tensorflow、Pytorch 和 ONNX Runtime)的情况下,尽快稳定下来并达到稳定状态。


2、我们希望可以动态加载这些后端,用户可以自定义的加载指定的后端。例如,这将允许用户使用 Tensorflow Lite 处理边缘用例。


3、计划实现自动调度功能,可以实现在同一模型中实现不同队列的自动合并。


4、RedisAI 会统计模型的运行数据,用于衡量模型的执行情况。


5、完成上文中解释的 DAG 特性。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/XKUI_J9Fc_CguoA7AEXrgQ


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-10-24 09:56943

评论

发布
暂无评论
发现更多内容

要智能,得懂行,“要得”重庆

脑极体

基于语音情感识别的应用和挑战,详解华为云的语音情感识别方案

华为云开发者联盟

学习 语音 情感识别 跨模态知识迁移 跨模态

Filecoin大涨:一文帮你了解filecoin挖矿!

区块链 分布式存储 IPFS filecoin挖矿 filecoin矿机

网络攻防学习笔记 Day119

穿过生命散发芬芳

网络安全 8月日更

细节炸裂!阿里P8高管总结出这份1500页的Java编程思想(第六版)

Java~~~

Java 编程 架构 面试 网络

深入了解RocketMQ之Broker

邱学喆

broker 执行器 ConfigManager 处理器

面试侃集合之PriorityBlockingQueue篇

码农参上

Priority Queue 8月日更

ipfs是什么项目是国家许可的吗?ipfs国家认可吗?

IPFS国家认可吗 ipfs是什么项目 ipfs是国家许可的吗

模块六作业

袁小芬

身份验证绕过漏洞分析

网络安全学海

黑客 网络安全 信息安全 WEB安全 安全漏洞

高薪offer有什么秘籍,不妨来此观看

hanaper

工具库用久了,你还会原生操作 Cookie 吗?

编程三昧

JavaScript 大前端 Cookie 8月日更

通过wireshark体验IP层分包

她的男人是程序员

Go 泛型初体验

Rayjun

Go 语言

在阿里离职后,从内部带走的这份485页面试合集,在GitHub上火了

Java~~~

Java 架构 面试 架构师

如何使用TCP/IP开发网络程序

华为云开发者联盟

Java TCP 网络协议 通信 客户端

全网震动!阿里员工人手一份却禁止外传的P5-P9Java进阶学习路线

Java~~~

Java 架构 面试 分布式 高并发

「iOS独立开发」基于iCloud构建用户体系

LabLawliet

ios 8月日更 独立开发

Spark :: 大画Spark(前传)—Spark的Dispatcher原理

dclar

spark 架构 源代码

操作系统课程学习记录

春秋易简

操作系统

Linux如何进行GPIO读写操作的?

华为云开发者联盟

Linux value GPIO GPIO开发 sysfs

GitHub上这份阿里的Java高并发核心手册,即使再过20年依然“NB”

Java~~~

Java 架构 面试 分布式 高并发

Python代码阅读(第20篇): 展开嵌套列表2

Felix

Python 编程 Code Programing 阅读代码

铁山靠!阿里P9架构师写的这份JDK源码笔记,竟直接带火了GitHub

Java~~~

Java 架构 jdk 面试 架构师

面试过程中,遇到刁钻问题大家是怎么处理的?

hanaper

fil矿机挖矿收益怎么计算?fil矿机挖矿效率怎么提升?

fil矿机挖矿收益怎么计算 fil矿机挖矿效率怎么提升

罗马道ROW质押挖矿系统开发技术搭建

薇電13242772558

设计创新:通过设计创新改造世界

石云升

设计思维 设计师 8月日更 设计创新

打破DPDK的误区: 数据面最流行的工具包DPDK,前世今生,未来

奔着腾讯去

Linux Kenel DPDK VPP

Alibaba内网“疯狂”传阅的P8开源出的SpringBoot入门到进阶小册

Java~~~

Java spring 架构 面试 Spring Boot

逮虾户!清华架构师吐血整理出这份多线程并发指南,带你弯道超车

Java~~~

Java 架构 面试 分布式 多线程

让你的AI模型尽可能的靠近数据源_云原生_Redislabs_InfoQ精选文章