新兴的深度学习应用需要前所未有的计算和内存容量。为了加速这些应用,数据流加速器等新型处理系统努力利用深度学习模型中的多个并行维度,例如张量和管道并行。尽管这些系统在充分利用时提供了超高的性能,但编译深度学习应用程序来利用它们的计算能力仍然是一个具有挑战性的问题。随着领域特定编程语言、加速器设计和机器学习方面的最新进展,我们现在有潜力通过算法、软件和硬件协同设计,更好地满足在数据流加速器上训练和评估大型深度学习应用程序的需求。
在本论文中,我提出了高效深度学习优化和编程框架的设计和开发。我提出了两个框架:SpatialRNN用于在空间加速器上加速循环神经网络语言模型,Sigma用于使用可重构数据流加速器表达和加速高数据重用深度学习内核。我们使用Sigma进行的端到端评估表明,在Nvidia V100 GPU加速器上,包括金融应用程序、传统机器学习、语言建模和计算机视觉任务在内的内核加速了5.4倍。
深度学习模型[47]是现代人工智能应用的基本构建模块。这些模型可以从大量数据中学习抽象表示,使它们在数据丰富的领域无处不在:在大量在线对话数据上训练的ChatGPT[1]可以生成涵盖所有研究领域的专家建议。同样,稳定扩散[64]在58.5亿图像-文本对的互联网规模数据集上训练[68],已经证明了自动化艺术品创作的人类水平的质量。在深度学习巨大成功的表象之下,隐藏着真正的强大力量:庞大的处理系统。ChatGPT和Stable Diffusion规模的模型需要数十万个GPU运行数周才能从训练数据中学习抽象表示,这需要花费数百万美元。总的来说,深度学习模型的成功在很大程度上取决于处理大量数据和大规模执行计算的能力。
许多人认为,处理系统需要更多的计算资源来更好地促进这些模型的发展。然而,在实践中,大多数深度学习应用程序都受到内存带宽的限制,而不是计算能力。深度学习模型使用数据流图表示,其中一个节点表示一个张量或一个算子,一条边表示节点之间的数据流。由于大张量操作,边之间的数据流可能超过千兆字节。在现代处理系统中,这些数据的移动通常要比实际计算的时间长得多。因此,针对深度学习模型的优化技术必须专注于有效地管理数据流。然后,我总结了本论文每一章的重点。最后,讨论了前人的研究项目与本文的关系。