在 RedisConf 2019 上,Redis Labs推出了一个名为 RedisAI 的新模块。其理念是将机器学习 (ML) 和深度学习 (DL) 结合在一起,并尽可能接近数据当前所在的位置执行人工智能 (AI) 模型。
这听起来太神奇了,但如果你是全新的这一切呢?如果你对机器学习感兴趣,但你不太确定这是什么意思呢?你如何理解这一切?你老板的老板说,”我们需要整合机器学习”,上周你认为这意味着他希望你运行一个额外的编译步骤或什么。现在,您坐在这里,试图了解许多新术语,以及如何将这些条款引入您的组织。
好吧,首先,深呼吸,让我们退后一步。今天,我们将开始挖掘一些 AI 语言,并向您展示如何将 RedisAI 模块添加到您现有的 Redis 系统中,并开始玩弄这些东西。
什么是机器学习?
那么,机器学习究竟是什么?广义的概念是指构建基于数据以及任何新数据读取数据并做出预测的算法。在最初的”训练”期间,有人查看模型的预测,并告诉系统每个猜测是好是坏。深度学习涉及构建算法和馈送模型数据,而不是外部培训,系统自身训练。
训练这些系统是复杂的,通常发生在一个完全不同的应用程序(不要担心,你不需要编写该应用程序,除非你享受线性代数)。最受欢迎的机器学习系统之一称为TensorFlow,它是开源的。TensorFlow 可帮助您构建、训练和部署 ML 应用程序,并拥有一个伟大的社区来帮助您入门。
野生的ML
您可能已经与 ML 系统交互的比您意识到的要多。如果您有 Netflix 帐户,并且单击特定电影或节目的”喜欢”或”不喜欢”,则说明您正在训练一个模型,以更好地预测您喜欢的电影和节目类型。Netflix 的建议与您所说的内容直接相关。可悲的是,这就是为什么我的队列充满了像真实和彩虹王国(感谢孩子)的东西。
此外,如果你在过去几年已经在互联网上,你毫无疑问已经看到了聊天机器人的爆炸。这些也是 ML/DL 工具。他们受过回答问题的训练,在某些情况下,他们可以与一个人围绕相关话题进行很好的交谈。当然,训练有时可以偏离轨道,但如果没有别的,这是有趣的观看!
雷天适合哪里?
传统上,所有这些数据都需要移动,这可能会带来一些严重的 DevOps 挑战。考虑一个聊天机器人来保存您的对话状态。这些数据需要住在某处,因为它对机器人很重要。它需要这种对话和上下文来帮助制定接下来要说的话。我们需要对数据进行反序列化,在模型上运行数据,然后在数据发回 Redis 后序列化数据。执行所有这些工作使用 CPU 周期和网络开销从一个应用转到另一个应用,并在系统之间转换数据从本质上讲,我们在数据所在的位置运行您的模型。无网络开销,无序列化/反序列化。
如何开始?
我是个老式的人,我喜欢自己制造这样的工具。因此,当我想玩一个新的模块Redis,我去的源和构建它。我们有几种不同的方法,您可以让 RedisAI 在本地运行:
要么通过 Docker 安装…
如果您是 Docker 用户,在系统上获取具有 RedisAI 的 Redis 实例是微不足道的:
$ docker pull redisai/redisai
$ docker run -p 6379:6379 -it --rm redisai/redisai
您仍希望克隆RedisAI repo以访问示例。
…或从源生成
让我们把手弄脏在命令行里。现在,在制作代码之前,您需要安装两个特定的东西:cmake 和 git-lfs。在我的 Macbook 上,这就像使用 Homebrew 一样简单:
$ brew install git-lfs cmake
您还需要确保您运行的是 reis-server 版本 4.09 或更高版本。如果需要检查,请键入:
$ redis-server --version
现在,您已经检查了服务器版本,并知道你在那里很好,走出去,克隆AI存储库:
$ git clone git@github.com:RedisAI/RedisAI.git
将自己 Cd 到 RedisAI repo 中,获取依赖关系:
$ bash get_deps.sh
现在生成:
$ mkdir build
$ cd build
$ cmake -DDEPS_PATH=../deps/install ..
$ make
$ cd ..
如果一切按计划进行,您就可以加载模块并开始播放。这个过程应该相当顺利。我遇到的唯一问题是没有安装CMake。一旦我这样做了,整个过程就成功了。
现在,在进一步之前,应确保 Redis 服务器未运行。我忘了,我总是启动它作为我的计算机上的服务,所以它只是运行在后台!当我尝试加载模块时,一切似乎都工作正常,但模块实际上并没有加载。Redis 服务器已经在后台运行,我事情变得很古怪,模块没有加载。如果您已使用 Homebrew 安装 Redis,则停止 Redis 服务器应该是一个简单的命令。酿造服务停止雷米在我的Mac上做把戏。
停止 Redis 后,可以运行:
$ redis-server --loadmodule build/redisai.so
只需使用 CLI 中的 MODULE LOAD 命令,就可以让生活变得轻松一些:
> MODULE LOAD path/to/build/redisai.so
现在,将模块加载到服务器中,您可以开始玩!
玩一些例子
恭喜你能够取得这样的成绩,现在乐趣开始了。你有你需要的一切,以尝试与RedisAI。如果您对所有这些内容都很了解,您可能不确定下一步,因此 RedisAI 附带了一个示例,您可以运行以查看工作情况。
如果这些是您进入 AI 世界的第一步,您需要做的下一件事是构建和训练模型。这些步骤不在 Redis 和本文的范围之内(但如果您感兴趣,有一些很棒的可用材料),因此我们将跳过所有这些内容,并为您提供一些可以立即使用的数据在该文件夹中,您将找到入门所需的一切:
我们的示例项目是 CLI 图像分类应用。我们将给它一个图像,应用程序应该能够找出图像中的内容。例如,我们有一个熊猫的图像,当我们给应用程序的图片,应用程序应该告诉我们,有一个大熊猫的图像。
要启动并运行此映像,请 cd 放入 JS 文件夹并运行纱线或 npm 安装。安装所有需要它去。然后,所有你需要做的是运行:
$ node mobilenet.js ../img/panda.jpg
Panda.jpg 图像是此帖子的标题图像。如果一切顺利,输出应如下所示:
真棒,我们回来了东西!伟大?这到底是什么意思?我们做了什么?我们为我们的节点应用程序提供了熊猫的图片和一台电脑。我们的系统经过培训,可以查看图像并告诉我们图片中的内容。因此,我们在这里做的是提供我们的应用程序2图像,应用程序能够告诉我们它”看到”在图像。
很快,我们已经能够在 Redis 实例中设置了 RedisAI,因此您可以提供数据,并观察它找出并分类您提供的图像。此示例是面部识别和图像识别的基本构建基块。