Tensors:An abstraction fro general data processing

5/14/2023

# Tensors: An abstraction for general data processing

# 摘要

​ 深度学习对简化复杂模型的开发和模型高效的执行效率有着日益增加的需求。因此,大量的努力被用于类型TensorFlow和PyTorch等框架中以支持多样的深度学习模型并且能够高效地、无差别地在异构和分布式的硬件上执行这些模型。考虑到深度学习的优异表现,我们很自然的想知道这些框架还能够做什么(除了DL)。这并不是无意义的问题,因为这些框架基于张量的实现,很够很好的适应于DL,但是原则上对其他计算并不适用。**在这篇文章中,我们探索TCRs能够在多大程度上支持非机器学习数据处理应用,以使得其他的计算模式可以利用在TCRs上的投入。特别是,我们对图处理和关系运算符两类不同于机器学习的计算用例感兴趣。**基于Hummingbird这一将传统机器学习算法转换为张量计算的平台(tensor computation),我们将探索如何将选取的图处理和关系运算映射到张量计算中。我们的观点得到了以下结果的支持:我们的代码通常优于自定义构建的C++和CUDA内核,同时大量减少了开发工作,利用了TCRs的跨平台编译的能力。

# 1. Introduction

​ 像大数据分析和机器学习等应用正在催生对计算能力史无前例的需求。单单深度模型训练本身就有着对计算能力一年十倍以上增长的需求。非官方数据统计,从头开始训练一个复杂的模型可能要花费数百万美元。分布式计算和利用数据中心以及云设备来加速数据处理等手段满足了部分的计算需求。为了进一步在减少机器数量的情况下提高计算效率,专用硬件和硬件加速正快速发展。前者指使用为手头任务量身定做的硬件,后者则是指利用类似GPU和FPGA等更适合张量计算的组件去代替CPU。然而专用的硬件增加了编程的复杂度并且通常需要特有的优化去改善性能。因此,许多精力与投资被用于类似TensorFlow和PyTorch、TVM等框架来简化开发、管理和部署以及对DL模型的优化。在这些框架中,DL模型被分解为张量计算。这种张量抽象是自动优化的基础,并且可以在异构硬件上编译相同的代码

​ 针对TCRs的投资和专门用于张量计算的硬件设备也会不断发展。因此,考虑TCRs是否可以支持除了DL之外的计算时很有意义的。是否可以将Tensor作为数据处理的通用抽象这一观点的挑战是张量抽象本身(张量和深度学习算法紧密的关系是这些软件框架高效的原因之一)。

​ 最近的工作已经将传统的机器学习算法映射到了tensor model。我们尤其关注将图处理和关系运算算法映射到张量计算中,我们使用PyTorch和TVM来将这些实现编译为可在CPU和GPU上运行的代码。尽管利用了高级抽象,但生成的机器码通常优于定制的C++和CUDA内核代码。

# 2. BACKGROUND

# 2.1 The Tensor ABstraction

​ 深度学习模型是机器学习的一种。被用于实现DL模型的框架有很多(.....)。最近出现了一类新的张量程序编译器(需要了解一下),可以使用张量抽象队针对异构硬件生成高度优化的代码。这些框架和编译器已经被广泛用于DL领域,我们在这篇论文中将探索作为通用编译器和应用程序的的潜力。我们这篇论文将类型于TVM的编译器和深度学习框架称为TCRs。

# 2.2 Tensors Operators

​ TCRs提供了丰富的tensor操作集合。

  • Transformation Operators 这类操作包括从tensor中获取一个或多个元素、获得行或者列的切片、链接两个tensor、或者重新组织tensor的形式(gather、scatter)
  • Reducion Operators 计算操作符,包括像sum、mean等聚合操作和求tensor大小等操作
  • Arithmetic operators 算术运算符,包括张量与张量之间、张量与向量之间的加减乘除等运算、或者矩阵与向量、矩阵与矩阵之间的乘积和叉积
  • Logic operators 逻辑运算符

# 2.3 Hummingbird:Traditional ML to Tensors

# image-20230514223603179

​ 论文中举了用神经网络去做决策树的例子,来佐证传统的ML算法转为张量计算的可行性。

# 3. GRAPHS TO TENSORS

​ 因为图可以用邻居矩阵或者关联矩阵表示,所有目前已经有了用线性代数表示图算法的研究。因此可以直接在TCRs中直接使用线性代数执行图算法。但是,这样的实现方法并非最优的,因为依赖于图的稀疏表示,但是TCRs对于稀疏计算效率不高。因此需要有新的方法。

如何理解稀疏计算? 稀疏图的概念又是什么(连接矩阵是稀疏矩阵?)?