我们在这项工作中展示了内存密集型计算可能导致由于片上存储器访问和CPU-GPU上下文切换开销导致严重的性能问题,以及各种深度学习模型。对于此问题,当前立即(JIT)内核融合和代码生成技术具有局限性,例如粗融合计划探索策略和有限的代码生成能力。我们提出了FusionStecting,一个能够融合内存密集型运营商的深度学习编译器,具有各种数据依赖性和非同一性并行性,进入大型GPU内核,以减少全局内存访问和上下文切换开销。 FusionStecting通过引入中间值的数据重用来扩大融合可以超越先前JIT工作的操作组合范围。它探讨了大型融合空间,以便通过考虑内存访问成本,内核呼叫和资源使用约束来决定最佳融合计划。 FusionStecting通过有效地调整具有域特定成本模型的最佳拼接方案。实验结果表明,与现有技术相比,FusionStecting可以达到2.21倍的加速,平均为1.45倍。除了这些实验结果之外,我们还将我们的方法集成到编译器产品中,并将其部署到具有数千个GPU的AI工作负载的生产集群。该系统已运行超过4个月,平均节省了7,000 GPU小时,每月约有30,000个任务。
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 谷歌翻译
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 谷歌翻译
深度学习框架和硬件平台的蓬勃发展一直在要求一个有效的编译器,该编译器可以掩盖软件和硬件的多样性,以便提供应用程序可移植性。在现有的深度学习编译器中,TVM以其在各种硬件设备之间的代码生成和优化方面的效率而闻名。同时,Sunway多核处理器将其作为竞争性候选人,因为其在科学计算和深度学习工作负载中都有吸引力的计算能力。本文结合了这两个方向的趋势。具体来说,我们提出了SWTVM,该SWTVM扩展了原始TVM,以提前支持架构,以进行跨补偿,例如Sunway。此外,我们利用汇编过程中的体系结构特征,例如用于大规模并行性的核心组,用于高带宽内存传输的DMA和局部设备存储器的数据区域,以生成有效的代码,以在Sunway上进行深度学习工作负载。实验结果表明,与六个代表性基准相比,SWTVM生成的代码平均达到1.79倍。这项工作是从编译器角度进行的首次尝试,以弥合深度学习和Sunway处理器的差距,尤其是在生产力和效率方面。我们认为,这项工作将鼓励更多的人拥抱深度学习和Sunway多核处理器的力量。
translated by 谷歌翻译
对将AI功能从云上的数据中心转移到边缘或最终设备的需求越来越大,这是由在智能手机,AR/VR设备,自动驾驶汽车和各种汽车上运行的快速实时AI的应用程序举例说明的。物联网设备。然而,由于DNN计算需求与边缘或最终设备上的计算能力之间的较大增长差距,这种转变受到了严重的阻碍。本文介绍了XGEN的设计,这是DNN的优化框架,旨在弥合差距。 XGEN将横切共同设计作为其一阶考虑。它的全栈AI面向AI的优化包括在DNN软件堆栈的各个层的许多创新优化,所有这些优化都以合作的方式设计。独特的技术使XGEN能够优化各种DNN,包括具有极高深度的DNN(例如Bert,GPT,其他变形金刚),并生成代码比现有DNN框架中的代码快几倍,同时提供相同的准确性水平。
translated by 谷歌翻译
近来增加大型机器学习模型的趋势需要分发培训和推理任务。考虑到培训这些模型的巨大成本,必须在计算和沟通中解锁优化以获得最佳性能。然而,深入学习框架中的计算和通信内核之间的当前逻辑分离遍及此类障碍的优化机会。通过整体考虑破坏此抽象可以提供许多优化,以提供分布式工作负载中的性能改进。手动应用这些优化需要在每个场景中的底层计算和通信库中的修改,这是耗时和容易出错的。因此,我们呈现Coconet,用DSL表达具有计算和通信的程序。 Coconet包含几种机器学习感知转换,以优化程序和编译器以生成高性能内核。作为第一类构造的计算和通信允许用户在高级抽象上工作,并应用强大的优化,例如融合或传播和计算重叠。 Coconet使我们能够以几行代码在大型语言模型中优化数据,模型和管道平行工作负载。实验显示椰子显着优于最先进的分布式机器学习实现。
translated by 谷歌翻译
对深度学习的有效部署的强烈需求(DL)应用促使丰富的DL生态系统的快速发展。为了跟上其快速进步,对于DL框架来说至关重要,以有效地将各种优化的库和运行时作为其后端集成,并通过正确使用它们来生成最快的可执行文件。但是,当前的DL框架需要重大的手动努力来整合多样化的后果,并且通常无法提供高性能。在本文中,我们提出了一个用于集成DL后端的自动框架的拼贴画。拼贴提供后端注册界面,允许用户精确指定各个后端的功能。通过利用可用后端的规范,拼贴搜索给定工作负载和执行环境的优化后端放置。我们的评估表明,拼贴画在没有手动干预的情况下将多个后端集成在一起,并且分别在两个不同的NVIDIA GPU和英特尔CPU上以1.21倍,1.39倍,1.40倍的现有框架。
translated by 谷歌翻译
深度学习的快速进步正在导致一系列快速变化的模型,对计算的需求急剧增长。但是,随着框架将性能优化专门针对流行网络的模式,它们隐含地限制了推动研究进展的新颖和多样化的模型。我们通过定义灵活和用户可定制的管道来优化基于数据运动最小化的任意深神经网络的培训来赋予深度学习研究人员的能力。管道始于Pytorch或ONNX中的标准网络,并通过逐步降低转换计算。我们定义了四个级别的通用转换级别,从局部操作员优化到全球数据运动减少。这些在以数据为中心的图形中间表示上运行,该表示在各个级别的抽象级别表达计算和数据移动,包括扩展基本运算符,例如其基础计算的卷积。设计的核心是管道的互动性和内省性质。每个部分都可以通过Python API扩展,并且可以使用GUI进行交互调整。我们在十个不同的网络上展示了竞争性能或加速性,交互式优化发现了高效网络中的新机会。
translated by 谷歌翻译
Traditional deep learning compilers rely on heuristics for subgraph generation, which impose extra constraints on graph optimization, e.g., each subgraph can only contain at most one complex operator. In this paper, we propose AGO, a framework for graph optimization with arbitrary structures to boost the inference performance of deep models by removing such constraints. To create new optimization opportunities for complicated subgraphs, we propose intensive operator fusion, which can effectively stitch multiple complex operators together for better performance. Further, we design a graph partitioning scheme that allows an arbitrary structure for each subgraph while guaranteeing the acyclic property among all generated subgraphs. Additionally, to enable efficient performance tuning on complicated subgraphs, we devise a novel divide-and-conquer tuning mechanism to orchestrate different system components. Through extensive experiments on various neural networks and mobile devices, we show that our system can improve the inference performance by up to 3.3x when compared with state-of-the-art deep compilers.
translated by 谷歌翻译
ALPA通过生成统一数据,操作员和管道并行性的执行计划来自动对大型深度学习(DL)模型的模型平行训练。现有的模型并行训练系统要求用户手动创建并行化计划,或者自动从有限的模型并行性配置中生成一个计划。它们不足以在分布式计算设备上扩展复杂的DL模型。 ALPA通过将并行性视为两个层次级别来分配大型DL模型的训练:操作员和操作员并行性。基于它,ALPA构建了一个新的分层空间,用于大规模的模型并行执行计划。 ALPA设计了许多汇编,以在每个并行性级别自动得出有效的并行执行计划。 ALPA实现了有效的运行时,以在分布式计算设备上协调两级并行执行。我们的评估表明,ALPA生成的并行化计划,即使在其设计的型号上,也可以匹配或超过手动模型并联训练系统。与专业系统不同,ALPA还推广到具有异质体系结构和模型的模型,而没有手动设计的计划。 ALPA的源代码可在https://github.com/alpa-projects/alpa上公开获得
translated by 谷歌翻译
Dynamic Graph Neural Networks (DGNNs) have been broadly applied in various real-life applications, such as link prediction and pandemic forecast, to capture both static structural information and temporal characteristics from dynamic graphs. Combining both time-dependent and -independent components, DGNNs manifest substantial parallel computation and data reuse potentials, but suffer from severe memory access inefficiency and data transfer overhead under the canonical one-graph-at-a-time training pattern. To tackle the challenges, we propose PiPAD, a $\underline{\textbf{Pi}}pelined$ and $\underline{\textbf{PA}}rallel$ $\underline{\textbf{D}}GNN$ training framework for the end-to-end performance optimization on GPUs. From both the algorithm and runtime level, PiPAD holistically reconstructs the overall training paradigm from the data organization to computation manner. Capable of processing multiple graph snapshots in parallel, PiPAD eliminates the unnecessary data transmission and alleviates memory access inefficiency to improve the overall performance. Our evaluation across various datasets shows PiPAD achieves $1.22\times$-$9.57\times$ speedup over the state-of-the-art DGNN frameworks on three representative models.
translated by 谷歌翻译
过去的几年见证了基于变压器的模型的成功,其规模和应用方案继续积极发展。变压器模型的当前景观越来越多样化:该模型大小差异很大,最大的参数是最大的。模型特性由于特征的混合物所引入的稀疏性而有所不同。目标应用程序方案可以是关键延迟或面向吞吐量的情况;部署硬件可以是具有不同类型的内存和存储等单身或多GPU系统。随着多样性的增加和变压器模型的快速发展速度,设计高性能和高效的推理系统非常具有挑战性。在本文中,我们提出了DeepSpeed推断,这是用于解决上述挑战的变压器模型推理的全面系统解决方案。深速推理包括(1)一种多GPU推理解决方案,可最大程度地减少潜伏度,同时最大化密集和稀疏变压器模型的吞吐量,当它们适合聚集的GPU内存时,以及(2)一种异质推理解决方案,该解决方案利用CPU和NVME内存中的CPU和NVME内存。除了GPU内存和计算以使高推理吞吐量具有不适合聚集GPU内存的大型推理吞吐量。对于面向延迟的方案,深速推理可将延迟降低到最新的7倍,而对于面向吞吐量的方案,延迟的潜伏期将延迟减少到1.5倍以上。此外,它通过利用数百个GPU来实现实时延迟约束下的参数量表推断,这是一个前所未有的推理。它可以比仅使用GPU的解决方案更大的25倍模型,同时提供84个TFLOPS(超过50美元的A6000峰值)。
translated by 谷歌翻译
变形金刚是今天最重要的机器学习工作负载之一。培训是一个非常计算密集的任务,通常需要几天或几周,并且对优化变压器进行了重大关注。尽管如此,现有的实现不会有效地利用GPU。我们发现数据移动是培训时的关键瓶颈。由于Amdahl的法律和大规模改进的计算性能,培训现已成为记忆束缚。此外,现有框架使用次优数据布局。使用这些洞察力,我们提供了一个用于全局优化变压器数据移动的配方。我们将数据移动降低到22.91%,总体上实现了在训练伯特编码器层和1.19x的整个伯特的最先进框架上的1.30倍的性能改进。我们的方法更广泛地适用于优化深神经网络,并深入了解如何解决新兴的性能瓶颈。
translated by 谷歌翻译
在过去十年中,已经开发出新的深度学习(DL)算法,工作负载和硬件来解决各种问题。尽管工作量和硬件生态系统的进步,DL系统的编程方法是停滞不前的。 DL工作负载从DL库中的高度优化,特定于平台和不灵活的内核,或者在新颖的操作员的情况下,通过具有强大性能的DL框架基元建立参考实现。这项工作介绍了Tensor加工基元(TPP),一个编程抽象,用于高效的DL工作负载的高效,便携式实现。 TPPS定义了一组紧凑而多才多艺的2D张镜操作员(或虚拟张量ISA),随后可以用作构建块,以在高维张量上构建复杂的运算符。 TPP规范是平台 - 不可行的,因此通过TPPS表示的代码是便携式的,而TPP实现是高度优化的,并且特定于平台。我们展示了我们使用独立内核和端到端DL&HPC工作负载完全通过TPPS表达的方法的效力和生存性,这在多个平台上优于最先进的实现。
translated by 谷歌翻译
图形神经网络(GNN)的输入图的大小不断增加,突显了使用多GPU平台的需求。但是,由于计算不平衡和效率较低的通信,现有的多GPU GNN解决方案遭受了劣质性能。为此,我们提出了MGG,这是一种新型的系统设计,可以通过以GPU为中心的软件管道在多GPU平台上加速GNN。 MGG探讨了通过细粒度计算通信管道中隐藏GNN工作负载中远程内存访问延迟的潜力。具体而言,MGG引入了管​​道感知工作负载管理策略和混合数据布局设计,以促进通信局限性重叠。 MGG实现以优化的管道为中心的内核。它包括工作负载交织和基于经经的映射,以进行有效的GPU内核操作管道和专门的内存设计以及优化,以更好地数据访问性能。此外,MGG还结合了轻巧的分析建模和优化启发式方法,以动态提高运行时不同设置的GNN执行性能。全面的实验表明,MGG在各种GNN设置上的最先进的多GPU系统要比最先进的多GPU系统:平均比具有统一虚拟内存设计的多GPU系统快3.65倍,平均比DGCL框架快7.38倍。
translated by 谷歌翻译
变压器验证引起了机器学习研究和行业的越来越多的关注。它正式验证了变压器对对抗性攻击的鲁棒性,例如用同义词交换单词。但是,由于以中线为中心的计算,变压器验证的性能仍然不令人满意,这与标准神经网络有显着差异。在本文中,我们提出了信仰,这是用于GPU的变压器验证的有效框架。我们首先提出一个语义意识的计算图转换,以识别语义信息,例如变压器验证中的结合计算。我们利用此类语义信息,以在计算图级别启用有效的内核融合。其次,我们提出了一个验证专门的内核手工艺品,以有效地将变压器验证映射到现代GPU。该手工艺者利用了一组GPU硬件支持,以加速通常是内存密集型的验证专业操作。第三,我们提出了一个专家指导的自动调整,以纳入有关GPU后端的专家知识,以促进大型搜索空间探索。广泛的评估表明,Faith在最先进的框架上实现了$ 2.1 \ times $至$ 3.4 \ times $($ 2.6 \ times $)的加速。
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 谷歌翻译
一般矩阵乘法或GEMM内核在高性能计算和机器学习中占据中心位置。最近的NVIDIA GPU包括Gemm加速器,如Nvidia的张量核心。他们的剥削受到双语言问题的阻碍:它需要低级编程,这意味着低程序员的工作效率或使用只提供有限组件集的库。由于建立的组件方面的REPRASING算法经常引入开销,因此图书馆缺乏灵活性限制了探索新算法的自由。因此,使用GEMMS的研究人员无法立即享受编程生产力,高性能和研究灵活性。在本文中,我们解决了这个问题。我们在科学朱莉娅编程语言中展示了三组抽象和接口来编程宝石。界面和抽象共同设计用于研究人员的需求和朱莉娅的特征,以实现足够的担忧和灵活性的充分分离,以便在不支付性能价格的情况下轻松地扩展基本宝石。将我们的Gemms与最先进的图书馆Cublas和Cutlass进行比较,我们证明我们的性能在图书馆的相同球场中,并且在某些情况下甚至超过它,而无需在CUDA C ++中编写单行代码或者组装,而不面临灵活限制。
translated by 谷歌翻译
部署各种深度学习(DL)型号有效地推动了DL编译器的研究。生成优化的张量码的难度驱动DL编译器以询问自动调整方法,并且越来越多的需求需要增加自动调整效率和质量。目前,DL编译器将输入DL模型分区为几个子图,并利用自动调整以找到这些子图的最佳张量代码。然而,现有的自学方法通常将子图视为个体,并且在其上忽略了它们的相似性,因此在有限的时间预算下未能利用更好的张力代码。我们向DL编译器提出Familyseer,即使有限的时间预算也可以生成更好的张量码。 Familyseer利用子图之间的相似性,并且子图之间的差异可以将它们组织成示例家庭,其中调整一个子图也可以改善同一家庭内的其他子图。每个家庭的成本模型获得了更多由家庭产生的纯化培训样本,并更准确,以便通过成本模型用轻量级估计来替换真正硬件上的昂贵测量。我们的实验表明,FamilySeer可以比最先进的自动调整框架更有效地生成模型代码,比最先进的自动调整框架更有效。
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 谷歌翻译