在嵌入式计算机上运行人工智能的挑战
这是 SunyaOS 创始人 NikhilBhaskaran 在物联网 2019 年的一次演讲。物联网 2019 年是一种操作系统,它优化了嵌入式系统的人工智能库,使开发者能够以非常低的成本非常迅速地快速构建人工智能边缘解决方案。在未来五年,人工智能将渗透到所有领域;边缘分析将成为人工智能领域的下一件大事。
目前,人工智能领域的工作更多的是从应用的角度解决工业问题。人们希望尽快将解决方案推向市场。为此,大多数人工智能库都建在云中。在这种情况下,有一个庞大的堆栈,第一个挑战是从数据开始。
你需要训练一个模型,最大的挑战不是建立一个模型,而是找到数据,并以一种有效的方式安排数据来训练模型。因此,获得正确的数据是一个巨大的市场。
第二部分是模型的建立。有很多应用程序不需要创建模型,比如人脸识别和目标检测。因为这些常见的应用程序已经有现成的模型,所以你只需要为应用程序选择正确的模型。在此之后,你需要对模型进行进一步的培训,因为大多数模型通常都是针对不同的数据集而训练的,这些数据集不能提供良好的输出。
因为每个库都擅长某一方面,所以需要为应用程序仔细选择正确的库。
有了工作模式,就必须有目的地筹集足够的资金。一些赚钱的人应该关心的问题是:它应该用于什么?市场在寻找什么?
此外,还有一项重大的竞争,因为每个人工智能领域的人都会直接在云上进行模型培训和数据工作。然而,人工智能也可以在嵌入式计算机上运行良好。这通常是人们不知道的事情。
所有人工智能都发生在边缘。
在云中运行模型时,通常使用 googleEnginapi 或 Amazon 的对象识别模型,并为此支付一定的费用。一旦建立了解决方案,您就必须支付大量的费用。
相反,同样的模型可以在硬件上进行编码。在嵌入式系统上,你可以不用花很长时间就能获得云的性能。所有的分析都是在嵌入式设备上进行的,它只向云发送有限的数据。
边缘分析将是人工智能的下一个重大事件。人工智能库发送的所有数据将由处理器计算,并给出结果。例如,过去玩游戏时,所有的数学计算都是用 GPU 进行的。现在,芯片上有矢量处理单元,可以快速处理云中的矢量(数据)。
GPU 也擅长浮点运算。
目前尚不清楚,许多人工智能应用程序都可以建立在公司可以优化的芯片上。
如今,用于人工智能的图书馆大约有 800 个,这听起来可能令人难以置信,但当电脑问世时,人们从未想过它会这么大。渐渐地,它成为了我们生活中的必需品。人工智能将远远超过这一点。未来五年,人工智能将渗透到所有领域。许多产品都已内置 -- 人工智能。
目前,有 20 多家公司从事人工智能技术。其中最受欢迎的有腾讯、卡菲、查纳、ONNX 和 PyTorch。
嵌入式系统面临的挑战
从事人工智能领域工作的人往往面临着诸如模型大小、选择合适的模型和框架等挑战。系统性挑战是大多数人没有意识到的。这些挑战包括:
平台
在云中,代码是预先安装的。但是对于嵌入式系统,您需要获取源代码并将其编译到机器中。
吸引力
找到正确的源代码也是一个挑战。人们需要做大量的研究才能找到正确的源代码、正确的补丁并配置它们。
架构支持
通常使用 ARM。它可以是 ARM 7 或 ARM 8。借助 ARM 8 中的霓虹灯,硬件 FPU( 浮点单元)提供了 5 倍的性能。这是非常有益的,但也具有挑战性。
交叉编译不能提供所需的性能。因此,要获得性能并使库在硬件上发挥最佳作用,您需要执行本机编译。这需要很长的时间来编写代码,并消耗大量时间。
安装
编译后可能会遇到一些错误信息。需要注意库的正确安装,特别是新机器的安装。
不仅如此,所有库通常都有一些依赖关系。每个工具 / 框架 / 库平均有 4 - 5 个依赖项。
这些软件包还需要编译,以便从安装在嵌入式系统上的 Ai 库中获得最佳性能。称为 Docker 的软件是运行包的最快方法,但在运行时没有进行优化,必须谨慎使用。
业内有一种观点认为,要在边缘运行人工智能,你需要大量的计算,或者需要更好的计算能力,才能获得足够的性能。然而,事实并非如此。当这种解决方案被出售时,你的成本会更高。因此,重点应该放在更好的项目上,这样才能降低价格。这应该在不影响最新技术进步的情况下实现。
OpenGL 和 OpenCL 库
在嵌入式系统中,当 CPU 明显存在时,GPU 和 NPU 是可选的。如果您有一个 GPU,它将有一个 OpenGL 或 OpenCL 库。OpenGL 是一个图形库,它将接收到的图形计算传递给 GPU。OpenCL 是一个计算库,用于检查硬件上的计算能力;它收到的任何计算请求都分布在整个系统中。通过添加 OpenCL,您的性能将非常高。它是一个比操作系统更好地处理请求的附加层。
在应用程序方面还有很多工作要做。在云中编写代码之后,分析过程在运行时就开始了。在这个过程中,代码会产生数量未知的威胁,如果系统无法处理这些威胁,可能会导致硬件故障。但在嵌入式系统中,它是定制的。
在这里,边缘计算在直接在硬件上执行计算操作方面起着重要作用,而不是将数据发送到云端进行计算。
随着嵌入式人工智能的发展,一些框架只是为此目的而建立的。目前,TVM 在这方面做得最好。