我从各种来源(主要来自官方文件(听说Tensorflow Lite(ARM(使用这三个库——Ruy、Eigen、XNNPACK——进行操作。
我知道它们在某种程度上加速了TF-Lite中的计算(主要是卷积(,但我不确定每个库的用途。我知道Eigen是一个BLAS库,但我不确定其他库是什么,以及它们在TF-Lite中是如何相互关联的。
有人愿意解释一下它们的不同用途,以及它们是如何在TF Lite中结合使用的吗?(可能是呼叫堆栈?(
我一直在查阅每个图书馆的官方文件,但我找不到Ruy和XNNPACK的详细信息。Ruy说它提供了高效的矩阵乘法,但BLAS库不是这样做的吗?
TensorFlow Lite的旧版本使用Eigen和Gemmlowp库来加速计算。然而,在Arm平台上,与Arm计算库相比,性能最差。
TensorFlow Lite在2.3版本前后取代了Eigen和Gemmlowp,并使用Ruy矩阵乘法库。他们有着相似的目的,但鲁表现得更好。Ruy在Arm平台上是默认的,但您仍然可以在不使用Ruy的情况下编译TensorFlow Lite。
XNNPACK的性能甚至优于Ruy,但它只专注于浮点运算。
关于Ruy性能基准测试,请检查此线程https://github.com/google/ruy/issues/195,以及Pixel4上的基准测试https://docs.google.com/spreadsheets/d/1CB4gsI7pujNRAf5Iz5vuD783QQqO2zOu8up9IpTKdlU/edit#gid=510573209.