繁体中文   |   English
欢迎光临瑞德实业(香港)有限公司
为嵌入式设计选择AI芯片
添加时间:2019-3-5 14:19:26 出处: 作者: 点击:655
开发者和系统设计人员在为其嵌入式设计增加某种形式的神经网络或深度学习功能时,有多个选择。以前,甚至是现在,设计人员成功地使用GPU和FGPA来满足了深度学习的内存密集型需求。现在,即便是传统的x86 CPU也已经进入了AI应用。本文通过提出四个关键问题,来帮助开发者为其特定嵌入式AI项目选择最佳的AI芯片。
开发者和系统设计人员在为其嵌入式设计增加某种形式的神经网络或深度学习功能时,有多个选择。以前,甚至是现在,设计人员成功地使用GPU和FGPA来满足了深度学习的内存密集型需求。现在,即便是传统的x86 CPU也已经进入了AI应用。
许多开发者发现现有的这些技术并不总是最合适的。因此,在过去几年中,许多初创公司(以及成熟的芯片开发商)开始专注于为AI应用设计和开发芯片。这些芯片是从头开始构建的,可以满足AI算法和运行应用的算力需求。
要知道,对SoC来说,IP模块是提供神经网络功能的另一种选择,但这是另一个话题了。在IP模块方面,主要供应商包括Cadence、Ceva、NXP、Synopsys和VeriSilicon等。
但与所有技术一样,每种解决方案都有其优缺点。总而言之,设计人员需要根据自己特定的应用来选择最佳的技术。AI芯片通常分为三个关键应用领域:云端训练、云端推理和边缘推理。
训练方面的大拿是Nvidia的GPU,它已经成为训练机器学习算法的热门选择。训练过程要分析数万亿个数据样本,GPU的并行计算架构在这方面是一大优势。
云端推理可以构建许多AI应用的机器学习模型,这些任务需要密集的计算而无法部署在边缘设备上。FPGA类的处理器具有低延迟特点,并可执行计算密集型任务,在这些应用方面具有优势。但并非所有AI计算任务都可以在云端完成,无论成熟公司还是初创公司,很多芯片开发商都在开发自己的AI芯片,并为其处理器添加AI功能。
b0.jpg
图1:不同芯片架构的优势与不足
那么设计师在将脚踏入AI深水之前首先需要回答哪些问题?我与硅谷创业家兼技术专家Chris Rowen进行了交谈。做为BabbleLabs公司和Cognite Ventures的首席执行官,他列出了以下问题。
问题一:了解你的最终应用需求
对于任何设计,第一个问题应该都是:你的应用需求是什么?接下来是“我有一个需要完成的具体任务吗?”,有时这很清楚。Rowen表示, “如果我是一名系统设计师,要开发一个安全摄像头,我会非常关心芯片对视频流交叉部分的处理,包括对象检测、对象识别、对象跟踪等,清楚知道少数几个与最终应用特别相关的任务。”
下一个问题是,应用是在云端还是在边缘设备中运行。这将决定工程师需要考虑设计的方向和选择什么样的芯片。
 “最终应用显然很重要,” Rowen说道。“如果在云端运行,问题将是,‘它是用于训练神经网络,还是在一个已经训练过的网络上仅用于推理?’。如果它在边缘运行,那么想要运行的特定应用集是什么?”
Rowen表示,大多数新的芯片都是为边缘视觉应用而设计的,这些芯片主要针对推理应用,以各种不同的形式进行成像或视频分析。音频,尤其是语音处理是越来越重要且快速增长的一个子类别。
所以,首先要确定是在云端还是边缘。若在云端,是训练还是推理?若在边缘,它是通用的(应用不确定)还是视觉处理,或其他专门的应用(比如语音处理)?
问题二:软件支持
软件工具也有助于区分不同的芯片。“如果它是一个训练芯片,它是否支持各种训练环境,包括TensorFlow、PyTorch和其它框架,因为应用和软件开发团队会使用许多重要的训练环境,”Rowen说道。他认为Nvidia是当今训练芯片的黄金标准和主导供应商。
 “在推理方面,你怎么才能更好地将预先训练好的模型与芯片自身的特性一一对应。如果有像神经网络交换格式(NNEF)这样的标准,这个问题就很容易回答了。“NNEF是Khronos Group推广的一个标准,可以更容易地标准化映射工具。
 “通常情况下,相对于将应用映射到其他新的处理引擎所涉及到的软件,这些神经网络的复杂性并不算高,”Rowen解释道。 “即使这些工具并不完美,人们通常也可以找到一种方法,使用不太复杂的工具将现有神经网络映射到视觉芯片、音频芯片,或者其它边缘处理芯片。”
无论软件是不是最关键的,设计人员都应该考虑硬件的价格、性能和功耗,这就带来了下一个问题。
问题三:内存要求
任何芯片选择都有一个长期存在的问题,那就是成本和性能。对于神经网络,这个问题就是芯片采用什么片上存储器,以及可以提供多大的存储器带宽?
 “有些神经网络非常耗费内存,”Rowen说。 “当然,通常在云端进行的训练过程是内存密集型的,需要大量的片上内存和非常高的内存带宽。”
他补充说,视目标应用不同,推理过程通常占用的内存较少,可能也不需要太高的片外带宽。
这就带来了一个问题。区分一个芯片是通用,还是针对特定应用的一个指标,就是芯片设计人员是否集成了大量片上存储资源和片外存储器带宽。但是,如果设计人员不知道他们的目标应用是什么,可能就会在内存带宽方面过度配置,这就会大幅增加芯片成本。
 “过度配置将增加成本,因此通用芯片几乎总是比专用芯片更昂贵,因为他们必须确保可以满足各种需求,”Rowen说。利弊权衡包括成本、功耗和物理尺寸等。
Rowen认为,如果设计人员可以稍微缩小需求范围,以便降低一些成本和功耗,系统级的性能可能会有大幅提升。“通用和专用[芯片]之间的差异可能高达一个数量级。”
问题四:性能------延迟与吞吐量
性能的最终定义是芯片可以多快地运行神经网络应用,这里的两个相关指标是吞吐量和延迟,要明确系统优化是针对增加吞吐量,还是针对减少延迟。
Rowen表示,在云端,重点通常是吞吐量,而延迟往往在实时边缘系统中非常重要。例如,如果你在为自动驾驶应用开发一款芯片,延迟更为重要,而且是一个关键的安全问题,他补充道。
 “幸运的是,对于很多神经网络应用来说,所能达到的性能与芯片的乘积运算速度之间存在很强的相关性,”Rowen解释道。 “计算资源的利用率有一些变化,但在最简单的水平上,只要问‘在给定精度下每秒乘积-累加多少次’或‘每瓦多少次乘积-累加’,就可以大致知道该芯片的性能。”
一般来说,现在GPU是云端神经网络训练的主导力量,而普通x86处理器是云端推理的最常见平台,因为它在单个芯片上可以灵活地运行包括深度学习和传统软件在内的完整应用,Rowen表示。
在大多数情况下,边缘没有太多的训练工作要做。它主要针对视频或音频等特定用例进行推理。
Rowen为我们提供了一个粗略的评估,按照应用来划分芯片(来自初创公司和成熟企业)。 “有一种趋势是,针对云端的芯片更具通用性,而针对边缘的芯片更为专用。”


上一条:无刷电机控制原理
下一条:为嵌入式设计选择AI芯片

版权所有 © 2012 瑞德实业(香港)有限公司。 E-mail:jill.li@rhett-hk.com
地址:香港九龙旺角花园街2-16号好景商业中心10楼1005室
电话:0755-23595202 传真:0755-83255506