【论文阅读SIGCOMM2019】Neural packet classification

题目:Neural Packet Classification

会议:SIGCOMM2019

目录

1.相关背景

1.1 问题描述

1.2 现有工作及其弊端

2.本文工作

2.1 总体思想

2.2 NeuroCuts方案

2.3 总体设计

2.4 算法设计问题及解决方法

2.5 实验评估

3.读后感

4.作者背景介绍


1.相关背景

1.1 问题描述

        数据包分类是计算机网络中最基本的问题之一。包分类的目标是将给定的包与一组规则中的规则相匹配,同时要优化分配分类时间和/内存占用。包分类是许多网络功能的关键构件,包括防火墙、访问控制、流量工程和网络测量。因此,包分类器被企业、云提供商、ISPs和IXPs广泛使用。

        包分类是计算机网络中的一个基本问题。这个问题暴露了计算和状态复杂性之间的艰难权衡,这使得它特别具有挑战性。为了解决这个问题,现有的解决方案依赖于复杂的手工调整启发法,这些方法很脆弱,很难优化。

1.2 现有工作及其弊端

        现有的数据包分类解决方案可以分为两大类。第一类解决方案是基于硬件的。它们利用三元内容寻址存储器(TCAMs)将所有规则存储在关联内存中,然后将一个包与所有这些规则并行地匹配。因此,TCAMs提供了恒定的分类时间,但也有很大的局限性。TCAMs本身就很复杂,这种复杂性导致了很高的成本和功耗。这使得基于TCAMs的解决方案对于实现大型分类器非常困难。

        第二类解决方案是基于软件的。这些解决方案构建复杂的内存数据结构(通常是决策树)来有效地执行包分类。虽然这些解决方案比基于TCAMs的方案具有更大的可伸缩性,但是它们的速度较慢,因为分类操作需要从根到匹配叶遍历决策树。

        建立有效的决策树是困难的。在过去的20年中,研究人员提出了大量基于决策树的数据包分类解决方案。然而,尽管多年的研究,这些解决方案有两个主要的局限性。首先,他们依靠手工调整的启发式构建树。例子包括最大化分裂熵,平衡分裂。使用自定义空间度量、通配符规则的特殊处理等等。这使得它们很难理解和优化不同的规则集。如果启发式过于一般化,它就不能利用特定规则集的特性。如果启发式是为一组特定的规则设计的,它通常不会在另一组具有不同特征的规则上获得良好的结果。

        其次,这些启发式方法并没有针对给定的目标(例如,树的深度)进行显式优化。他们根据仅与全局目标松散相关的信息(例如,子树中规则数量的差异,每个维度中不同范围的数量)做出决策。因此,它们的性能远非最佳。

2.本文工作

2.1 总体思想

        在本文中,我们提出一种深层强化学习(RL)方法来解决分组分类问题。有几个特性使这个问题非常适合于深度RL。首先,许多现有的解决方案通过分裂节点操作迭代构造决策树。其次,这些操作的效果(例如,分裂节点)只能在构建整个树之后进行评估。这两个特征很自然地被RL的能力所捕获,即采取具有稀疏和延迟回报的行动。第三,生成数据轨迹和评估决策树具有较高的推演效率,从而缓解了深层RL算法中众所周知的高样本复杂度问题。我们的解决方案NeuroCuts,使用简洁的表示来编码状态和动作空间,并有效地探索候选决策树以优化全局目标。它生成针对特定规则集和给定性能指标(如分类时间、内存占用,或两者的组合)优化的紧凑决策树。对Class-Bench的评估表明,NeuroCuts在分类时间上比现有手工算法平均多出18%,并且减少了最多3倍的分类时间和内存占用。

2.2 NeuroCuts方案

        设计了NeuroCuts,这是一种用于数据包分类的深度RL解决方案,可学习构建有效的决策树。RL具有三个特征,特别适合数据包分类。1.构建决策树的自然解决方案是从一个节点开始并递归拆分(剪切)它。但在决定剪切节点时,在完成实际树的构建之前,我们不知道该决定是否是一个好的决定(即,它是否导致有效的树)。RL自然地捕获了此特征,因为它不能立即知道给定决策对绩效目标的影响。2.不同于现有的启发式算法所采取的行动与绩效目标之间的关系松散,RL算法的显式目标是直接最大化绩效目标。3.与其他RL域(例如机器人技术)不同,对于我们的问题,可以快速评估RL模型(几秒钟的CPU时间)。这缓解了RL算法的主要缺点之一:由于需要评估大量模型以找到一个好的解决方案,因此学习时间很短。通过能够快速评估每个模型(并同时看到),我们可以大大减少学习时间。

2.3 总体设计

        NeuroCuts是一种新的Deep RL包分类问题公式。给定规则集和目标功能(即分类时间,内存占用量或两者兼而有之),NeuroCuts将学习构建最小化目标的决策树。

 

图表 1 NeuroCuts系统框架

        图1说明了将NeuroCuts作为RL系统的框架:环境由规则集和当前决策树组成,而代理使用旨在选择最佳切割或分区的模型(由DNN实现) 逐步构建树的操作。剪切动作将沿选定维度(即SrcIP,DstIP,SrcPort,DstPort和协议之一)的节点划分为多个子范围(即2、4、8、16或32个范围),并且 在树中创建了那么多子节点。另一方面,分区动作将节点的规则划分为不相交的子集(例如,基于维度的覆盖率),并为每个子集创建新的子节点。环境在每个步骤中都会通告当前节点的可用操作,代理在其中进行选择以生成树,随着时间的推移,代理将学习优化其决策以最大程度地从环境中获得回报。图2展示了NeuroCuts的学习过程。

  1. NeuroCuts从随机初始化的策略开始,该策略生成形状不佳的树(左,被截断)。随着时间的流逝,它学会减少树的深度并开发出更一致的策略(中心)。该策略收敛于紧凑的depth-12树(右),该树专门用于剪切SrcIP,SrcPort和DstPort。
  2. 相比之下,HiCuts为此规则集生成了一个深度为29的树,该树的分类时间大15倍,慢3倍。

 

图表 2 NeuroCuts的学习过程

2.4 算法设计问题及解决方法

        RL算法的目标是计算一个策略,以最大程度地从环境中获得回报。参考图1,环境定义了操作空间A和状态空间S。代理从初始策略开始,使用多个部署对其进行评估,然后根据这些部署的结果(奖励)对其进行更新。然后,重复此过程,直到对奖励满意为止。

        设计的三个挑战问题:

  1. 1. 如何将可变长度决策树状态st编码为神经网络策略的输入。虽然可以将树扁平化为一维向量,但这种向量的大小将非常大(即成千上万个单位)。这将需要非常大的网络模型来处理此类输入,并且需要数量惊人的样本。解决方案:不尝试解决状态表示问题以处理大量输入,而是利用数据包分类树的底层结构来设计简单而紧凑的状态表示。这意味着当代理决定如何拆分节点时,它仅观察到该节点的固定长度表示形式。所有需要的状态都编码在表示形式中; 没有观察到关于树的其余部分的其他信息。
  2. 2. 如何处理构建决策树的逐节点过程所产生的稀疏和延迟的奖励。解决方案:只在树完成时计算铺开的报酬,并设置γ= 0,从而有效地创建一系列1-step决策问题,类似于上下文bandits。但是,与bandits设置不同的是,在bandit设置中,代理只对每个环境进行一次决策,而这些1-step决策是通过构建树的动态过程连接起来的。
  3. 3. 如何将解决方案扩展到大型数据包分类器。解决方案:使用更大的网络模型并产生更多的训练集。

        状态表示。一个关键的观察结果是,对树节点的操作仅取决于节点本身,因此不必在环境状态下对整个决策树进行编码。我们在整个树上优化全局绩效目标的目标表明,我们需要根据全局状态做出决策。但是,这并不意味着状态表示需要对整个决策树进行编码。给定一个树节点,对该节点的操作只需做出最佳决策即可优化以该节点为根的子树。它不需要考虑决策树中的其他树节点。

        整合现有的启发式。NeuroCuts可以很容易地增加额外的启发式,以改进它学习的决策树。一个例子是添加规则分区操作。除了cut操作,在我们的NeuroCuts实现中,我们还允许两种类型的分区操作:

  • (1)Simple:使用学习的阈值沿单个维度对当前节点进行分区。
  • (2)EffiCuts:使用EffiCuts分区启发式方法对当前节点进行分区

        对当前节点进行分区。向外扩展以处理大型包分类器。算法1中的伪代码用于单线程实现的NeuroCuts。这对于小型分类器来说已经足够了。但是对于拥有数万或数十万规则的大型分类器,并行性可以显著提高训练速度。在图7中,我们展示了如何调整算法1以并行地构建多个决策树处理分类器更新。

        处理分类器更新。经常根据应用程序需求(例如,读取新设备的访问控制规则)更新包分类器。对于只有少量规则的小更新,NeuroCuts修改现有的决策树以反映更改。属性将新规则添加到决策树中现有的结构;删除的规则将从终端叶子节点中删除,当积累了足够的小更新或对分类器进行了较大的更新时,NeuroCuts会重新运行训练。

2.5 实验评估

        为了简化开发,我们在Python中实现了NeuroCuts的决策树数据结构。为了确保实现上的细微差别不会影响我们的结果,我们使用相同的数据结构来实现每个基准算法(例如,HiCuts,EffiCuts等),以及实现NeuroCuts。

        在m4.16xl AWS机器上运行NeuroCuts,每个NeuroCuts实例使用四个CPU内核以加快实验速度。由于NeuroCuts产生的神经网络模型和数据大小非常小(例如,与Atari游戏的图像观察相反),因此无需使用GPU。主要训练瓶颈是决策树的Python实现,每个NeuroCuts实例最多运行一千万个时间步长(即总共生成几千棵树),或者直到收敛为止。

        将NeuroCuts与四种手动调整的算法进行比较:HiCuts,HyperCuts,EffiCuts和CutSplit。我们使用标准基准ClassBench来生成具有不同特征和大小的数据包分类器。基准度量标准来自先前的工作:分类时间(树深度)和内存占用量(每条规则字节)。由于我们对所有算法都使用相同的基础树数据结构,因此深度较小实际上可以保证遍历效率更高,内存占用量也是如此。

        发现NeuroCuts在分类时间上在所有基线上都有显着改善,同时还生成了更为紧凑的树。在优化内存时,NeuroCuts也具有竞争力,与EffiCuts相比,空间中位数提高了25%,而不会影响时间。

        具体性能比较。优化时间:比较了NeuroCuts与ClassBench分类器中HiCuts,HyperCuts,EffiCuts和CutSplit生成的最佳时间优化树。NeuroCuts分别比HiCuts,HyperCuts,EffiCuts和CutSplit分别提高了20%,38%,52%和56%。在70%的案例中,NeuroCuts的表现也优于所有基准的最小值,其中所有基线的中位数改善了18%,平均改善了12%,最佳案例改善了58%。优化空间:NeuroCuts的性能明显优于HiCuts和HyperCuts,因为它可以学习利用分区操作。NeuroCuts的空间优化树比EffiCuts的中位数提高了40%,平均改进了44%。在我们的实验中,NeuroCuts的内存占用量通常不会超过CutSplit,与CutSplit相比,中值内存使用量要高26%,尽管在所有基准上最佳情况下的改进仍然是3倍(66%)。

        另外, NeuroCuts生成的最佳时间优化树的内存占用量显着低于HiCuts和HyperCuts生成的内存占用量,中位空间改进了100倍以上,并且在6.1节中报告了更好的分类时间。但是,这些时间优化的树在空间上与空间优化的NeuroCuts,EffiCuts和CutSplit树没有竞争。

3.读后感

        包分类问题是计算机网络中非常有挑战性的问题,在计算状态复杂性之间很难均衡调节。作者创造性地使用了深度强化学习方法解决该问题,利用强化学习稀疏和延迟回报的特性建立了NeuroCuts系统,在分类时间和内存占用等各个方面表现优异。强化学习因为AlphaGo而为大众熟知,突出优势在于从状态中学习行动,打破了以往监督学习对训练集的依赖。从这篇文章中可以看到作者团队对于强化学习的巧妙运用,推动了其在学术界的发展,以后必将成为经典研究方法供人们使用。事实证明强化学习确实可以比贪心启发式算法那的更好,可以模拟行动的长期结果并且直接优化最终目标。沿着作者这个思路,我们未来还可以探究具有复杂性能启发式的其他数据结构,比如空间数据库的索引等。

4.作者背景介绍

        Eric Liang,是UC伯克利的一名博士生,他致力于强化学习的分布式系统和应用程序。在读研究生之前,他在Google的存储基础架构行业和DatabricksSpark行业工作了4年。目前RISELAB实验室工作,RISELAB代表了伯克利正在进行的数据密集型系统的最新成果,迈出了从大数据分析到更身临其境的重要一步。RISELAB中的任务是开发使应用程序能够与其环境进行智能,安全交互的技术,将在此集中五年的精力,重点关注那些具有安全可解释决策的实时智能的系统。该实验室的工作贡献:

  1. 传感器无处不在。我们将它们放在口袋中,将它们嵌入我们的房屋中,然后在大街上经过。该实验室将实时进行详细量化。
  2. AI可以成真。大数据和廉价计算最终使AI的一些大想法成为现实,还有很多事情要做,但是学习和预测现在是计算工具箱中的实用工具。
  3. 世界是可编程的。我们的车辆,房屋,工作场所和医疗设备日益联网并可编程,计算的影响范围已扩展到包括我们的房屋,城市,领空和血液。

简而言之,数据生成,计算和激活之间的循环正在关闭。这不再是一个小众的场景:它将成为未来的标准技术模式。

链接:https://rise.cs.berkeley.edu/blog/author/ekhliang/

发布了341 篇原创文章 · 获赞 220 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/Suyebiubiu/article/details/105479277
今日推荐