在开发智能实时应用时,你可能经常会通过数据平台来分析和解密大数据中的模式和洞察。这些应用所依赖的后端架构常常会是分布式、可容错和可横向扩展的大数据处理技术。但也有一些情况下,压缩表现形式也是有用的,甚至是必须的。移动设备和(物联网里的)传感器的兴起带来了把计算从云顶移向边缘的软件和设备。另外内存计算也趋向于更快,造成很多流行的(分布式)系统也把数据缓存起来进行运算操作。
为了能更好地说明这一观点,让我来介绍两个最近的案例。通过它们来展现高效的压缩表现形式的重要性。一个案例是移动计算领域的,另外一个则是来自于目前非常流行的分布式计算框架。
深度神经网络和智能移动应用
斯坦福大学CVA(并发的极大系统集成架构)研究组的韩松(Song Han)在他最近的一次报告里介绍了一个帮助在移动设备上优化深度神经网络的研究。深度神经网络在最近取得了长足的进步,并在计算机视觉、语音识别和机器翻译等领域取得了非常好的效果。同时移动计算平台的流行也意味着很多移动应用也希望获得这一能力(深度神经网络)。但挑战是深度学习的模型一般都很大,从而很难成为移动应用(因为要被下载到移动设备上,还要经常更新)。如果是采用基于云的解决方案,则对于特定的应用和行业,网络延迟和隐私又会成为问题。
一种解决方案就是显著地降低深度学习模型的大小。CVA的研究人员最近提出了一个由三个步骤组成的压缩深度神经网络的通用模式:
- 裁剪不重要的连接;
- 量化网络并对权重进行强化;
- 最后使用哈夫曼编码进行编码。
图1:压缩神经网络尺寸的模式比较样图。本·骆易家授权使用
初期试验的结果显示他们的压缩模式可把神经网络的大小减少35到50倍,而压缩后的神经网络的准确度和最初的网络的准确度差不多。CVA的研究人员还为压缩深度神经网络设计了配套的高能效的ASIC加速器,这也预示着为未来的智能移动应用所特别设计的下一代软硬件。
Succinct:在Apache Spark里搜索和点查询压缩过的数据
Succinct是一个“压缩”的数据存储方式。可以让很多点查询方法(搜索、计数、求范围、随机查询)直接对输入数据的压缩模式进行操作。Succinct使用的压缩技术在实际应用中可以获得和gzip差不多的压缩率,同时不需要二级索引、数据扫描或解压缩等技术来支持上述的操作。Succinct并不保存数据文件本身,仅仅是压缩后的形式。通过让用户直接对压缩过的数据直接进行操作,Succinct同时具有低延迟和第存储空间两大优点。
图2:定量比较数据扫描、数据索引和Succinct。因为Succinct是用压缩方式存储数据,并直接对压缩后的形式进行操作,它可以在内存里存放并使用大的多的数据。
作为斯坦福AMPLab实验室的一个研究项目,Succinct已经在2015年年底作为Apache Spark的一部分发布了。这意味着Spark的使用者可以利用Succinct来对文件进行压缩,并可以直接使用搜索查询(包括对压缩的RDD进行正则表达式查询)、计数和范围查询。另外,已经基于Succinct的文件(非结构化)应用接口开发了新的抽象,这就可以把Spark作为文本或键值对型的存储,并使用现有的DataFrame的API来做搜索、计数、范围查询以及随机查询。
拥有了这些新的能力放大了Apache Spark的软件栈,从而可以开发出很多有趣的数据应用。
初步和ElasticSearch的比较结果显示了很大的希望。同时对用户更重要的是Succinct是一个活跃的项目。Succinct团队已经计划在未来的版本中添加很多新的增强功能,包括Succinct Graphs(支持查询压缩的图)、在压缩的数据上支持SQL,以及对于数据预处理和压缩的改进(目前是每核每小时压缩4GB数据)。他们还正在进行一个研究性质的项目,叫做Succinct Encryption(Succinct加密,支持对压缩和加密的数据的查询)。
相关内容
- 在即将来到的Strata+Hadoop World大会圣何塞站的新兴技术日上,卡努•古拉蒂(Kanu Gulati)将会介绍《数据分析中硬件加速的机会》报告。
- 《大数据:高效地收集和处理》,安娜•吉尔伯特(Anna Gilbert)在Strata+Hadoop World大会上针对压缩传感的演讲。
- 《做(几乎)不可能的事》,泰德•唐宁(Ted Dunning)在Strata+Hadoop World大会上针对t-digest和近似算法的演讲。
- 死硬数据科学家,Strata+Hadoop World 2015圣何塞大会的完整视频剪辑。