AICon议程上新60%,阿里国际、360智脑、科大讯飞、蔚来汽车分享大模型探索与实践 了解详情
写点什么

Redis AI 第一步

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

    阅读完需:约 9 分钟

Redis AI 第一步

在 2019 年的 RedisConf 上,Redis Labs 推出了一个名为 RedisAI 的新模块。目的是将机器学习(ML)和深度学习(DL)结合起来,并尽可能地在数据当前所在的地方运行人工智能(AI)模型。这听起来很神奇,如果这一切对你都是全新的,而且你对机器学习感兴趣,但不太清楚这一切到底意味着什么呢?你怎么弄明白这一切呢?上周你老板的老板说,“我们需要把机器学习整合进来”,那可能意味着需要进行额外的编译或其他步骤。现在,你正坐在这里试图了解大量的新术语以及如何将其引入你的组织。


今天,我们将开始好好深入研究一些 AI 术语,并展示一下如何将 RedisAI 模块添加到你现有的 Redis 系统中,并开始用起来。

1 什么是机器学习?

究竟什么是机器学习呢?广义的概念是指构建算法,即读取数据并且依靠那些数据以及任何读入的新数据来做出预测。在最初的“训练”期间,会有人查看模型的预测,并告诉系统每个猜想正确与否。深度学习涉及到如何构建算法和提供模型数据,并由系统本身训练自己,而不是通过外部来训练。


训练这些系统很复杂,通常在一个完全不同的应用程序中进行(不用担心,除非你喜欢线性代数,否则你不需要编写该应用程序)。最受欢迎的机器学习系统之一叫做 TensorFlow,它是开源的。TensorFlow 可以帮助你构建、培训和部署 ML 应用程序,TensorFlow 有一个很好的社区可以帮助你入门。

2 现实世界中的机器学习

你可能已经和机器学习系统进行了很多交互。如果你有一个 Netflix 账户,并且在某个电影或节目上点过“喜欢”或“不喜欢”按钮,那么你就正在训练模型,以更好地预测你喜欢的电影和节目的类型。Netflix 的推荐与你喜欢的内容直接相关。不幸的是,这就是为什么我的节目列表 被《True and theRainbow Kingdom》(:)谢谢孩子们)之类的节目填满了。


并且,如果你在过去的几年里一直上网的话,毫无疑问你会看到爆炸式增长的聊天机器人。这些也是基于机器学习/深度学习的工具。他们被训练用来回答问题,在某些情况下可以在相关主题下和人们很好的对话。当然,训练有时也可能会失控,但一般来说,这还是挺有意思的!

3 Redis 能做些什么?

传统上,所有这类数据都需要被移来移去,这可能会给 DevOps 带来一些严峻的挑战。我们考虑下,如何保存一个聊天机器人与你的对话状态。这些数据需要保存在某个地方,因为这些数据对于机器人来说很重要。我们需要这个对话及其上下文来确定接下来要说的内容。这就需要对数据进行反序列化,在模型中运行它,将数据发送到 Redis 之后,再对其进行序列化。在应用之间转移数据和在系统之间进行数据转换,所有这一切都会带来 CPU 和网络开销。


RedisAI 为你提供了新的数据结构,并允许 Redis 管理运行模型的请求并执行他们。实际上,我们是在你的数据的所在地运行你的模型,没有网络开销,无需序列化/反序列化。

4 从哪里开始入手?

我是一个跟不上时代的人,喜欢自己构建这样的工具。因此,当我想使用 Redis 的新模块时,我会通过源码来构建。有几种不同的方法可以让 RedisAI 在本地运行:

4.1 通过 Docker 安装

如果你是 Docker 用户,那么使用 RedisAI 获取 Redis 实例就是小菜一碟:


$ docker pull redisai/redisai$ docker run -p 6379:6379 -it --rm redisai/redisai
复制代码


你也可以克隆 RedisAI 代码库来获取对实例的访问权限。

4.2 或者从源码构建

让我们在命令行中实践一下。在构建代码之前,你需要安装 cmake 和 git-lfs。在我的 Macbook 上,这就像使用 Homebrew 一样简单:


$ brew install git-lfs cmake
复制代码


你还需要确保运行的是 redis-server 4.09 或更高版本。可以检查一下:


$ redis-server --version
复制代码


现在你已经检查了版本,并且一切顺利,请克隆 AI 代码库:


$ git clone git@github.com:RedisAI/RedisAI.git
复制代码


进入 RedisAI repo/ 目录,并获取依赖项:


$ bash get_deps.sh
复制代码


现在开始构建:


$ mkdir build$ cd build$ cmake -DDEPS_PATH=../deps/install ..$ make$ cd ..
复制代码


如果一切按计划进行,你就可以加载模块并开始玩了。这个过程应该非常顺利。我遇到的唯一问题是没有安装 CMake。一旦装好了,就没其他问题了。


现在,在继续之前,你应该确保 Redis Server 还没有运行。我已经忘了我总是把它作为我的机器上的服务启动了,所以它一直在后台运行!当我试图加载模块时,一切似乎都工作正常,但模块实际上并没有被加载。由于 Redis Server 已经在后台运行,因此对我来说很糟糕,模块没有加载。如果你使用 Homebrew 安装 Redis,那么停止 Redis Server 就是一条简单的命令,执行 brew services stop Redis 就可以了。


一旦你停止了 Redis,就可以运行:


$ redis-server --loadmodule build/redisai.so
复制代码


只需使用 CLI 中的 MODULE LOAD 命令,接下来的一切就简单了:


> MODULE LOAD path/to/build/redisai.so
复制代码


现在,模块已经加载到 Redis Server 中了,可以开始运行了!

5 运行一些例子

恭喜你做到了这一步,现在事情开始有点意思了。你已经拥有尝试使用 RedisAI 所需的一切。如果你对这一切都不熟悉,那么你可能无法进行下一个步骤,因此 RedisAI 附带了一个示例,你可以运行一下,看下它是如何运作的。


如果这是你进入 AI 世界的第一步,那么你接下来要做的就是构建并训练模型。这些步骤超出了 Redis 和本文的范围(如果你感兴趣的话,网上可以找到一些很好的资料),所以我们将跳过这一切并给你一些你可以立即玩起来的数据。


我在 Github 上建了一个库,你可以下载这个示例。在这里你可以找到入门所需的一切:



我们的示例项目是一个基于命令行界面的图像分类应用程序。提供一个图片给应用,这个应用就能够找出图片中的内容。例如,我们提供一个熊猫的图片给应用程序,应用程序就应该告诉我们图片中有一只大熊猫。



要启动并运行,请进入 JS 文件夹并运行 yarn 或 npm install。这将安装你所需要的一切。然后你要做的就是运行:


$ node mobilenet.js ../img/panda.jpg
复制代码


panda.jpg 是这篇博文的标题图片(编者注:即上方的大熊猫图片)。如果一切顺利,你得到的输出应该类似于:



太棒了,有返回结果了!这意味着什么,我们做了什么?我们为这个应用程序提供了熊猫和计算机的图片。系统经过训练去查看图片并告诉我们图片中的内容。我们所做的就是给应用程序提供 2 张图像,然后应用程序就能够告诉我们它在图像中“看到”了什么。


在我们的 Redis 实例中,可以很快的安装 RedisAI,这样你就可以给它喂数据,并观察它是如何识别图像的。该示例是面部识别和图像识别的基本构建模块。现在,通过 RedisAI 我们能够在 Redis 中,即我们的数据的所在的地方,开始工作了。


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


原文链接:


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


2019-10-24 15:403253

评论

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

自动化回归测试平台 AREX 的 Mock 实现原理

AREX 中文社区

Java Mock测试框架 流量回放

「有问必答」Go如何优雅的对时间进行格式化?

王中阳Go

高效工作 学习方法 面试题 Go 语言 6 月 优质更文活动

2023年全国高校公益人工智能师资培训营报名正式开启

飞桨PaddlePaddle

人工智能 百度 飞桨

轻松解决Kafka数据流丢失:提升数据完整性和可靠性

xfgg

Java kafka 6 月 优质更文活动

广东省高校人工智能产教融合院长研讨会召开,校企协同探索AI教育新范式

飞桨PaddlePaddle

iOS 单元测试之常用框架 OCMock 详解 | 京东云技术团队

京东科技开发者

ios 测试 单元测试 Mock 企业号 6 月 PK 榜

3个方法,产品迭代延期率降为0?

嘉为蓝鲸

DevOps 持续集成 研发迭代

全球异型LED显示屏的市场发展

Dylan

技术 设计 领域 LED显示屏 市场

原点安全助力金融机构消费者个人信息保护合规

原点安全

数据安全 金融机构 消费者个人信息保护

首添机密计算创新成果!龙蜥首获 ACM SIGSOFT 杰出论文奖

OpenAnolis小助手

云原生 龙蜥社区 sig 机密计算 ICSE

HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!

HarmonyOS开发者

HarmonyOS

CQ 社区版 v2.1.0 发布 | 新增数据发布变更、内置脱敏规则等功能

BinTools图尔兹

运维 数据库管理 数据脱敏 CloudQuery 数据变更

HTTP请求:requests模块基础使用必知必会 | 京东云技术团队

京东科技开发者

Python HTTP请求 requests 企业号 6 月 PK 榜

深入剖析spring核心容器依赖注入类型和原理:Spring依赖注入类型

互联网架构师小马

玺璐传媒——连续多年获得中央电视台广告一级代理资质

科技热闻

给你的 ABAP 对象打上标签(Tag)

汪子熙

SAP abap Netweaver 思爱普 6 月 优质更文活动

CFlow:从DevOps到BizDevOps,价值流管理是必然的趋势

嘉为蓝鲸

DevOps 价值流 嘉为蓝鲸 VSM

6 种方式读取 Springboot 的配置,老鸟都这么玩(原理+实战)

程序员小富

springboot

Python自动化测试的配置层实现方式对标与落地 | 京东云技术团队

京东科技开发者

Python 自动化测试 配置文件 企业号 6 月 PK 榜

HTTP请求:requests的进阶使用方法浅析 | 京东云技术团队

京东科技开发者

Python HTTP请求 requests 企业号 6 月 PK 榜

共建、共享开源EDA核心共性技术框架|2023开放原子全球开源峰会开源EDA分论坛成功举办

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 开源EDA

全方位整合生态能力,支付宝为小程序开发者升级一站式云服务

TRaaS

小程序 支付宝小程序 云服务 蚂蚁集团

当 Rokid 遇上函数计算

Serverless Devs

大佬带你深入理解Spring依赖注入原理:bean的注册及实例化

互联网架构师小马

IT服务台智能助手,真的靠谱吗?

嘉为蓝鲸

智能助手 GPT IT服务 ChatGPT

直播源码搭建平台技术知识:实时语音识别字幕呈现功能

山东布谷科技

源码 软件开发 源码搭建 直播源码

Wise 的平台工程 KPI 探索之旅

SEAL安全

KPI 平台工程

浅谈中移链中插件的功能及使用

BSN研习社

区块链

vivo 帐号服务稳定性建设之路-平台产品系列06

vivo互联网技术

帐号 服务稳定性 架构优化

一行代码将SAP CDS view数据以ALV的方式输出

汪子熙

abap Netweaver 思爱普 6 月 优质更文活动

Docker 与 Kubernetes:打造高效微服务架构的最佳实践

xfgg

Java Docker Kubernetes 6 月 优质更文活动

Redis AI 第一步_AI&大模型_中间件小哥_InfoQ精选文章