从人工智能算法到实现

与会专家,第2部分:从算法到实现的转换存在一些重大问题,这些问题目前尚未得到适当解决。

受欢迎程度

《半导体工程》杂志坐下来与Metrics总裁兼首席执行官Doug Letcher讨论了EDA在自动化人工智能和机器学习方面的作用;丹尼尔·汉森,首席执行官Verifyter;哈里·福斯特,首席科学家Mentor是西门子旗下的企业;拉里·梅林,产品管理总监节奏;Manish Pandey,Synopsys对此研究员;以及首席执行官莱克·布林克曼OneSpin解决方案。以下是那次谈话的节选。第一部分可以找到在这里

SE:推理和学习是分开的。每个任务都有不同的需求,然而算法开发往往不考虑推理的需求。这是另一个需要处理的分离。

悟道这是一个有趣的问题。它类似于成像算法,其中算法开发人员在Matlab中工作,并使用浮点数学和矩阵数学。你的工作是提出正确的算法,然后你把它交给一个糟糕的部署人员,他必须尝试和理解它。他们开始把数据切成小块,切成小块,然后把数据流从浮点数转换成定点近似。所有这些都开始发生,最终驱动他们成功或失败的是终端市场解决方案的成功。这与GPU世界中存在解释问题的情况类似。见仁见智。那些进行近似计算并管理使其高效和可部署过程的人将会在市场中获胜。这跨越了从理论到可部署的界限,并有效地做到这一点,以便它能够进入大众消费市场。

莱彻:从验证的角度来看,这两种方法也有很大的不同。您可以将推理作为一个完整的单元进行验证。你有一个装置,你可以用传统的方式,随机或其他方式,让一些向量通过,并确定它是否做了你想做的事情。但是,训练问题几乎没有希望通过硬件/软件的组合解决方案来验证。您永远无法运行所需的数据量。

Brinkmann:如果你看看GPU公司,获胜的公司部分是因为他们优越的硬件,但更多的是因为平台。一旦他们有足够多的用户使用它,他们就有了一个很好的API,他们就有了质量衡量标准。

悟道:以及他们的核查方法。英伟达在快速平台和仿真上花了很多钱,才能够运行这么多向量。

Brinkmann:但如果你和任何正在为边缘制造人工智能芯片的人交谈,他们都会做软件堆栈。他们从Caffe或TensorFlow的模型开始,然后接管将其映射到架构的整个任务。他们希望你使用API并根据质量指标进行测量,但他们对此保密。如果它是底层的FPGA合成算法,或者是一种新的架构,那么作为用户,您并不关心。当它是GPU时,你也不在乎。有一个接口,你可以根据它来编程,谁能最好地将其映射到架构中,谁就是赢家。

莱彻当你销售的是通用设备时,的确如此。那是另一个人来编程的时候。如果您正在构建一个将进入自动驾驶汽车的设备,并且您正在将整个设备构建为一个统一的硬件/软件,那么您就具有完全的可视性。

Brinkmann:确实如此,但我不相信如果不使用平台理念,它就会规模化。它会失败,因为对这样一个平台的投资将是巨大的,如果它只使用一次,它将不是一个好的投资。你需要有一些可以重复使用的东西,特别是在自动驾驶汽车中,你会得到新的数据,新的要求,你不能在现场交换硬件。你必须有一个可重复使用的硬件平台。

莱彻:同意。它需要能够进化。TensorFlow正在成为抽象层。

福斯特:这很关键,因为实际硬件定义了优化的具体条款。但与此同时,由于涉及的投资水平,必须有抽象。

汉森:与GPU的类比是很好的和相关的。但是调试有区别吗?当你调试机器学习时,很难理解发生了什么。但如果你不喜欢一张照片,你可能会追溯到需要更多这个或更多那个。

悟道这是一个很大的挑战。我不确定构成神经网络的矩阵的底层单元,在这些底层单元上进行的编程在上下文中是否可以理解。在指令级别上调试——它甚至不像硬件/软件的事情,虽然我不熟悉GPU上的微码调试,但我认为它更像这样,因为你不会想到人们潜入并查看任何特定计算组件的执行。

SE:为了从TensorFlow中的浮点数,或者其他算法平台,变成一个定点表示,你必须经过量化。现在您正在操作网络,而映射可能不是确定的。执行仍然是确定的,但是当您在权重中引入错误时,您知道您已经影响了什么吗?我们如何验证这个变换?

悟道:量化会产生精度问题。

莱彻:我们说的是算法验证还是传统的RTL验证?当它进入RTL世界时,量子化已经确定。它已经从64位或32位浮点数减少到16位甚至8位。

悟道:有一种中间产物。一种是算法,它主要是利用云的全部功能和计算在浮点上开发的,另一种是为部署而进行的量化。这是算法的下一个层次。

莱彻:他们正在推动使用低精度浮点数。

Brinkmann:有没有人想过,当你做数学变换的时候,它们是合法的?精确不是完全一样的东西。做量化是经过深思熟虑的决定,如果你在定点上,你可能能够控制一切。但是如果你使用浮点,并且你移动一些操作来优化或映射到特定的硬件,你实际上是在引入另一个错误。这对大多数人来说不那么透明。

打手心:在很长一段时间里,人们接受使用fp32位计算,但对于大多数计算,甚至在训练中也使用FP16。现在对于推理或者当你有硬件资源限制时,人们会问他们是否可以进一步压缩它。你能使用8位的演示文稿吗?这就是你开始量化的时候了。现在,这并不是说你只是从模型中丢弃一些东西。它的表现会很糟糕。这是一个循环。你可以从一个16位的模型开始,然后减少到8位。然后你重新训练权重,重新调整事物,并可能将它们聚类并居中。为什么事情最终会起作用是一个开放的研究领域,但很多都是通过结果来证明的。 If you suffer 1% loss in accuracy, that may be fine.

Brinkmann:所以我能得到的最好答案是,‘还行。’

打手心:这就是全部。当人们提出深度学习架构时,他们发现它比过去考虑过的任何东西都要好。找出它为什么有效是另一回事,但当你把一张画着几张纸的图片放在一个停止标志上时,它就变成了另一回事。

Brinkmann:当我开始研究证明引擎时,我正在调试其中一个引擎,其中使用了一些启发式方法。我在其中一个启发式中发现了一个bug,在修复它们之后,结果变得更糟了。你会怎么做?我们是否应该保留错误,因为它已经证明了它是有效的?这听起来很相似。也许您不需要寻找最后一个RTL错误或转换中的错误,因为如果您只评估结果,可能就足够了。那么我们为什么需要这些验证呢?看一遍。什么是正确的中间立场?我不相信它最终会被衡量。

打手心:作为另一种选择,我们是否要等待最完美的可解释系统?

汉森问题是怎样才算够好?

Brinkmann:有一个平台可以提供可预测的结果,而且没有明显的错误,因此您可以信任平台,也可以信任用于将算法映射到平台的过程,这是非常重要的,因为需要进行调试。如果您不能轻松地确定问题,那么您希望能够在算法方面调试它,并查看需要在那里更改什么。如果您正在尝试针对硬件中的错误优化算法,祝您好运。对于拥有一个您可以信任的平台有强烈的需求,这包括软件到硬件的映射。

莱彻:这有一个扩展,就是IEEE 26262和标准,你必须正式证明,特别是在汽车应用中,它是可行的。这与这些类型的问题有什么重叠?你不能只留下看似可行的错误。

打手心让我们把两件事分开。前面我们谈到了两个紧密相连的验证周期。你有一个硬件级别的抽象。当你执行矩阵乘法时,硬件所做的最好能工作。你有一个接口,硬件更好地代表了它。现在我们讨论的是将人工智能算法映射到硬件上。这就是算法创造本身。为什么它能起作用?它是如何工作的?只有存在证明它是有效的。 You have a data set and you hope it has been curated well.

悟道直到有人提出更好的方法。

打手心:如果你有一个ML算法,它有99%的测试准确率,我用它来过滤垃圾邮件或重新排序和优先级我的邮箱。这很好。如果我把99%的准确率应用到我的汽车或癌症诊断上,你就会错过1%。这样够了吗?这是一个社会问题。医生的助手可以帮助筛选结果以减少漏洞,只要没有假阳性就可以了。你必须非常小心如何部署。DARPA正在研究可解释的人工智能。你能解释一下你是如何做出这些决定的吗?我们想要确保呈现给软件系统的任何硬件抽象都是高保真的。 How do we get the whole process, including the dataset, integrated into a good flow?

悟道:我读了一篇关于人工智能经济学的有趣文章。重点是机器学习和人工智能将使预测商品化,价值变成判断。达到90%或99%是可以自动实现的,但只有这1%需要进行判断,当你陷入这个空间时,你如何进行判断?这将是提供大价值的关键。这是我们知道的,这是我们不知道的,而价值就在于不知道。投资风险。



留下回复


(注:此名称将公开显示)

Baidu