写点什么

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

评论

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

解码通用 AI Agent:七步构建你的智能系统

Baihai IDP

程序员 AI AI Agent

由 Mybatis 源码畅谈软件设计(一):序

京东科技开发者

推荐一款免费的数据库SQL审核,性能诊断与优化平台

威哥爱编程

sql SQL工具

AI智能体的开发流程

北京木奇移动技术有限公司

AI大模型 AI智能体 软件外包公司

秒验简介与下载说明

MobTech袤博科技

重塑 Java 开发体验:SoFlu-JavaAI 产品体验官招募!100%有礼!

飞算JavaAI开发助手

开发工具 Java. 有奖评测

数据筑底,构建管理会计数据基础

用友智能财务

数据 会计

电商独立站运营:构建成功的数字化商业据点

科普小能手

数据挖掘 电商 独立站 API 接口 API 测试

【干货】商品计划驱动零售盈利性的数据利器

第七在线

区块链智能合约的开发流程

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

鸿蒙(HarmonyOS)原生AI能力之文本识别

猫林老师

鸿蒙 HarmonyOS 鸿蒙应用开发 鸿蒙原生应用开发 HarmonyOS NEXT

合合信息:探索视觉内容安全新前沿

Yan-英杰

Python 人工智能 图像处理

WiFi6 IPQ5018 Meets WiFi7 QCN9274/QCN6274 Cards: The Ultimate Performance Analysis

wifi6-yiyi

wifi

10个案例告诉你mysql不使用子查询的原因

威哥爱编程

MySQL sql

【新年专刊】新的一年设定2025目标--催化型画布

ShineScrum

个人目标

财务规划的成功战略之一:建立数据驱动型决策

智达方通

企业管理 全面预算管理 财务规划 智能技术

算力荒缓解,自主化智算还有必要吗?

脑极体

AI

开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布

JackJiang

即时通讯;IM;网络编程 MobileIMSDK-鸿蒙端

周亚辉的朋友圈,揭开潜藏在AI冰山下的秘密

新消费日报

荣耀 | 7thonline第七在线荣获托比网与易观之星两项大奖

第七在线

网络安全养生秘籍-轻松完成等保测评流程

行云管家

网络安全 等保 等级保护 等保测评

人工智能与云计算的结合:如何释放数据的无限潜力?

天津汇柏科技有限公司

云计算 AI 人工智能

华瑞指数云受邀参加航空航天信息技术交流会,以信创存储推动行业高质量发展

科技热闻

第79期 | GPTSecurity周报

云起无垠

AIGC GPT

AI 智能体(AI Agent)的应用

北京木奇移动技术有限公司

AI应用 AI智能体 软件外包公司

记录一次「OSS上传文件的前置处理机制」实例剖析

京东科技开发者

由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource

京东科技开发者

杭州站来袭-向心力|中外AI应用和出海实战分享沙龙

Zilliz

非结构化数据 AI应用 GenAI AI商业化

当Kmesh遇上Ambient Mesh

华为云原生团队

云计算 容器 云原生

淘宝天猫API接口详解:商品详情与关键词搜索商品的实用指南及代码示例

代码忍者

淘宝API接口 淘宝评论API

具身智能赛道很火,值得ALL in吗?

机器人头条

机器人 特斯拉 大模型 人形机器人 具身智能

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