并非所有机器学习模型都需要按几个TOPS的顺序进行处理。了解应用程序的性能,延迟和准确性需求是选择处理器进行机器学习的关键第一步。
机器学习已成为解决机器视觉和其他嵌入式计算问题的流行方法。虽然经典机器学习算法需要人工干预来从数据中提取特征,但机器学习算法或网络模型学习如何提取数据中的重要特征并对该数据进行智能预测。
在智能家用电器如智能烤箱中,机器学习可用于对烤箱内的食物进行分类,并相应地设定烤箱的烹饪温度和时间。在工厂中,机器学习可用于检测产品中的缺陷,或者可用于预测性维护,以帮助预测电机的剩余使用寿命或检测电机操作中的异常。在车辆中,它可用于检测道路上的汽车,行人,交通标志等。它也可以用于进行自然语言翻译的设备。
机器学习有两个主要部分:培训和推理。机器学习的训练部分是算法的学习阶段。训练网络模型的目的是使模型学习最佳可能的参数值,以可预测地解决给定问题。有两种方法可以训练机器学习模型:监督或无监督。
在监督训练方法中,模型学习基于若干教学输,输出对示例将输入映射到输出,用于训练算法的数据已经用正确答案标记并且可能的输出已知。它涉及标记的训练数据集,前向传递算法,误差计算和后向传递算法。
前向传递算法涉及从输入数据中提取特征和预测信息。在监督训练方法中,将预测与实际信息进行比较,并计算误差。基于预测误差结果,调整网络参数以便在下一次迭代中做出更好的预测。
机器学习模型训练计算量很大;因此,这些模型使用功能强大的图形处理单元(GPU)和现场可编程门阵列(FPGA)在台式机或云端运行。
一旦模型被训练以预测信息,其参数值被冻结并且被部署到现场以“推断”它接收的任何新数据的结果。这是机器学习的第二部分:推理。在推理阶段,只有前向传递算法运行,提取重要特征和预测信息。因为不需要误差计算,后向传递算法或多次迭代(因为不需要网络参数调整),所以与训练相比,推理的计算强度要小得多。从而,与云中的运行推理相比,使用嵌入式处理器的边缘机器学习推理变得非常流行,因为可预测性,隐私,网络带宽,延迟和功耗的固有优势。
在嵌入式系统中,推理可以在各种片上处理单元上运行,如中央处理单元(CPU),GPU,数字信号处理器, FPGA逻辑,专用加速器或这些选项的任意组合。机器学习推理功能通常报告为每秒兆(兆卡,千兆或万亿)操作(MOPS,GOPS或TOPS)。
选择嵌入式处理器以在边缘运行机器学习推理
如今有多种选择,可能很难选择合适的设备或设备组合来进行推理。GPU在神经网络模型训练方面的成功可能导致人们误以为GPU也是运行推理的最佳选择。存在将给定设备的性能与可以执行许多TOPS的GPU进行比较的趋势。但是,TOPS可能不是应该考虑的唯一参数。
首先,引用的TOPS数字是理论上的。对于许多设备,内存访问和数据总线基础设施无法扩展到核心或子系统处理功能;因此,在系统上实现的实际吞吐量可以远低于理论上引用的吞吐量。将理论上可实现的TOPS视为比较的唯一参数并不是一个好主意。可实现的吞吐量(可低至理论计算性能的20%)是更相关的度量。某些设备可能在不同的网络模型中表现不佳,而其他设备可能具有吞吐量作为分辨率,批量大小等的函数。批处理可能适用于云环境或培训,但许多嵌入式应用程序具有不允许的延迟限制批量输入框架。比较TOPS时,
并非所有机器学习模型都需要按几个TOPS的顺序进行处理。许多应用程序可以在MOPS或GOPS的性能预算内解决。了解应用程序的性能,延迟和准确性需求是关键的第一步。
用于基于视觉的对象分类任务的流行卷积神经网络(CNN)模型,如GoogLeNet或InceptionNet,ResNet,ResNext和DenseNet,被设计用于桌面或云。在嵌入式处理器上原样使用它们可能需要大量的GOPS / TOPS,这反过来会增加系统成本和功率要求。随着时间的推移,机器学习网络模型技术已发展为嵌入式处理器友好型。诸如高效网络配置,修剪,稀疏性和定点量化等技术已经证明可以显着降低性能要求(数量级),对精度的影响可以忽略不计。
例如,基于CNN的对象分类任务在224 x 224像素大小的图像上具有1,000个类以从ImageNet数据库检测,对于非嵌入友好网络模型上的单个图像可能花费大于1 GOPS。采用嵌入式处理器友好技术时,操作次数可降至<200 MOPS,精度降低最小。如果准确度是可接受的,那么使用嵌入式友好型网络模型将需要6个GOPS来每秒对30个这样的图像进行分类,而不是+30 GOPS。在这种情况下,提供6个GOPS的设备就足够了。除非你仔细选择特定于应用程序的嵌入式处理器,否则使用提供不必要的高性能的设备最终会增加系统成本和功耗。
其他需要考虑的因素包括系统集成,器件特性和器件的长期可用性。要降低总体成本,请寻找集成应用程序所需外围设备和接口的设备。例如,如果你的应用程序是基于机器视觉的智能工厂的工业应用程序,必须通过工业以太网协议或其他协议进行通信,则集成的片上系统可能是最有效的解决方案。TI Sitara AM57x处理器等器件,可根据特定应用要求提供特定应用的性能,集成必要的外设接口,支持所需的工业协议,满足工业级半导体要求以及长期承诺支持,可能是更好的系统级选择。
最后但同样重要的是,还应该考虑软件开发成本。能够提供成熟软件开发套件以及良好工程支持的供应商可以帮助降低风险,降低开发成本并实现可以按时交付的更优质产品。