redisai python客户端
redisai的Python项目详细描述
redisai python客户端
安装
安装Redis 5.0或更高版本
安装python客户端
$ pip install redisai
- 安装序列化反序列化实用程序(可选)
$ 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_type
和meta_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]