zmq_ops是Avatar训练框架依赖的一个组件,通过把它集成到tensorflow中,可以使得tensorflow支持在线实时学习和训练。它的主要功能包括:
- 符合tensorflow io接口标准,能够和tensorflow集成在一起
- 提供单向数据传输的PUSH-PULL模式,也支持双向数据传输的REQ-ROUTER模式
conda install zeromq
conda install tensorflow
# 编译前要设置conda环境路径
export CONDA_ENV_PATH=/path/to/conda/env
cd zmq_ops
python setup.py install
pip install zmq-ops
zmq reader主要提供ZMQ中的PUSH-PULL模式中的PULL端,它提供了3个OP:
- zmq_reader_init(end_point, hwm):初始化zmq reader
- zmq_reader_next(resource, types, shapes):读取下一组数据
- zmq_reader_readable(resource):判断zmq reader是否可读
zmq server主要提供ZMQ中的REQ-ROUTER模式中的ROUTER端,它提供了3个OP
- zmq_server_init(end_point, hwm):初始化zmq server
- zmq_server_recv_all(resource, types, shapes, min_cnt, max_cnt):尽量从zmq server多读取数据,最少min_cnt条数据,最多max_cnt条数据,并把数据组成一个batch返回,返回client_id和tensors
- zmq_server_send_all(resource, client_id, tensors):把tensors按照client_id发送给不同的客户端
具体使用案例可以参考zmq_reader_test.py和zmq_server_test.py文件