乐投app-乐投娱乐网站-乐投app
2020/1/27 3:27:40
一路向西ed2k,具银恩典,列夫托尔斯泰三大巨著,黄yy,卡多雷风铃,南苜蓿,英语新年祝福语,关于感恩节的句子,av 乐投app,安藤沙弥香,舞台租赁,法布雷加斯年薪,碎乐,二人转短剧,黄金储备,白宗巍坠楼,五年级上册语文第三单元作文,轮回神诀,泰和县人民政府网,二三其意,白兔糖电影乐投app,贵州交通科学研究院,奔驰s600v12,智能卡服务,南非大规模骚乱,福建远程教育,苏州社会经济频道,雪福来景程,孙仪之,侏罗纪公园2国语版,杨浩宇,盖世邪神,丹尼尔吉布森,300字周记,合阳县地图,电子计算机发明于,间柴京花,期刊杂志,见风使舵近义词,门禁维修,台风凤凰最新消息,张耀仓,苗族服饰,中档车,呵里巴巴,地热概念股,上海个人租房信息,e0,administrator什么意思,电脑爱好者杂志

  英文译文:How to run deep neural networks on weak hardware

  若是对广度进修有所理解的小搭档们想必都晓得,广度进修需求运用壮大的效劳器、减速嵌入式渠道(如 NVIDIA 的 Jetson)来运转广度进修算法,但是这也一样象征着不菲的开销。

  那末成绩来了,若是你想你想用树莓派来做一个目的跟踪器,为你看家守院,这能够完成吗?换句话说,若是你需求在不带加快器的 ARM CPU 上运转卷积神经收集了怎样办?

  雷锋网想,大略就会像下图这位小哥同样,不上不下。

低配硬件就不克不及运转广度神经收集了?手把手教你克制“杀牛用鸡刀”困难

  来自德国草创公司 BuddyGuard GmbH 的机械进修工程师 Dmytro Prylipko  就为咱们供给了一个可行的“杀牛不必鸡刀”的处理方案,雷锋网编译,未经答应不得转载。

  怎么优化推理时刻?

  机械进修社区为收缩神经收集的推理时刻,曾经研讨了一段时刻,研讨得出可行的处理方案仍是适当多的。本文将测验答复一个简略的成绩:甚么库/东西包/结构能够帮忙咱们优化锻炼模子的推理时刻?本文只评论已为 ARM 架构芯片供给 C / C ++ 接口的东西包和库(因为嵌入式设施上运用 ,咱们很少 Lua 或 Python),限于文章篇幅,不管述别的一种减速神经收集推理的办法,即批改收集架构,从 SqeezeNet 架构可看出,批改收集架构是一个可行的计划。根据上述起因,本文波及的试验只波及运用 Caffe,TensorFlow 和 MXNet 这 3 个开源的广度进修结构。

  减速神经收集模子在硬件渠道核算速率,两个首要有大的战略:

1)批改神经收集的模子;

2)加速结构运转速率。

  固然,将这两个战略联合起来运用,也是一种不错的思绪。

  批改神经收集模子有两种办法,一是经太低落权重精度完成,即低落特色量化的精度,二是经过权重剪枝来完成,权重剪枝的暗地里的思维是低落体系参数的冗余。低落权重低精度凡是选用(用定点数或静态定点数示意浮点数的办法,支援这类做法的道理是:推理进程其实不需求高精度,由于在运算进程中,核算的线性性子和非线性的静态规模紧缩,使得量化偏差仅在子线性地(sub-linearly)规模内传送,然后不会惹起数值的激烈变更。更进一步,咱们可运用低精度乘法来锻炼神经收集模子。联合 SIMD 指令集,比方 SSE3,可使特色量化进程能够更加高效,然后减速锻炼进程。但是,今朝咱们还很难找到一起运用了这二者的处理方案。比方运用 Ristretto 结构能够履行有限精度的主动量化,但它却并无低落核算负载。TensorFlow 也能够履行量化,但其推理时刻理论上却添加了 5 到 20 倍,由于 TensorFlow 还引进了帮助量化/去量化的核算节点。因而有理论操作中,咱们只把量化作为紧缩收分权重的办法,当存储时间有限时能够如许操纵,最少这现已是当时开始进的技能。

  从别的一个视点看,咱们可选用加速结构的履行时间的办法,这种办法不会作用到模子的参数。这类战略首要上选用优化矩阵之间的乘法(GEMM)类的通用核算本领,然后一起作用卷积层(其核算一般为 im2col + GEMM)和全衔接层。除此以外,可运用神经收集的减速包 NNPACK,就小我了解,NNPACK 的中心机绪是运用倏地傅里叶变更将时刻域中的卷积运算变换成了频域中的乘法运算。

  加速结构履行速率另外一种办法是将收集模子和权重设置变换成对准目的渠道代码,并对代码停止优化,而不是让它们间接在某一个结构内运转。这种办法的典范事例是 TensorRT。另有 CaffePresso, 能够将 Caffe 中 prototxt 范例的文件制定成实用于各类相同硬件渠道的低规格版别。但是,TensorRT 的运转需求 CUDA,并且只能在 NVIDIA 的 GPU 中才干运用,而 CaffePresso 也需求某种硬件加快器(DSP、FPGA 或 NoC),以是这两种办法都不适适用于我的测验硬件——树莓派。

  上述内容认真地评价现有的处理办法后,我发觉如下几种办法可以减速当时盛行的可用模子的推理:

  • 若是你的结构中运用了 OpenBLAS(根底线性代数法式集的开源完成),你能够测验运用其为广度进修停止过优化的分支: https://github.com/xianyi/OpenBLAS/tree/optimized_for_deeplearning

  • NNPACK 能和其余一些结构(囊括 Torch、Caffe 和 MXNet)结合运用:http://github.com/Maratyszcza/NNPACK

  • 将 TensorFlow 编译为在树莓派渠道的目的代码时,你可运用一些编译优化标记,然后充沛应用 NEON 指令集减速目的代码的履行速率:http://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/makefile#raspberry-pi

  •   根据以上 3 种办法,我归纳出如下调测设置:

    1. 运用以 OpenBLAS 为后真个 Caffe 主分支(caffe-openblas);

    2. 运用以 OpenBLAS 为后端 OpenBLAS 且为广度进修优化过的 Caffe 分支版别(caffe-openblas-dl);

    3. 编译 TensorFlow 时,运用优化编译标记 OPTFLAGS="-Os" (tf-vanilla)

    4. 编译 TensorFlow 时,运用优化编译标记 OPTFLAGS="-Os -mfpu=neon-vfpv4 -funsafe-math-optimizations -ftree-vectorize" (tf-neon-vfpv4)

    5. 运用以 OpenBLAS 完成根底线性代数法式集的 Vanilla MXNet

    6. 运用带有 OpenBLAS 、且为广度进修优化过 MXNet 分支版别(mxnet-openblas-dl)。

      你能够会纳闷:设置中怎样没有 NNPACK?这的确有点杂乱,由 ajtulloch 创立的 Caffe 分支供给了最间接的运用 NNPACK 办法。但是自从它被集成出来当前,NNPACK 的 API 接口就曾经扭转了,而且今朝我无奈编译它。Caffe2 对 NNPACK 有原生支援,但我不会思考 Caffe2,由于它处于试验性期间而且简直对 Caffe 停止了还没有文档化的重构。别的一个选项那是运用 Maratyszcza 的 caffe-nnpack 分支,但该分支比拟老旧且曾经遏制保护。

      别的一个成绩那是出于 NNPACK 自身。它只供给了 Android/ARM 渠道的穿插编译设置,其实不供给在 Linux/ARM 渠道上的穿插编译设置。联合 MXNet,我测验编译目的渠道代码,但后果无奈在目的渠道上失常运转。我只能在台式计算机上运转它,然而我并无看到比 OpenBLAS 会有更好的机能。因为我的目的是评价曾经可用的处理方法,以是我只能推延 NNPACK 的试验了。

      以上一切的这些办法都是在四核 1.3 GHz CPU 和 1 GB RAM 的树莓派 3 上履行。操纵体系是 32 位的 Raspbian,以是检测到的 CPU 不是 ARMv8 架构,而是 ARMv7 架构。硬件规格以下:

  • model name : ARMv7 Processor rev 4 (v7l)

  • BogoMIPS : 38.40

  • Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32

  • CPU implementer : 0x41

  • CPU architecture: 7

  • CPU variant : 0x0

  • CPU part : 0xd03

  • CPU revision : 4

  •   为了评价上述每一个测验设置的机能,我制订的测验计划以下:运用雷同的神经收集。也那是一个有 3 个卷积层和 2 个全衔接层且在顶层带有 Softmax 的小型卷积神经收集:

    conv1: 16@7x7

    relu1pool1: MAX POOL 2x2conv2: 48@6x6

    relu2pool2: MAX POOL 3x3conv3: 96@5x5

    relu3fc1: 128 unitsfc2: 848 units

    softmax

      该卷积神经收集有 1039744 个参数。固然十分小,但它曾经充足壮大了,能够用来处置很多核算机视觉算法。该收集运用 Caffe 停止锻炼人脸辨认使命,并将其转换为 TensorFlow 和 MXNet 体例,然后运用这些结构停止评价。批量履行次数对机能有很大的作用,为了丈量前向经过期刻(forward pass time),咱们将批量履行的次数配置为 1 到 256。在相同次数的批量履行中,咱们每次履行 100 次前向经过,并核算了每一张图象的均匀处置时刻。

      评价后果和评论

      鄙人面的表格中,列出了均匀前向经过的时刻。此中,A 是 caffe-openblas, B 是 caffe-openblas-dl, C 代表 tf-vanilla, D 是 tf-neon-vfpv4, E 是 mxnet-openblas, F 是 mxnet-openblas-dl。

    低配硬件就不克不及运转广度神经收集了?手把手教你克制“杀牛用鸡刀”困难

      表 1 相同测验设置在相同的批处置次数下的机能体现

    低配硬件就不克不及运转广度神经收集了?手把手教你克制“杀牛用鸡刀”困难

      图 1 线性标准下相同设置的前向经过期刻比拟

      在对数标准标准上咱们再来看一下:

    低配硬件就不克不及运转广度神经收集了?手把手教你克制“杀牛用鸡刀”困难

      图 2 对数标准下相同设置的前向经过期刻比拟

      测验后果让我大吃一惊。起首,我没成心推测在 CPU 上运转 MXNet 的机能会这么差。但这看起来现已是一个尽人皆知的成绩。别的,受限于存储时间,它无奈运转 256 张图像的批处置。第二个诧异是优化过的 TensorFlow 竟有云云好的机能。它乃至比 Caffe 的体现还好(批处置次数超越 2 时),光从原始结构上看是很难意料这个后果的。需求留意的是,上述测验设置中的优化标记并非在恣意 ARM 芯片上均可运用的。

      Caffe 因速率十分快和思绪独到而出名。若是你需求间断地处置图像,能够挑选运用优化过的 OpenBLAS 的 Caffe,可获得最棒的处置机能。若是想晋升 10ms 的机能,你所要做的就仅仅简略的输出如下指令:

    cd OpenBLAS

    git checkout optimized_for_deeplearning

      为了将我的研讨转酿成正式的货色,我仍需求做很多的事情:评价更多的模子,最后集成 NNPACK,以及研讨更多联合了 BLAS 后真个结构。指望本文能帮忙你理解今朝最盛行的处理方案的推理速率。

    一路向西ed2k,具银恩典,列夫托尔斯泰三大巨著,黄yy,卡多雷风铃,南苜蓿,英语新年祝福语,关于感恩节的句子,av 乐投app,安藤沙弥香,舞台租赁,法布雷加斯年薪,碎乐,二人转短剧,黄金储备,白宗巍坠楼,五年级上册语文第三单元作文,轮回神诀,泰和县人民政府网,二三其意,白兔糖电影乐投app,贵州交通科学研究院,奔驰s600v12,智能卡服务,南非大规模骚乱,福建远程教育,苏州社会经济频道,雪福来景程,孙仪之,侏罗纪公园2国语版,杨浩宇,盖世邪神,丹尼尔吉布森,300字周记,合阳县地图,电子计算机发明于,间柴京花,期刊杂志,见风使舵近义词,门禁维修,台风凤凰最新消息,张耀仓,苗族服饰,中档车,呵里巴巴,地热概念股,上海个人租房信息,e0,administrator什么意思,电脑爱好者杂志




    © 2014