对于AI 模型和开发 AI 软件不同类型介绍
扫描二维码
随时随地手机看文章
我认为,对于想做 AI 但不太了解的人来说,问题是:AI有什么区别?专为 AI 而生的人是否会做得更好,或者同时进行推理和训练的能力是否会对我的应用程序感兴趣?或者——或许还有——成本是否成为您评估是使用传统的 GPU-CPU 计算还是为特定问题空间构建的东西时的一个因素?
我认为所有这些问题都很重要。从根本上说,在考虑 AI 模型和开发 AI 软件时,都是使用框架完成的。所以使用 pytorch 或 TensorFlow。Pytorch 最近似乎获得了最多的关注,无论是在研究人员中还是在工业界。但是,尽管如此,这两个框架都将这些机器学习模型开发为我们所说的数据流图。
因此,数据流图根据内核表示模型。内核可以是矩阵乘法,它们可以是卷积,它们可以是池化,它们可以是任何东西。然后在这些内核之间移动的数据是代表模型本身的张量数据。
因此,我们在 SambaNova 设计中的重点是从这些模型中表达的数据流中获取线索,并非常有效地将其在空间和时间上映射到架构。因此,它为您做的是为您提供路线图的应用程序,但大多数传统架构、CPU 和 GPU 都忽略了该路线图。我们说,你在这里给了我们信息,让我们用它来优化数据流,并将应用程序中表示的数据流与架构相匹配。
因此,我们拥有所谓的可重构数据流架构,可以最大限度地减少生成的带宽,尤其是片外带宽。它最大限度地利用了计算,因为它使您能够在芯片上的空间中进行所谓的流水线操作,这样您就可以充分利用芯片功能的所有单元。
因此,如果您考虑任何计算环境的关键要素,那就是您的计算能力是什么,您的内存带宽能力是多少,包括片上和片外?您与芯片上和其他单元的通信带宽是多少?然后你如何有效地使用它?
因此,通过控制由数据流图驱动的计算和通信的能力,我们拥有 Samba 流软件开发环境的能力,其中包括非常复杂的编译器,这些编译器查看数据流图并将其匹配到体系结构的功能,因为体系结构基本上是可重新配置的,因此可以重新配置以匹配您正在运行的应用程序的属性。
这对应用程序开发人员意味着什么?使用非常受欢迎的 CPU 或 GPU 的传统吸引力之一是您已经拥有所有这些工具。而且很多人要么很熟悉,不熟悉也有各种各样的方法可以学习。在 AI 中,这是 SambaNova 的常见体验吗?其他人工智能公司有什么不同吗?
但归根结底,如果你问任何一个正在努力实现绩效的人,他们都希望以最简单、最容易的方式实现这种绩效。大多数人被迫编写 CUDA。一旦他们编写了 CUDA,现在他们就被锁定在 Nvidia 硬件中。但这并不是大多数 AI 开发人员想要做的。
大多数 AI 开发人员希望使用这些框架在 Python 中开发他们的应用程序。事实上,绝大多数模型和应用程序都是在 Python 的这种高层次上开发的。因此,我们最终要做的是让我们的能力更容易使用。这是通过拥有一个我们称之为 Sambaflow 的软件栈来实现的,它采用了这些模型;分析计算、通信和内存使用;然后针对内存位置和计算对其进行优化,以便将应用程序的要求映射到该架构,然后重新配置架构以获得最佳性能。而这一切都是自动发生的。
所以你作为开发者。现在,如果您真的非常关心低级性能优化,并且您真的有能力做到这一点,那么很少有面向性能的工程师。您可以深入研究……我们可以为您提供 C 语言的低级编程模型,让您可以尝试在数据流级别进行实际编程,但这只适用于 1% 的开发人员。其他 99% 的人会对使用框架感到非常满意,因为编译器可以提供性能。
所以人们不得不编写 CUDA 的原因是因为他们无法从现有的库内核中获得所需的性能。但数据流的好处在于,它为您提供所谓的自动融合。所以因为你可以同时将两个内核放在同一个芯片上并让它们在两者之间有效地通信,所以你得到了融合。所以如果你看看大多数 CUDA 程序员在编写自定义 CUDA 内核时试图实现的目标,他们正在做的是,他们实际上是在手动进行这种融合。他们采用两个以前独立的内核,这些内核不能非常有效地通信,并将它们放在一个内核中,以便通信高效。
我们对数据流的处理是自动进行的。所以你可以随心所欲地定义内核,然后我们将确保它们一起高效运行。
所以我们采取的是一种全图分析方法,从框架层面开始,分析全图。
现在,当然,传统架构不理会这种全图方法的原因之一是因为它们只在时间内核中执行事情,然后它们将所有数据从芯片传输到 HBM 和然后将其拉回下一个内核。我们不想那样做。那是对带宽的浪费,它不会为您提供我们刚才谈到的融合优势。
理想情况下,您希望这两个内核同时运行。然后你也会得到流水线。因此,当第二个内核处理较早的数据时,第一个内核获取下一个数据,依此类推。你得到了发生在芯片上的计算管道。当然,沟通非常顺畅且非常高效。
我记得在斯坦福大学待了很多年。我曾经听 John Hennessy 说,他当然是斯坦福大学的前任校长,也是一位伟大的计算机架构师,他将流水线描述为自计算机架构切片面包以来最好的东西。正如这样的想法,只需非常非常少的额外资源,您就可以获得巨大的性能提升。你知道,这是早期推动风险的原因;它是现代 CPU 设计的驱动力。我们以这种动态方式使用它来加速 AI 应用程序。
高性能计算有点有趣,因为最长的时间是可以联合使用多少个 CPU?在这一点上,我们现在拥有主要基于 GPU 的超级计算机。人工智能处理器会一直是这些的模块吗?或者我们会看到 AI 超级计算机吗?
我们将看到一台 AI 超级计算机,因为当然,HPC 人员正在尝试做的事情正在被 AI 改造,就像世界上的其他一切一样。所以如果你看任何东西的模型——你试图模拟机翼上的气流,你试图模拟材料,你试图理解核弹是如何爆炸的——你有一些物理模型,你是试图模拟。运行并模拟。
因此,您可以根据第一原理创建一个模型,然后您可以使用该模型生成的数据来训练基于机器学习的模型。该模型的运行速度可能比您的详细物理模型快三个数量级,但同样准确,但可能并非在所有情况下都如此。所以你看到的是这种混合情况,有时你运行详细的物理模型,有时你运行这个 AI 模型,然后你可能会在进入不同的制度。
因此,我们再次回到之前关于训练和推理之间融合的讨论。同样,您会看到它发生在高性能计算领域。因此,理想情况下,您需要的是一种能够非常高效地完成所有这些类型计算的单一功能。