神经网络模型的可执行软件包,可以压缩到多小?

原作 Nadav Rotem

Root 编译自 GitHub

量子位 出品 | 公众号 QbitAI

据Reddit上围观用户说,用机器学习编译器及执行引擎Glow可以做到小几兆。

神经网络模型的可执行软件包,可以压缩到多小?

昨天,有一个Facebook研究人员Nadav Rotem在Reddit上放出了极简版的教程Compile neural networks into small executables,跟着这份教程,你也可以将神经网络编译出独立的可执行软件包。

神经网络模型的可执行软件包,可以压缩到多小?

也在苹果、英特尔工作过两三年的Nadav Rotem

这样,不仅能把编译时间最小化,还能方便Glow用户提前编译成软件包。

美滋滋。

神经网络模型的可执行软件包,可以压缩到多小?

编译前你要知道的事

软件包(Bundle)可以独立执行,是已经编译好的神经网络模型。下面以Makefile为例,向大家演示如何一步步把卷积神经网络编译成极小的可执行文件。举个栗子:

神经网络模型的可执行软件包,可以压缩到多小?

造个软件包

可以用Glow库创建软件包。

在CPU上,软件包是可以和某些可执行文件关联的目标文件。在其他架构体系上,软件包完全是另外一回事。

这份文档讲的主要是怎么用图像分类器工具,给主CPU创建软件包。

用-emit-bundle标签标出输出目录。

神经网络模型的可执行软件包,可以压缩到多小?

以上的指令按network_model_directory_name把神经网络模型编译好,然后生成一份软件包,其中包含两个文件,在output_directory_name目录里。

第一份文件以network_model_name.o命名,包含编译好的网络模型代码。这是个常规的目标文件,可导向项目的其他文件。

第二份文件是以network_model_name.weights命名,包含运行这份编译模型所需的权重。

最后,想一步步跟着压缩神经网络模型的胖友们,请前往:

https://github.com/pytorch/glow/blob/master/docs/AOT.md

想进一步了解Glow架构设计思想的话,可参考原作和他同事们发在arXiv的文章:

https://arxiv.org/pdf/1805.00907

— 完 —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ’ᴗ’ ի 追踪AI技术和产品新动态

版权所有,未经授权不得以任何形式转载及使用,违者必究。