python tf_inception_grpc_client.py --image=images/pupper.jpg total time: 0.58314920859s
下图显示了针对标准 , 优化的Tensorflow服务和客户端超过10次运行的预测请求的延迟:

文章插图
从标准Tensorflow服务到优化版本的平均延迟降低了约70.4% 。
优化预测吞吐量Tensorflow服务也可以配置为高吞吐量处理 。优化吞吐量通常是为“脱机”批处理完成的 , 在“脱机”批处理中并不严格要求延迟界限 。
服务器端批处理
延迟和吞吐量之间的权衡取决于支持的batching 参数 。
通过设置--enable_batching和--batching_parameters_file标记来启用batching 。可以按SessionBundleConfig的定义设置批处理参数(https://github.com/tensorflow/serving/blob/d77c9768e33e1207ac8757cff56b9ed9a53f8765/tensorflow_serving/servables/tensorflow/session_bundle_config.proto) 。对于仅CPU系统 , 请考虑设置num_batch_threads可用的核心数 。
在服务器端达到全部批处理后 , 推理请求在内部合并为单个大请求(张量) , 并在合并的请求上运行一个Tensorflow会话 。在单个会话上运行一批请求是CPU/GPU并行性真正能够发挥作用的地方 。
使用Tensorflow服务进行批量处理时需要考虑的一些用例:
- 使用异步客户机请求填充服务器端上的batches
- 通过将模型图组件放在CPU / GPU上来加速批处理
- 在从同一服务器提供多个模型时交错预测请求
- 强烈建议对“离线”高容量推理处理进行批处理
在客户端进行批处理将多个输入组合在一起以生成单个请求 。
由于ResNet模型需要NHWC格式的输入(第一维是输入数) , 我们可以将多个输入图像聚合成一个RPC请求:
...batch = [] for jpeg in os.listdir(FLAGS.images_path):path = os.path.join(FLAGS.images_path, jpeg) img = cv2.imread(path).astype(np.float32) batch.Append(img)...batch_np = np.array(batch).astype(np.float32) dims = [tensor_shape_pb2.TensorShapeProto.Dim(size=dim) for dim in batch_np.shape] t_shape = tensor_shape_pb2.TensorShapeProto(dim=dims) tensor = tensor_pb2.TensorProto(dtype=types_pb2.DT_FLOAT, tensor_shape=t_shape, float_val=list(batched_np.reshape(-1)))request.inputs['inputs'].CopyFrom(tensor)

文章插图
对于一批N个图像 , 响应中的输出张量将具有请求批次中相同数量的输入的预测结果 , 在这种情况下N = 2:

文章插图
硬件加速对于训练 , GPU可以更直观地利用并行化 , 因为构建深度神经网络需要大量计算才能获得最佳解决方案 。
但是 , 推理并非总是如此 。很多时候 , 当图执行步骤放在GPU设备上时 , CNN将会加速推断 。然而 , 选择能够优化价格性能最佳点的硬件需要严格的测试、深入的技术和成本分析 。硬件加速并行对于“脱机”推理batch processing更有价值 。
推荐阅读
- 帝国cms二维码收款功能如何实现?帝国cms实现二维码收款功能演示
- 如何使用 Linux Cockpit 来管理系统性能
- 红茶专家教您如何将正山小种红茶存放至8年
- 祁门工夫价格多少钱斤如何辨别祁门红茶好坏
- 如何冲泡红茶 正确的红茶冲泡方法新手必看
- 如何选购正宗的正山小种红茶 购买正山小种需要注意这6大点
- 如何选购台式电脑硬盘?小白装机选购固态硬盘和机械硬盘知识指南
- 勃起不坚如何调理 勃起不坚怎么办
- 化妆品|美容行业九大痛苦现状,如何解决生存之道?
- 说说金骏眉的起源历史 如何识别正宗的金骏眉
