QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

评论

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

Android技术分享| 实现视频连麦直播

anyRTC开发者

android 音视频 移动开发 视频直播 视频连麦

应届生如何拿到高薪和职业方向

hanaper

编程 程序员 音视频 软件工程师 应届生

请珍惜每一次被 Code Review 的机会

escray

学习 极客时间 朱赟的技术管理课 8月日更

阿里高工从入门,基础,进阶到项目实战,全面讲解spring boot

Java 程序员 架构 面试 spring Boot Starter

Express Flutter SDK 全面支持空安全

ZEGO即构

flutter 大前端 音视频 空安全

FastApi-03-查询参数

Python研究所

FastApi 8月日更

FIL分币平台系统源码/FIL分币平台搭建

Geek_23f0c3

Filecoin fil挖矿

NLP随笔(二)

毛显新

人工智能 自然语言处理 深度学习

Java程序员面试需要准备的一些东西

北游学Java

Java 面试

业界良心啊!第五次更新的Spring Cloud Alibaba升级太多内容

Java架构追梦

Java 阿里巴巴 架构 SpringCloud Java技术提升

Kali Linux --《网络安全》-- 使用 WireShark 对常用协议抓包并分析原理

学神来啦

安全攻防 网络安全 信息安全 Wireshark

用好这两个小工具,制作乐谱更高效!

懒得勤快

赋能后疫情时代的商业创新,用友BIP的力量

海比研究院

微前端在平台级管理系统中的最佳实践

中原银行

如何用Camtasia进行内容补充?

淋雨

Camtasia

Vue进阶(一):Vue 学习资料汇总

No Silver Bullet

Vue 8月日更

ClickHouse存储原理初窥

循环智能

性能优化 OLAP Clickhouse

详解Guitar Pro的自动化编辑器之节拍自动化

懒得勤快

他是如何被公司辞退,再到1000个小时后拿到阿里巴巴offer的?

Java架构师迁哥

格物致知,零代码训练营第三期顺利结业

明道云

FIL挖矿分币系统搭建(现有源码)

Geek_23f0c3

Filecoin fil FIL分币系统

拼拼有礼系统软件开发案例介绍

開發15347427695

大数据训练营hive作业

Clarke

客户选型零代码软件到底在对比哪些方面?

明道云

Linux进程调度-CFS调度器原理分析及实现,懂了

Linux服务器开发

Linux服务器开发 Linux内核 Linux后台开发 CFS调度器 Linux进程调度

补齐AI人才短板!百度飞桨师资培训高校行走进天津大学

百度大脑

人工智能 飞桨

下午4点半,浪潮云说直播间精彩继续

云计算

拼拼有礼模式系统开发详解APP

開發15347427695

工作中如何使用GULP构建项目?

加百利

JavaScript 大前端 8月日更 gulp

AI系统中的偏差与偏见

百度开发者中心

AI 最佳实践 方法论 系统开发 语言 & 开发

ApacheCon Asia 2021: Apache APISIX 技术议题一览

API7.ai 技术团队

Apache 开源 网关 APISIX

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