二值化神经网络的高度优化推理机。
larq-compute-engine的Python项目详细描述
Larq计算引擎
部署LCA推理引擎(LCA)是高度优化的计算引擎 极度量化的神经网络,比如 二值化神经网络。它目前支持各种移动平台 并在一款1像素手机和一款覆盆子Pi上进行了测试。 LCE提供手动优化的TensorFlow Lite集合 支持的指令集的自定义运算符,在内联汇编或C++中开发 使用编译器内部函数。LCE利用优化技术 例如tiling最大化缓存命中数,vectoriation以最大化缓存命中数 计算吞吐量,以及多线程并行化 多核现代台式机和移动CPU的优势。在
Larq Compute Engine是BNN开发库系列的一部分;您还可以查看Larq来构建和培训BNN,Larq Zoo用于预先训练的模型。
主要特点
- 在
轻松的端到端集成从培训到部署:
- 在
LCE与Larq和 TensorFlow提供流畅的端到端培训和部署体验。在
在 - 在
用于常见机器学习任务的Larq预训练BNN模型集合 在Larq Zoo提供 可与LCE一起使用。在
在 - 在
LCE提供了一个自定义的MLIR-based model converter,它 与TensorFlow Lite完全兼容,并执行其他操作 Larq模型的网络级优化。在
在
- 在
- 在
Lightning fast deployment在各种移动平台上:
- 在
LCE通过 为BNN模型提供手工优化的内核和网络级优化。在
在 - 在
LCE目前支持64位基于ARM的移动平台,如Android手机 还有覆盆子馅饼板。在
在 - 在
LCE中的线程并行性支持对于具有 多核CPU。在
在
- 在
性能
下表显示了single threaded上Larq计算引擎的性能 名为QuickNet的新BNN模型的不同版本(在ImageNet数据集上训练,发布于Larq Zoo) 在Pixel 1 phone (2016)上 还有一块覆盆子Pi4 B型(BCM2711)板:
Model | Top-1 Accuracy | RPi 4 B, ms (1 thread) | Pixel 1, ms (1 thread) |
---|---|---|---|
QuickNet (.h5) | 58.6 % | 31.4 | 16.8 |
QuickNet-Large (.h5) | 62.7 % | 48.7 | 25.5 |
QuickNet-XL (.h5) | 67.0 % | 82.9 | 44.2 |
作为参考,dabnn(另一个主要的BNN库)报告了像素1手机上Bi-RealNet(56.4%准确率)的推理时间为61.3毫秒, 而LCE在同一设备上的birealnet推理时间为41.6ms。 此外,他们还提出了一种改进型BiRealNet-Stem,在43.2ms内达到了56.4%的相同精度
下表显示了multi-threaded上的Larq计算引擎的性能 一个像素1的手机和一个树莓皮4型号的B(BCM2711) 董事会:
^{tb2}$于2020年8月21日以LCE定制为基准 TFLite Model Benchmark Tool (见here) 以及具有随机输入的BNN模型。在
入门
按照以下步骤部署带有LCE的BNN:
- 在
选择一个Larq模型
在 - 在
转换Larq模型
LCE构建在TensorFlow Lite之上,并使用TensorFlow Lite FlatBuffer format转换和序列化Larq模型进行推理。我们为LCE Converter提供额外的优化传递,以提高在受支持的目标平台上执行Larq模型的速度。在
在 - 在
Build LCE
LCE文档提供了Android和64-bit ARM-based boards的构建说明,如Raspberry Pi。请按照提供的说明为某个受支持的目标创建本机LCE生成或交叉编译。在
在 - 在
Run推断
LCE使用TensorFlow Lite Interpreter执行推理。除了已经可用的内置TensorFlow-Lite操作符之外,优化的LCE操作符被注册到解释器中,以执行模型的Larq特定子图。为您自己的应用程序创建和构建与LCE兼容的TensorFlow-Lite解释器的示例是here。在
在
下一步行动
- 探索Larq pre-trained models。在
- 学习如何build和 trainBNNs给你自己 使用Larq。在
- 如果您是一个移动开发人员,请访问Android quickstart。在
- 请参阅Raspberry Pi和64位ARM板的构建说明here。在
- 试试我们的example programs。在
关于
Larq计算引擎是由一组深入学习的研究人员和普卢梅雷工程师开发的,目的是帮助我们加快自己的研究和二值化神经网络的普遍采用。在
- 项目
标签: