二值化神经网络的高度优化推理机。

larq-compute-engine的Python项目详细描述


Larq计算引擎larq logo

TestsPyPI - Python VersionPyPIPyPI - LicenseJoin the community on Spectrum

部署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)板:

ModelTop-1 AccuracyRPi 4 B, ms (1 thread)Pixel 1, ms (1 thread)
QuickNet (.h5)58.6 %31.416.8
QuickNet-Large (.h5)62.7 %48.725.5
QuickNet-XL (.h5)67.0 %82.944.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:

  1. 选择一个Larq模型

    您可以使用Larq来构建和训练您自己的模型,或者从Larq Zoo中选择一个预先训练过的模型。在

  2. 转换Larq模型

    LCE构建在TensorFlow Lite之上,并使用TensorFlow Lite FlatBuffer format转换和序列化Larq模型进行推理。我们为LCE Converter提供额外的优化传递,以提高在受支持的目标平台上执行Larq模型的速度。在

  3. Build LCE

    LCE文档提供了Android64-bit ARM-based boards的构建说明,如Raspberry Pi。请按照提供的说明为某个受支持的目标创建本机LCE生成或交叉编译。在

  4. Run推断

    LCE使用TensorFlow Lite Interpreter执行推理。除了已经可用的内置TensorFlow-Lite操作符之外,优化的LCE操作符被注册到解释器中,以执行模型的Larq特定子图。为您自己的应用程序创建和构建与LCE兼容的TensorFlow-Lite解释器的示例是here。在

下一步行动

关于

Larq计算引擎是由一组深入学习的研究人员和普卢梅雷工程师开发的,目的是帮助我们加快自己的研究和二值化神经网络的普遍采用。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用cucumberjvm执行java异步步骤   java通过Jackson2导出/导入JSON文件。9.7   java Tomcat在页面加载时给出500错误   将filereader合并到代码中的java问题   从GUI java将对象属性写入文件时发生swing错误   java简单程序,用于检查输入字符串是否为关键字(指定了关键字)   java如何在布局之间滑动时打开音频文件?   hibernate解析Java。lang.ClassCastException   java如何解决记录测试结果的Jenkins构建错误?   Java:在重写文件之前检查文件是否需要更新的最佳方法是什么?   mongodb在Java中重用数据库连接   java Hibernate(n+1)使用非k连接选择   java如何在Spring批处理中创建JSON文件读取器   java将MuPDF导入Android应用程序   字典我对Java中的多态性有疑问