圆点 快的未来已来到贵市的某个活动。

加入 Redis Released

Redis AI 初步步骤

在 RedisConf 2019 上,Redis推出了一个名为 RedisAI 的新模块。其理念是将机器学习 (ML) 和深度学习 (DL) 结合在一起,并尽可能在数据当前所在的地方执行人工智能 (AI) 模型。这听起来很不错,但如果你完全不懂这些概念呢?如果你对机器学习感兴趣,但又不确定其含义呢?你如何理解这些概念呢?你的上司的上司说:“我们需要集成机器学习”,但上周你认为这意味着他要你运行额外的编译步骤或类似操作。现在你坐在这里试图理解很多新术语,以及如何将这些术语引入你的组织。

好吧,首先,深吸一口气,让我们退一步。今天,我们将开始深入研究一些 AI 术语,并向你展示如何将 RedisAI 模块添加到你现有的 Redis 系统中,并开始研究这些内容。

机器学习到底是什么?

那么机器学习究竟是什么?其广泛的概念是指构建读取数据并根据该数据以及任何新进入数据的预测算法。在最初的“训练”期间,有人会查看模型的预测,并告诉系统每个猜测是好还是坏。深度学习涉及构建算法和馈送模型数据,但不是通过外部训练,而是由系统自我训练。

训练这些系统非常复杂,通常在完全不同的应用程序中进行(别担心,你无需编写该应用程序,除非你喜欢线性代数)。最流行的机器学习系统之一称为TensorFlow,它是开源的。TensorFlow 帮助你构建、训练和部署 ML 应用程序,并拥有一个庞大的社区,可以帮助你入门。

ML 在实际中的应用

你可能已经与 ML 系统进行过交互,只是你没有意识到。如果你拥有 Netflix 帐户,并且你针对某个电影或节目点击“喜欢”或“不喜欢”,那么你正在训练模型,以更好地预测你喜欢的电影和节目类型。Netflix 的建议与你说你喜欢的事物直接相关。可悲的是,这就是我的队列中充斥着诸如此类的内容的真假彩虹王国(感谢孩子们)。

此外,如果你过去几年一直在使用互联网,那么你肯定会看到聊天机器人的爆发式增长。这些也是 ML/DL 工具。它们接受过回答问题方面的训练,而且在某些情况下,它们还可以与人围绕相关主题进行相当不错的交谈。当然,训练有时会脱轨,但无论如何,这都很有意思!

Redis 的作用是什么?

传统上,所有这些数据都需要四处移动,这可能会带来一些严重的 DevOps 挑战。试想一下一个正在保存你的对话状态的聊天机器人。由于该数据对该聊天机器人而言很重要,所以该数据需要存储在某个地方。它需要这次会话和语境来帮助撰写它接下来要讲的内容。我们需要反序列化该数据,将其通过该模型运行,然后在将该数据发回 Redis 后对其进行序列化。执行所有这些操作会使用 CPU 周期和网络开销,以便在应用程序之间进行转换并将数据在系统之间进行转换。

RedisAI 为你提供了新的数据结构,并允许 Redis 管理运行模型和执行它们的请求。从本质上说,我们正在运行你的模型,而你的数据就在那里。没有网络开销,没有序列化/反序列化。

如何开始?

我是一个老派的人,我喜欢自己构建此类工具。因此,当我想使用 Redis 的新模块时,我会转到源代码并构建它。我们有几种不同的方法可以让你在本地运行 RedisAI

通过 Docker 安装...

如果你是一个 Docker 用户,那么在你的系统上获取一个带有 RedisAI 的 Redis 实例非常简单

$ docker pull redisai/redisai
$ docker run -p 6379:6379 -it --rm redisai/redisai

你仍然需要克隆 RedisAI 存储库来访问示例。

...或从源代码构建

让我们在命令行中动手实践。现在,在你编写代码之前,你需要安装两个特定内容: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 存储库并获取依赖项

$ bash get_deps.sh

现在构建

$ mkdir build
$ cd build
$ cmake -DDEPS_PATH=../deps/install ..
$ make
$ cd ..

如果一切顺利,你即可加载模块并开始玩耍。过程应该相当顺利。我碰到的唯一问题是没有安装 CMake。而一旦安装了 CMake,整个过程便能正常运行。

现在,在进一步操作之前,你应该确保 Redis 服务器没有运行。我当时忘记了自己总是在自己的电脑上以服务的形式启动 Redis,所以它一直就在后台运行!当我尝试加载模块时,一切看起来都运行良好,但模块并未实际加载。由于 Redis 服务器已经在后台运行,所以我的操作变得古怪,而且模块并没有加载。如果你使用 Homebrew 来安装 Redis,停止 Redis 服务器将会是一个简单的命令。 brew services stop Redis 在我的 Mac 上完成了这项任务。

停止 Redis 后,你可以运行

$ redis-server --loadmodule build/redisai.so

通过仅使用 CLI 中的 MODULE LOAD 命令,你的生活可能会变得更加轻松

> MODULE LOAD path/to/build/redisai.so

现在,将模块加载到服务器中,你便可以开始玩耍了!

尝试一些示例

恭喜你取得这样的进展,现在乐趣才刚刚开始。你已经拥有尝试 RedisAI 所需的一切。如果你对此领域的一切都不熟悉,你可能不确定下一步该做什么,因此 RedisAI 提供了一个示例,你可以运行该示例以查看其工作原理。

如果这是你涉足人工智能世界的第一步,那么你需要做的一件事就是建立和训练一个模型。这些步骤超出了 Redis 和本文的范围(但如果你有兴趣,这里有一些 很棒的资料),因此我们将跳过所有这些,并为你提供一些你可以立即尝试的数据。

我在 Github 上设置了一个存储库,你可以下载该存储库并使用该示例在此文件夹中,你会找到开始所需的一切:

我们的示例项目是一个 CLI 图像分类应用程序。我们将向其提供一张图像,该应用程序应该能够弄清楚图像中有什么。例如,我们有一张大熊猫的图像,当我们将图片提供给该应用程序时,该应用程序应该告诉我们,图像中有一只大熊猫。

要启动并运行此操作,请将 cd 命令传入 JS 文件夹并运行 yarnnpm install. 将安装启动此操作所需的一切。之后,你所需要做的就是运行以下命令:

$ node mobilenet.js ../img/panda.jpg

panda.jpg 图像对此博客帖子的页眉图像。如果一切顺利,你的输出应与此相似

赞,我们收到了一些反馈!好的?这具体意味着什么,我们做了什么?我们向节点应用提供了熊猫图片和计算机。我们的系统经过训练,可以查看图像,并告诉我们图像中有什么。因此我们在此处所做的是向我们的应用提供 2 张图像,而应用能够告诉我们它“看到”的图片中的内容。

我们已能够快速在 Redis 实例中设置 RedisAI,以便你可以向其提供数据,并观察其找出并分类你提供给它的图像。此示例是面部识别和图像识别的基本构建模块。现在随着 RedisAI 的出现,我们能够处理我们数据所在的地方,即 Redis 中。