RedisAI安装教程包含可能遇到的各种问题

RedisAI安装手册

1.官方最快的安装方法

RedisAI 是一个 Redis 模块。要运行它,您需要一个 Redis 服务器(v6.0.0 或更高版本)、模块的共享库及其依赖项。 以下部分描述了如何开始使用 RedisAI。

首先需要安装Redis6.0以上的版本。具体可见:redis6.2.6安装教程

Docker

安装 RedisAI 的最快方法是启动其官方 Docker 容器映像。

CPU版本
docker run -p 6379:6379 redislabs/redisai:latest-cpu-x64-bionic
GPU版本
docker run -p 6379:6379 --gpus all -it --rm redislabs/redisai:latest-gpu-x64-bionic

如果没有安装docker的话,可以参考一下:Ubuntu Docker 安装 | 菜鸟教程 (runoob.com)

如果测试docker时,发现这个错误,是因为镜像源的问题。

$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally

具体修改措施,可以参考 解决Unable to find image ‘hello-world:latest‘ locally 问题

如果能够通过docker直接安装最好,不然则使用源码安装。

2.使用源码安装

基本要求

  • Packages: git, python3, make, wget, g++/clang, & unzip

  • Cmake 3.0 or higer

  • CUDA11.2 and cuDDN 8.1 or higer (if GPU is required)

  • Redis v6.0 or higer

获取源码

git clone --recursive https://github.com/RedisAI/RedisAI

跳转到源码文件夹

cd RedisAI

建立依赖关系(此处需要下载构建RedisAI后端可能会很慢,需要更换镜像源)

第一次安装一些软件需要更换镜像源:conda、pip、Ubuntu镜像源等。

CPU版本

bash get_deps.sh

GPU版本

bash get_deps.sh gpu

建立模型

当依赖构建了之后,就可以建立RedisAI的模型用以下的命令:

make -C opt clean ALL=1
make -C opt

当然也可以建立支持GPU的RedisAI的模型

make -C opt clean ALL=1
make -C opt GPU=1

后端依赖

RedisAI 目前支持 PyTorch(libtorch)、Tensorflow(libtensorflow)、TensorFlow Lite 和 ONNXRuntime 作为后端。本节显示了 RedisAI 和支持的后端之间的版本映射。这非常重要,因为一个版本的序列化机制可能与另一个版本不匹配。为确保您的模型适用于给定的 RedisAI 版本,请查看后端文档,了解后端版本与构建 RedisAI 版本之间的不兼容功能。

RedisAIPyTorchTensorFlowTFLiteONNXRuntime
1.0.31.5.01.15.02.0.01.2.0
1.2.51.9.02.6.02.0.01.9.0
master1.9.02.6.02.0.01.9.0

加载模块

需要启动 Redis 服务器时加载模块, 只需要使用 --loadmodule 命令行开关来启动服务器。因为我们装的是GPU的版本,所以GitHub上面的CPU版本会提示不存在一些文件。跳转到RedisAI项目下

cd RedisAI

CPU 加载模块:

redis-server --loadmodule ./install-cpu/redisai.so

GPU 加载模块(我们使用是这个命令):

redis-server --loadmodule ./install-gpu/redisai.so

使用GPU加载之后,效果图如下:
在这里插入图片描述

可能存在的问题:

使用我们的安装方法安装之后,有时使用上面创建服务器可能会报错,说端口已经占用:
在这里插入图片描述

解决方法很简单只需要把刚刚创建的服务器关闭:

redis-cli shutdown

通过命令 ps -ef | grep -i redis 可以查看当前redis相关进程,如果shutdown失败,可以使用 kill -9 16678(对应进程号)
在这里插入图片描述

尝试一下

当加载后,您可以使用 redis-cli 与 RedisAI 进行交互。

RedisAI教程

RedisAI

RedisAI 是一个 Redis 模块,用于执行深度学习/机器学习模型并管理其数据。其目的是通过为流行的DL / ML框架和无与伦比的性能提供开箱即用的支持,成为模型服务的"主力"。RedisAI 既利用 Redis 经过生产验证的基础架构简化了图形的部署和服务,又通过坚持数据局部性原则最大限度地提高了计算吞吐量。

RedisAI的优势

因为 Redis 是内存中的数据结构服务器,所以 RedisAI 使用它来存储其所有数据。RedisAI 支持的主要数据类型是 Tensor,它是 DL/ML 域中数据的标准表示形式。由于张量存储在 Redis 服务器的内存空间中,因此 RedisAI 的任何后端库都可以轻松访问它们,延迟极小。此外,RedisAI也是模型的最佳测试平台,因为它允许并行执行多个计算图,并在未来的版本中实时评估它们各自的性能。

数据结构

RedisAI支持一下数据结构:

  • 张量(Tensor):表示值的n维数组
  • 模型(Model):表示受支持的 DL/ML 框架后端之一的计算图
  • 脚本(Script) :表示一个Torch程序

DL/ML后端:

  • TF : TensorFlow 后端
  • TFLITE : The TensorFlow Lite 后端
  • Torch: PyTorch 后端
  • ONNX : ONNXRuntime 后端

开始

当服务器启动之后,我们可以通过任何redis客户端 来连接它。如果之前的安装教程通过了之后应该是有 redis-cli 客户端的。如果没有的话也可以从官方容器中获得。命令如下:

docker exec -it redisai redis-cli

如果已经具有客户端的话,直接在命令行输入命令

redis-cli

进入客户端之后显示:

在这里插入图片描述

接着我们就可以创建 RedisAI的张量(Tensor)

例如,考虑张量:
KaTeX parse error: No such environment: equation* at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲*̲}̲ tA = \begin{bm…
我们可以使用以下命令 AI.TENSORSET 来创建名称为"tA"的RedisAI张量:

AI.TENSORSET tA FLOAT 2 VALUES 2 3

在这里插入图片描述

显示OK说明操作成功了,这个 ‘tA’ 这个键已经存储在 RedisAI 中,我们可以通过命令 EXISTS、 TYPE 来访问。

在这里插入图片描述

RedisAI 张量在模型和脚本的执行中用作输入和输出。要从 RedisAI 张量值读取数据,有 AI.TENSORGET 命令,如下图所示获取tA的状态:
在这里插入图片描述

加载模型(选择跳过)

模型是有某个框架生成的深度学习或机器学习冻结图。RedisAI 模型数据结构表示这存储在数据库中可以运行的DL/ML模型。

cat graph.pb | docker exec -i redisai redis-cli -x \
               AI.MODELSTORE mymodel TF CPU INPUTS 2 a b OUTPUTS 1 c BLOB

运行模型(选择跳过)

127.0.0.1:6379> AI.TENSORSET tA FLOAT 2 VALUES 2 3
OK
127.0.0.1:6379> AI.TENSORSET tB FLOAT 2 VALUES 3 5
OK
127.0.0.1:6379> AI.MODELEXECUTE mymodel INPUTS 2 tA tB OUTPUTS 1 tModel
OK

有兴趣的可以访问:Introduction - RedisAI - A Server for Machine and Deep Learning Models

使用Python插件来运行AI流

ReidisGears 模块通过python插件与RedisAI内置集成, 该插件支持AI流的注册,并在事件发生时触发它。例如,我们可以存储一下AI流,该流在Redis中设置张量并再这些张量上执行mymodel(自己的模型)。

import redisAI

async def ModelRun(record):
    tensor_a = redisAI.createTensorFromValues('FLOAT', [2,2], [1.0, 2.0, 3.0, 4.0])
    tensor_b = redisAI.createTensorFromValues('FLOAT', [2,2], [2.0, 3.0, 2.0, 3.0])
    redisAI.msetTensorsInKeyspace({'a{1}': tensor_a, 'b{1}': tensor_b})

    # assuming 'mymodel' is a model stored in Redis
    modelRunner = redisAI.createModelRunner('mymodel')     
    redisAI.modelRunnerAddInput(modelRunner, 'a', tensor_a)
    redisAI.modelRunnerAddInput(modelRunner, 'b', tensor_b)
    redisAI.modelRunnerAddOutput(modelRunner, 'c')

    # run the model asynchronously in RedisAI
    res = await redisAI.modelRunnerRunAsync(modelRunner)
    redisAI.setTensorInKey('c{1}', res[0])
    return "ModelRun_OK"

GB("CommandReader").map(ModelRun).register(trigger="ModelRun")

然后,您可以触发此执行并通过运行以下命令获取结果:

redis> RG.TRIGGER ModelRun
1)  "ModelRun_OK"
redis> AI.TENSORGET c{1} VALUES
1) "2"
2) "6"
3) "6"
4) "12"

RedisAI-Python 学习

RedisAI/redisai-py: Python client for RedisAI (github.com)

PyTorch + Redisai - 知乎 (zhihu.com)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值