在本文中,我们介绍了一项关于基于深度学习的方法,用于多面体编译器中的自动代码优化。该提出的技术探讨了仿射和非抗逆环转换的组合,以找到最小化给定程序的执行时间的转换序列。这种探索是由一个基于深度学习的成本模型指导的,该模型评估了每个转换序列将产生的速度。初步结果表明,所提出的技术在最先进的多面体编译器(Pluto)上实现了2.35倍的几何速度。
translated by 谷歌翻译
张量程序的自动安排是一个过程,搜索算法自动探索了目标硬件平台上给定程序的候选时间表(程序转换)以提高其性能。但是,这可能是一个非常耗时的过程,具体取决于张量程序的复杂性和目标设备的容量,通常会探索成千上万的程序变体。为了解决这个问题,在本文中,我们介绍了转移调整的想法,一种新颖的方法来识别和重用张量程序之间的自动安排。我们使用深度神经网络(DNN)演示了这一概念,从预先调整的DNN中采取了一组自动安排,并使用它们来减少新DNN的推理时间。我们将转移调整与最先进的ANSOR自动安装程序进行了比较,将给定DNN模型的最大速度定义为Ansor使用其建议的完整调整时间来实现的目标。在服务器级CPU上以及在11种广泛使用的DNN型号上,我们观察到,转移调整可达到$ 88.41 \%$($ 49.13 \%\%\%$)的最大速度,而ANSOR则需要$ 6.5 \ tims $ $ $ $ $ $平均与之匹配。我们还评估了在受约束的边缘CPU上进行转移调节,并观察到搜索时间的差异会加剧,Ansor需要$ 10.8 \ times $ $ $ $ $ $,以匹配转移调整的速度,这进一步证明了其价值。我们的代码可从https://www.github.com/giclab/transfer-tuning获得
translated by 谷歌翻译
There is an increasing need to bring machine learning to a wide diversity of hardware devices. Current frameworks rely on vendor-specific operator libraries and optimize for a narrow range of server-class GPUs. Deploying workloads to new platforms -such as mobile phones, embedded devices, and accelerators (e.g., FPGAs, ASICs) -requires significant manual effort. We propose TVM, a compiler that exposes graph-level and operator-level optimizations to provide performance portability to deep learning workloads across diverse hardware back-ends. TVM solves optimization challenges specific to deep learning, such as high-level operator fusion, mapping to arbitrary hardware primitives, and memory latency hiding. It also automates optimization of low-level programs to hardware characteristics by employing a novel, learning-based cost modeling method for rapid exploration of code optimizations. Experimental results show that TVM delivers performance across hardware back-ends that are competitive with state-ofthe-art, hand-tuned libraries for low-power CPU, mobile GPU, and server-class GPUs. We also demonstrate TVM's ability to target new accelerator back-ends, such as the FPGA-based generic deep learning accelerator.The system is open sourced and in production use inside several major companies.
translated by 谷歌翻译
在各种设备上部署深度学习模型已成为一个重要的话题。硬件专业化的浪潮为多维张量计算带来了一套多样化的加速度原始图。这些新的加速原始基原料以及新兴的机器学习模型带来了巨大的工程挑战。在本文中,我们提出了Tensorir,这是一种编译器抽象,用于通过这些张量计算原始素优化程序。Tensorir概括了现有机器学习编译器中使用的循环巢表示,以将张量计算作为一流的公民。最后,我们在抽象之上构建了一个端到端框架,以自动优化给定的张量计算原始图的深度学习模型。实验结果表明,Tensorir编译会自动使用给定硬件后端的张量计算原始图,并提供与跨平台的最新手工精制系统竞争性能的性能。
translated by 谷歌翻译
部署各种深度学习(DL)型号有效地推动了DL编译器的研究。生成优化的张量码的难度驱动DL编译器以询问自动调整方法,并且越来越多的需求需要增加自动调整效率和质量。目前,DL编译器将输入DL模型分区为几个子图,并利用自动调整以找到这些子图的最佳张量代码。然而,现有的自学方法通常将子图视为个体,并且在其上忽略了它们的相似性,因此在有限的时间预算下未能利用更好的张力代码。我们向DL编译器提出Familyseer,即使有限的时间预算也可以生成更好的张量码。 Familyseer利用子图之间的相似性,并且子图之间的差异可以将它们组织成示例家庭,其中调整一个子图也可以改善同一家庭内的其他子图。每个家庭的成本模型获得了更多由家庭产生的纯化培训样本,并更准确,以便通过成本模型用轻量级估计来替换真正硬件上的昂贵测量。我们的实验表明,FamilySeer可以比最先进的自动调整框架更有效地生成模型代码,比最先进的自动调整框架更有效。
translated by 谷歌翻译
In the past few years, neural architecture search (NAS) has become an increasingly important tool within the deep learning community. Despite the many recent successes of NAS, however, most existing approaches operate within highly structured design spaces, and hence explore only a small fraction of the full search space of neural architectures while also requiring significant manual effort from domain experts. In this work, we develop techniques that enable efficient NAS in a significantly larger design space. To accomplish this, we propose to perform NAS in an abstract search space of program properties. Our key insights are as follows: (1) the abstract search space is significantly smaller than the original search space, and (2) architectures with similar program properties also have similar performance; thus, we can search more efficiently in the abstract search space. To enable this approach, we also propose a novel efficient synthesis procedure, which accepts a set of promising program properties, and returns a satisfying neural architecture. We implement our approach, $\alpha$NAS, within an evolutionary framework, where the mutations are guided by the program properties. Starting with a ResNet-34 model, $\alpha$NAS produces a model with slightly improved accuracy on CIFAR-10 but 96% fewer parameters. On ImageNet, $\alpha$NAS is able to improve over Vision Transformer (30% fewer FLOPS and parameters), ResNet-50 (23% fewer FLOPS, 14% fewer parameters), and EfficientNet (7% fewer FLOPS and parameters) without any degradation in accuracy.
translated by 谷歌翻译
Tensor program tuning is a non-convex objective optimization problem, to which search-based approaches have proven to be effective. At the core of the search-based approaches lies the design of the cost model. Though deep learning-based cost models perform significantly better than other methods, they still fall short and suffer from the following problems. First, their feature extraction heavily relies on expert-level domain knowledge in hardware architectures. Even so, the extracted features are often unsatisfactory and require separate considerations for CPUs and GPUs. Second, a cost model trained on one hardware platform usually performs poorly on another, a problem we call cross-hardware unavailability. In order to address these problems, we propose TLP and MTLTLP. TLP is a deep learning-based cost model that facilitates tensor program tuning. Instead of extracting features from the tensor program itself, TLP extracts features from the schedule primitives. We treat schedule primitives as tensor languages. TLP is thus a Tensor Language Processing task. In this way, the task of predicting the tensor program latency through the cost model is transformed into a natural language processing (NLP) regression task. MTL-TLP combines Multi-Task Learning and TLP to cope with the cross-hardware unavailability problem. We incorporate these techniques into the Ansor framework and conduct detailed experiments. Results show that TLP can speed up the average search time by 9.1X and 3.0X on CPU and GPU workloads, respectively, compared to the state-of-the-art implementation. MTL-TLP can achieve a speed-up of 4.7X and 2.9X on CPU and GPU workloads, respectively, using only 7% of the target hardware data.
translated by 谷歌翻译
本文介绍了正向和反向模式的校正和高效自动分化的校正和高效自动化。自动差异是获得数值节目梯度的方法,这对于优化,不确定量化和机器学习至关重要。计算渐变的计算成本是实践中的常见瓶颈。对于使用OpenMP为多核CPU或GPU并行化的应用程序,还希望并行计算渐变。我们提出了一个框架,原因是生成的衍生代码的正确性,我们向差异化模型证明了我们的OpenMP扩展。我们在自动差异化工具磁带上实施此模型,并在我们的扩展差异化过程之后差异化的目前的测试用例。生成的衍生程序的性能在前进和反向模式优于顺序,尽管我们的反向模式通常比输入程序更差。
translated by 谷歌翻译
由于它们在现实世界中的广泛采用,提高深神经网络(DNN)的运行时性能至关重要。现有的优化DNN的张量代数表达的方法仅考虑由固定的预定义运算符表示的表达式,在一般表达式之间缺少可能的优化机会。我们提出了Ollie,这是第一个基于衍生的张量程序优化器。 Ollie通过利用一般张量代数表达式之间的转换来优化张量程序,从而实现了一个更大的表达搜索空间,其中包括由先前工作作为特殊情况支持的搜索空间。 Ollie使用基于混合衍生的优化器,该优化器有效地结合了探索性和指导性推导,以快速发现高度优化的表达式。对七个DNN的评估表明,Ollie可以在A100 GPU上胜过2.73 $ \ times $(平均为1.46美元$ \ times $),在V100上最多可超过2.68 $ \ times $(1.51 $ \ times $) GPU分别。
translated by 谷歌翻译
深度神经网络(DNN)已成为移动设备上许多主要应用的核心推动因素。为实现高精度,DNN模型越来越深,数百甚至数千个操作层,导致高记忆和推理的计算要求。操作员融合(或内核/层融合)是许多最先进的DNN执行框架中的关键优化,例如Tensorflow,TVM和MNN。然而,这些框架通常根据某些模式采用融合方法,这些模式过于限制,以涵盖运营商和层连接的多样性。另一方面,基于多面体的循环融合技术,在没有运营商级信息的情况下对计算的低级视图工作,并且也可能错过潜在的融合机会。为了解决这一挑战,本文提出了一种名为DNNFusion的新颖和广泛的环路融合框架。这项工作的基本思想是在DNN的操作员视图下工作,但通过开发个人运营商及其组合的分类来扩展融合机会。此外,DNNFusion包括1)基于新的基于数学 - 性能的图形重写框架,以降低评估成本,并促进后续操作员融合,2)一种集成的融合计划,利用高级分析和精确的轻量级分析,以及3 )融合代码生成期间的附加优化。在15个DNN模型中广泛评估DNNFusion,具有各种任务,模型尺寸和图层计数。评估结果表明,DNNFusion最高达到8.8倍的融合机会,优于具有9.3倍的最先进的DNN执行框架。记忆要求减少和加速可以在移动设备上执行许多目标模型,甚至可以使它们成为实时应用程序的一部分。
translated by 谷歌翻译
我们在这项工作中展示了内存密集型计算可能导致由于片上存储器访问和CPU-GPU上下文切换开销导致严重的性能问题,以及各种深度学习模型。对于此问题,当前立即(JIT)内核融合和代码生成技术具有局限性,例如粗融合计划探索策略和有限的代码生成能力。我们提出了FusionStecting,一个能够融合内存密集型运营商的深度学习编译器,具有各种数据依赖性和非同一性并行性,进入大型GPU内核,以减少全局内存访问和上下文切换开销。 FusionStecting通过引入中间值的数据重用来扩大融合可以超越先前JIT工作的操作组合范围。它探讨了大型融合空间,以便通过考虑内存访问成本,内核呼叫和资源使用约束来决定最佳融合计划。 FusionStecting通过有效地调整具有域特定成本模型的最佳拼接方案。实验结果表明,与现有技术相比,FusionStecting可以达到2.21倍的加速,平均为1.45倍。除了这些实验结果之外,我们还将我们的方法集成到编译器产品中,并将其部署到具有数千个GPU的AI工作负载的生产集群。该系统已运行超过4个月,平均节省了7,000 GPU小时,每月约有30,000个任务。
translated by 谷歌翻译
石油场和地震成像的储层模拟被称为石油和天然气(O&G)行业中高性能计算(HPC)最苛刻的工作量。模拟器数值参数的优化起着至关重要的作用,因为它可以节省大量的计算工作。最先进的优化技术基于运行大量模拟,特定于该目的,以找到良好的参数候选者。但是,在时间和计算资源方面,使用这种方法的成本高昂。这项工作提出了金枪鱼,这是一种新方法,可增强使用性能模型的储层流仿真的最佳数值参数的搜索。在O&G行业中,通常使用不同工作流程中的模型合奏来减少与预测O&G生产相关的不确定性。我们利用此类工作流程中这些合奏的运行来从每个模拟中提取信息,并在其后续运行中优化数值参数。为了验证该方法,我们在历史匹配(HM)过程中实现了它,该过程使用Kalman滤波器算法来调整储层模型的集合以匹配实际字段中观察到的数据。我们从许多具有不同数值配置的模拟中挖掘了过去的执行日志,并根据数据提取的功能构建机器学习模型。这些功能包括储层模型本身的属性,例如活动单元的数量,即模拟行为的统计数据,例如线性求解器的迭代次数。采样技术用于查询甲骨文以找到可以减少经过的时间的数值参数,而不会显着影响结果的质量。我们的实验表明,预测可以平均将HM工作流程运行时提高31%。
translated by 谷歌翻译
性能是软件最重要的素质之一。因此,已经提出了几种技术来改进它,例如程序转换,软件参数的优化或编译器标志。许多自动化的软件改进方法使用类似的搜索策略来探索可能改进的空间,但可用的工具一次只专注于一种方法。这使得比较和探索各种类型改进的相互作用是不切实际的。我们提出了Magpie,这是一个统一的软件改进框架。它提供了一个共同的基于编辑序列的表示,该表示将搜索过程与特定的改进技术隔离,从而实现了简化的协同工作流程。我们使用基本的本地搜索提供案例研究,以比较编译器优化,算法配置和遗传改善。我们选择运行时间作为我们的效率度量,并评估了我们在C,C ++和Java编写的四个现实世界软件上的方法。我们的结果表明,独立使用的所有技术都发现了重大的运行时间改进:编译器优化最高25%,算法配置为97%,使用遗传改进的源代码为61%。我们还表明,通过不同技术发现的变体的部分组合,可以获得多达10%的性能。此外,共同表示还可以同时探索所有技术,从而提供了分别使用每种技术的竞争替代方案。
translated by 谷歌翻译
我们开发了BenchPress,这是第一个用于编译器的ML基准生成器,它是在源代码的功能空间表示中可检测的。卧推通过在空序列或现有序列的任何部分中添加新代码,通过共同观察其左和右下文,从而综合编译函数,从而达到出色的汇编速率。卧推操纵基准的生成迈向了所需的目标特征,这对于最先进的合成器(或实际上人类)不可能达到。与(a)clgen-最先进的ML合成器,(b)Clsmith Fuzzer,(c)Srciror Mutator或(d)人写代码相比来自Github。 Benchpress是第一个通过主动学习搜索功能空间的生成器,以生成可以改善下游任务的基准。我们展示了Grewe's等人如何使用台式。与其他技术相比,CPU与GPU启发式模型在台式基准测试中进行训练时可以获得更高的加速。卧推是一个强大的代码生成器:其生成的样品以86%的速度编译,而Clgen的2.33%则以86%的速度编译。从一个空的固定输入开始,台式比CLGEN产生的10倍,可汇编的OpenCL基准测试,这些基准比Clgen更大,并且更具多样性。
translated by 谷歌翻译
高级综合(HLS)释放了计算机架构师以非常低级的语言开发他们的设计,并需要准确指定如何在寄存器级别传输数据。在HLS的帮助下,硬件设计人员必须只描述设计的高级行为流程。尽管如此,它仍然可能需要数周才能开发高性能架构,主要是因为在更高的水平下有许多设计选择需要更多的时间来探索。它还需要几分钟才能从HLS工具上获得每个设计候选人的质量的反馈。在本文中,我们建议通过使用培训的图形神经网络(GNN)来建立HLS工具来解决这个问题,该工具被培训用于广泛的应用程序。实验结果表明,通过采用基于GNN的模型,我们能够以高精度估计毫秒的设计质量,这可以帮助我们非常快速地搜索解决方案空间。
translated by 谷歌翻译
代理,模拟程序行为的模型,形成各种开发工作流程的基础。我们研究了三种基于代理的设计模式,在大规模CPU模拟器上进行评估。通过替代汇编,程序员开发了一种模拟程序的代理,以模仿程序的行为部署到最终用户代替原始程序。代理编译加速了CPU模拟器的研究1.6美元。通过代理适应,程序员开发一个程序的代理,然后重新培训在不同的任务上代理。代理适应将模拟器的错误减少到50美元\%$。通过代理优化,程序员开发了一个程序的代理,优化代理的输入参数,然后将优化的输入参数插回原始程序。替代优化查找模拟参数,与专业集参数引起的错误相比,将模拟器的错误减少5 \%$ 5 \%。在本文中,我们将这种基于代理的设计模式的分类形式正规化。我们进一步描述了所有三种设计模式共有的编程方法。我们的工作基于与计划代理人的编程为基础的新兴工作流程。
translated by 谷歌翻译
深度神经网络(DNN)模型和数据集的快速增长大小引起了各种分布策略,如数据,张量模型,管道并行和其混合组合。这些策略中的每一个都提供自己的权衡,并在不同的模型和硬件拓扑上展示最佳性能。选择给定设置的最佳策略集是具有挑战性的,因为搜索空间组合增长,并且在群集上调试和测试昂贵。在这项工作中,我们提出了DISTIR,对于分布式DNN计算,这是针对有效分析而定制的分布式DNN计算的表达中间表示,例如模拟。这使得能够自动识别顶级执行策略,而无需在物理硬件上执行。与事先工作不同,Distir自然可以表达许多分发策略,包括管道并行性,具有任意时间表。我们对MLP培训和GPT-2推理模型的评估演示了DISTIR及其模拟器启用快速网格在跨越1000多种配置的复杂分配空间上搜索,以某些制度的数量级递减优化时间。
translated by 谷歌翻译
神经代码智能(CI)模型是不透明的黑盒,几乎没有关于他们在预测中使用的功能的见解。这种不透明度可能会导致他们的预测不信任,并阻碍其在安全至关重要的应用中的广泛采用。最近,已经提出了输入程序减少技术来识别输入程序中的关键功能,以提高CI模型的透明度。但是,这种方法是语法 - 乌纳威,不考虑编程语言的语法。在本文中,我们采用了语法引导的减少技术,该技术在减少过程中考虑了输入程序的语法。我们对不同类型输入程序的多个模型进行的实验表明,语法引导的减少技术更快,并且在简化程序中提供了较小的关键令牌集。我们还表明,关键令牌可用于生成对抗性示例,最多可用于65%的输入程序。
translated by 谷歌翻译
现代深度学习框架提供嵌入在Python中的必要的急切执行编程接口,以提供生产的开发体验。但是,深度学习从业者有时需要捕获和转换程序结构以进行性能优化,可视化,分析和硬件集成。我们研究了深度学习中使用的程序捕获和转型的不同设计。通过设计典型的深度学习用例而不是长尾部,可以为程序捕获和转换创建更简单的框架。我们在Torch.fx中应用了这一原理,是一个完全在Python写入的Pytorch的程序捕获和转换库,并通过ML从业者进行高开发人员生产力优化。我们存在案例研究,展示了Torch.fx如何实现先前在Pytorch生态系统中无法访问的工作流程。
translated by 谷歌翻译
We present a self-learning approach for synthesizing programs from integer sequences. Our method relies on a tree search guided by a learned policy. Our system is tested on the On-Line Encyclopedia of Integer Sequences. There, it discovers, on its own, solutions for 27987 sequences starting from basic operators and without human-written training examples.
translated by 谷歌翻译