使用 tensorflow sever会有时延

预计延迟时间更长。MKL使用OpenMP,其线程设置不是动态的。英特尔优化的TensorFlow(我从这里称之为TF-MKL)可以提供比普通TF更好的吞吐量,并为相当静态的工作负载提供正确的设置,但是由于OpenMP线程和TF线程不同,它也可能具有更差的延迟彼此了解。使用TF-MKL的TF服务在动态工作负载中也很难工作,因为OpenMP的num个线程只设置一次作为全局设置。英特尔团队意识到了这一缺点,并正在考虑让MKL-DNN接受一个Eigen线程池(它是TF线程池的基础)作为OpenMP的替代品。(但不会在不久的将来发生。)

更深入的线程解释:
Normal TensorFlow有两个线程池:inter-op(可以同时运行多少个op)和intra-op(ops将用于执行的线程)。并发操作共享/拆分操作内线程池中的线程,因此在任何时间点最多可以有#inter + #intra线程。TensorFlow可以同时运行少于#inter ops,实际上我通常会看到3-4个(或者有时10个)ops同时运行。将#inter和#intra设置为#cores通常效果很好。

TF-MKL是不同的。每个MKL操作使用OMP_NUM_THREADS个线程。OpenMP线程池是来自线程间和内部线程池的独立线程池。因此,在更糟糕的情况下,可以运行O(OMP_NUM_THREADS * #inter + #intra)线程。如果运行多个会话,则通过乘以#concurrent_tf_serving_sessions。这可能导致核心超载。因此,我们别期待TF-MKL在TF服务胜过正常TF。

上一篇:JAVA写接口傻瓜(!)教程(二)


下一篇:sql sever 触发器的概念和使用