速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:403357

评论

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

阿里内部百亿级高并发系统(全彩版小册开源):基础篇、数据库篇、缓存篇、消息队列篇、分布式服务篇、维护篇、实战篇;带你从基础到实战

Java 程序员 架构 高并发

iOS 面试策略之系统框架-并发编程

iOSer

ios 并发编程 系统框架

作业二:分析微信朋友圈高性能复杂度

刘丽

架构训练营

生态“群海”:数字化转型的供需之变

脑极体

GraalVM系列(二):GraalVM核心特性实践

孤岛旭日

GraalVM

包容的回答者

王辉

个人成长 沟通 团队文化 批判性思维 正念

2021金三银四Java岗大厂面试经验总结(附面试真题)

北游学Java

Java 面试

GitHub标星235k!这份阿里P9纯手写的Java并发核心手册堪称无敌了

Java架构之路

Java 程序员 架构 面试 编程语言

致我的青春我的感情故事

Changing Lin

520单身福利

官方出手,一针见血!Spring Boot官方手册来袭:从入门到实战

Java架构之路

Java 程序员 架构 面试 编程语言

分库分表 springboot+dubbo+mybatisPlus+shardingSphere

try catch

dubbo 分库分表 springboot ShardingSphere MyBatisPlus

平台化服务的基石(四):再议用户权限,更优雅的模型

孤岛旭日

用户权限 企业建模

Why WebRTC|前世今生

声网

WebRTC RTC

CompusBulider (模模搭)学习笔记7:3D场景中第一人称行走

ThingJS数字孪生引擎

3D可视化 数字孪生

淘宝网能抗住“千亿级”并发量的奥秘是什么?

Java架构师迁哥

实现私域流量的长效积累,一场医美直播背后的数字营销密码

脑极体

3、深潜KafkaProducer核心架构

杨四正

kafka 消息队列 kafka架构 kafka源码分析

采用DevOps的7个主要障碍,你一定不知道!

禅道项目管理

DevOps

【干货分享】开放原子超级链动态内核XuperCore核心技术揭秘

百度开发者中心

区块链 超级链

大话Java异常

若尘

Java 异常 异常处理 520单身福利

【签约计划】试用期名单公布

InfoQ写作社区官方

签约计划 热门活动

UCloud一站式智能大数据平台USDP免费版正式发布!

UCloud技术

hadoop CDH

高可用 Keycloak,K8s

Zhang

MySQL k8s keycloak

浅谈前端异常监控平台实现方案

devpoint

异常处理 indexedDB leveldb

5分钟速读之Rust权威指南(五)

wzx

rust

如何制定战略?

石云升

创业 战略 职场经验 5月日更

基于 Qt Quick Plugin 快速构建桌面端跨平台组件

网易云信

音视频 qt

520 表白,因一个分号被拒

悟空聊架构

520单身福利

毫秒级的竞技PK | 电信行业需要的5G速度

VoltDB

大数据 数据分析 5G 实时计算

浪潮“分布式云+”行动计划持续深化 三大产品正式发布

云计算

520 属于程序员的诗

荩沫

520单身福利

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