redisai python客户端

redisai的Python项目详细描述


licensePyPI versionCircleCIGitHub issuesCodecov

redisai python客户端

安装

  1. 安装Redis 5.0或更高版本

  2. Install RedisAI

  3. 安装python客户端

$ pip install redisai
  1. 安装序列化反序列化实用程序(可选)
$ pip install ml2rt

RedisAI example repo显示了在python_client部分下使用redisai py制作的几个示例。签出ml2rt以获得方便的功能,这些功能可能有助于转换模型(sparkml、sklearn、xgboost到onnx)、将模型序列化到磁盘、将其加载回redisai py等。

要快速浏览,请查看此示例

print(client.tensorget('mul'))# Try with a scriptscript=ml2rt.load_script('test/testdata/script.txt')client.scriptset('ket',Device.cpu,script)client.scriptrun('ket','bar',input=['a','b'],output='c')

文档

redisai py中提供的api

张量

使用提供的张量对象设置服务器上张量的值

参数
  • name:保存张量的键
  • 张量:一个Tensor对象
  • 形状:张量的形状
  • dtype:redisai.dtype对象表示张量的数据类型。如果输入是list/tuple
  • 则必需
示例
fromredisaiimportClient,DTypeclient=Client()arr=np.array([2,3])client.tensorset('x',arr)client.tensorget('y',[1,2],dtype=DType.float)client.tensorget('z',[3,4,5,6],dtype=DType.float,shape=(1,2,2))

张力器

参数

从服务器检索张量的值。默认情况下,它返回numpy数组 但是可以使用as_typemeta_only参数来控制它

  • name:键保存张力的位置
  • as_型:合成张量型。如果没有返回numpy数组
  • meta_only:如果为true,则不检索该值,仅检索形状和类型
示例
fromredisaiimportTensorx=client.tensorget('x')# numpy arrayy=client.tensorget('y',as_type=Tensor)# A Tensor objectz=client.tensorget('z',meta_only=True)# A Tensor object but without value

加载后端

默认情况下,redisai不会加载任何后端。用户可以显式地 使用此函数加载后端,或者让redisai加载所需的 从默认路径按需后端。

参数
  • 标识符:表示哪个后端的字符串。允许值-tf,torch&onnx
  • path:后端共享对象的路径
示例
client.loadbackend('TORCH','install-cpu/backends/redisai_torch/redisai_torch.so')

模型集

将tensorflow/pytorch/onnx格式的模型存储在redisai中

参数
  • 名称:输入应保存的型号
  • 后端:redisai.backend对象-tf、torch或onnx
  • 设备:redisai.device对象-CPU或GPU
  • 数据:模型为字节字符串。ml2rt.load_model(path)返回这个。
示例

TensorFlow在存储模型时需要图形的输入和输出节点。为了 将正常的tensorflow会话导出到pb文件,可以使用ml2rt

importml2rtml2rt.save_tensorflow(sess,'path/to/graph.pb',output_nodes)model=ml2rt.load_model('path/to/graph.pb')client.modelset('m',Backend.tf,Device.cpu,input=['input_1','input_2'],output='output',data=model)

火炬不需要输入和输出节点信息。你可以用ML2RT出口火炬 模型,但ml2rt需要火炬脚本模型而不是普通火炬模型。结帐 要了解更多信息,请使用document

importml2rtml2rt.save_torch('optimized_graph','path/to/graph.pt')model=ml2rt.load_model('path/to/graph.pt')client.modelset('m',Backend.torch,Device.cpu,data=model)

modelget

从redisai中获取存储的模型

参数

名称:模型的名称

示例
mod_det=client.modelget('m')print(mod_det['backend'],mod_det['device'])model_binary=mod_det['data']

模型del

从redisai中删除存储的模型

参数
  • 名称:型号键
示例
client.modeldel('m')

模型运行

执行模型。在调用modelrun

参数
  • 名称:型号键
  • 输入:输入张量的键。它可以是单个键或键列表
  • 输出:保存输出张量的键。它可以是单个键或键列表
示例
client.tensorset('a',[2,3],dtype=DType.float,shape=(2,))client.tensorset('b',[12,10],dtype=DType.float)model=ml2rt.load_model('test/testdata/graph.pt')client.modelset('m',Backend.torch,Device.cpu,input=['input_1','input_2'],output='output',data=model)client.modelrun('m',['a','b'],['mul'])out=client.tensorget('mul')

脚本集

在redisai中存储脚本。脚本是python语言本身的一个子集,但将被执行 高性能C++运行时redisai使用torch运行时执行脚本,它必须 遵循doc所需的格式。

参数
  • name:保存脚本的键
  • 设备:redisai.device对象-CPU或GPU
  • 脚本:在TorchScript documentation中定义的脚本。脚本中必须定义函数(可以有多个函数)。
示例
script="""def myfunc(a, b):    return a + b"""client.scriptset('script',Device.cpu,script)

SC公司裂谷

从redisai中获取存储的脚本

参数
  • name:可从中检索脚本的键
示例
script_details=client.scriptget('script')device=script_details['device']script=script_details['script']

脚本

从redisai中删除存储的脚本

参数
  • name:可从中检索脚本的键
示例
client.scriptdel('script')

脚本运行

执行脚本。在调用modelrun

参数
  • name:可从中检索脚本的键
  • 函数:要调用的函数的名称。调用的函数可以调用同一脚本中的其他函数
  • 输入:输入张量的键。它可以是单个键或键列表
  • 输出:保存输出张量的键。它可以是单个键或键列表
示例
script="""def myfunc(a, b):    return a + b"""client.scriptset('script',Device.cpu,script)client.tensorget('a',[1,2],dtype=DType.float)client.tensorget('b',[3,4],dtype=DType.float)client.scriptrun('script','mufunc',['a','b'],'out')out=client.tensorget('out')# => [4, 6]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaJSonarray不会从SeekBar读取double   使用另一个类从Java中的2D数组打印用户输入   java ClassNotFoundException的原因   spring调用两个方法以返回Java中的不同页面   httpurlconnection Java禁止的代码错误,但浏览器错误(2)   java画布矩阵转换   java:在另一个java映射中使用“Map”作为值   java“未找到用于解密的证书”(Apache CXF,WSSecurity)   java如何查看JTable中选择的行   java在没有xmlwrappers的情况下重复xml元素序列集   java将垂直直方图打印到控制台   java Spring JDBCTemplate:构造不带特殊字符的JSON   java PayPal RestApi获取用户信息