众所周知,深度学习(deep learning)在训练阶段完成模型的建立和参数调优,在推断阶段完成具体的实现及应用。这就好比造车的过程与开车的过程一样,造车过程需要不断尝试“新设计-试车-调优”,而设计一旦定型后,就需要大规模生产制造,最终卖给用户使用。设计车型(训练阶段)时候可以借助各种工具和技术来加速研发与达到更高指标,但生产制造(推断阶段)时需要考虑成本、材料、市场等因素作出灵活适当的剪裁。深度学习在训练阶段常用GPU来加速训练,在推断阶段可以用CPU、专用芯片(ASIC)、FPGA等实现。 GPU并行能力非常强大(内部包括上千核),但成本高昂、功耗大,不适合在无人机、航天、手机通信等特定场景中应用; CPU作为通用芯片的代表,理论上将在训练、推断阶段均可使用,但运行速度教慢导致不适合做训练、功耗太大不适合在功耗有强烈要求的场景中做推断; ASIC通常是针对某个算法而设计的芯片,速度非常快,可以应用在推断阶段,但其设计周期长、成本高、缺乏灵活性不能适应深度学习算法快速更新的要求;FPGA是一种通用的芯片,在速度和功耗上位于CPU和ASIC之间,可以针对硬件编程所带来的并行行和灵活性可以很好地适应深度学习的需求(算法更新+推断阶段的要求),但其开发设计难度较大,门槛高,需要掌握硬件电路调试的知识。另外,像goolge的TPU、寒武纪的NPU,有人认为是一种ASIC,也有人称其为专用处理器(并列与CPU、DSP之外的新型处理器),他们是针对深度学习领域的算法(们)设计的一种计算芯片(显然,这是在推断阶段),其内部设计了一套适合算法(们)计算的通用结构,任何新的算法只需映射(map)到特定到硬件结构上并按序执行即可,其好处是功耗、速度均得到了提升,不足是没有配套的成熟的工具来支持其map过程。从应用者的角度来讲,在推断阶段,CPU和FPGA是目前较好的选择。从研究者的角度来讲,寻找深度学习算法的高效通用实现方法,并设计硬件架构和软件编译工具是当务之急。当然,硬件架构可以设计成专用处理、也可以用FPGA现有资源搭建,相应的软件编译工具也会有巨大差异。
当前,深度学习在推断阶段的研究主要集中在以下几个方面:降存储、降计算、降功耗、提速度、 兼顾灵活性; 借助的手段是量化数据
当前,深度学习在推断阶段的研究主要集中在以下几个方面:降存储、降计算、降功耗、提速度、 兼顾灵活性; 借助的手段是量化数据