CN100468320C - 使用图形处理单元加速并优化机器学习技术的处理 - Google Patents

使用图形处理单元加速并优化机器学习技术的处理 Download PDF

Info

Publication number
CN100468320C
CN100468320C CNB2004101019745A CN200410101974A CN100468320C CN 100468320 C CN100468320 C CN 100468320C CN B2004101019745 A CNB2004101019745 A CN B2004101019745A CN 200410101974 A CN200410101974 A CN 200410101974A CN 100468320 C CN100468320 C CN 100468320C
Authority
CN
China
Prior art keywords
gpu
machine learning
implemented method
computer implemented
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004101019745A
Other languages
English (en)
Other versions
CN1627251A (zh
Inventor
D·W·斯坦克劳斯
I·A·布克
P·Y·西马德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1627251A publication Critical patent/CN1627251A/zh
Application granted granted Critical
Publication of CN100468320C publication Critical patent/CN100468320C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

一种使用图形处理单元(GPU)处理机器学习技术(如神经网络)和其它非图形应用来加速并优化处理的系统和方法。该系统和方法将可用于各种各样的机器学习技术的体系结构从CPU转移到GPU。到GPU的处理转移使用克服限制并在GPU体系结构的框架内工作良好的若干新技术来实现。当克服了这些限制之后,机器学习技术尤其适合在GPU上处理,因为GPU通常比典型的CPU更强大。此外,类似于图形处理,机器学习技术的处理涉及具有解非无效解和大量数据的问题。

Description

使用图形处理单元加速并优化机器学习技术的处理
相关申请的参照
本申请要求2003年12月9日提交的序列号为60/528,578的先前提交的临时专利申请的优先权。
技术领域
本发明一般涉及计算机处理技术,尤其涉及使用图形处理单元(GPU)来加速并优化处理的用于处理机器学习技术(如神经网络)和其它非图形应用的系统和方法。
背景技术
图形处理单元(GPU)是现代个人计算机(PC)的主要组成部分。GPU是一种单芯片处理器,它被设计成加速向用户显示的实时三维(3D)图形。最初作为高端图形工作站的一个特征,GPU接在个人计算机总线上,作为常规中央处理单元(CPU)对其并不适合或仅仅太慢的图形功能的加速器。
计算机图形从线条式图像显示上的线条绘画开始,它一般是经修改的示波器。这些显示的计算需要矢量操作,包括一般的几何变换、剪切显示设备的边界、以及3D显示的透视变换。廉价的商用半导体存储器的出现促使用光栅图形处理器来代替线条绘画系统,该处理器通过一帧缓冲存储器刷新类似电视机的显示屏。由于用户对大多数应用程序一般优选看见有阴影的固体表面而非线条绘画,因此光栅图形迅速替代了线条绘画。作为线条绘画中使用的直线段的替代,光栅图形系统的几何构成块(或基元)是从三角形阵列中构造的多面体表面。显示基元是储存在帧缓冲存储器中的像素的矩形阵列。阵列的行对应于光栅扫描阴极射线管显示器上的离散扫描线。
由于图形从线条绘画前进到光栅图形,对更大处理能力的需求导致在PC上包括数学协处理器。数学协处理器是共享主CPU的指令流并能够访问CPU存储器的集成浮点协处理器。其它类型的集成协处理器是诸如多媒体扩展(MMX)或流SIMD扩展(SSE)等CPU扩展,它们具有并行的数据通路、异步执行,并也能够访问CPU存储器。
对3D图形中日益增长的更高质量和更好真实感的需求导致了对更强的图形处理能力的需求。为满足此需求,引入了GPU来执行计算密集型图形任务。这解除了CPU的负担,并释放CPU以执行其它处理任务。在其现有的具体化形式中,GPU是PC的一个重要组件,它具有其专用的到主CPU存储器的通路,以及其专用的图形存储器。与数学协处理器相反,GPU是具有其自己的指令流、数据通路和专用存储器的自治专用处理器。
当前,GPU设计和配置的趋势给予它们更大的专用存储器、到图形存储器的更高的带宽、以及增加的内部并行度。另外,当前的GPU用日益增长的可编程程度来设计。引入了可编程度,GPU获得了足够多的灵活性以找出非图形应用中的使用。此外,GPU的数据平行体系结构与CPU相比,对计算密集型应用给予更惊人的性能增益。对可替换的图形算法和科学计算问题的扩展已在各种实例中探究。
然而,针对交互式使用(如,语音识别和手写识别)的应用程序却吸引了相对较少的兴趣。其一个原因是实现这些算法对于由GPU处理是困难的,且具有若干限制。对于通用计算,GPU本质上是有限制的流处理器。处理或避开这些限制需要一种既不明显又不直观的编程和处理风格。
这些交互式使用应用程序通常具有非无效解,并处理大量的数据。在这些情况下,机器学习技术是较佳的解决技术。机器学习技术通过自动调节算法的参数,使得在训练之后,可对输入进行正确分类来操作。例如,假定任务是向“A”的像素图像分配正确的ASCII标签。不幸的是,训练通常涉及向算法给予成千上万的对(输入,目标),而算法本身也具有成千上万的操作。其结果是,训练可耗费大量的时间,即使是在最快的可用的机器上。在真实世界的条件下测试或使用该算法也会是惊人的昂贵的。
因此,所需要的是一种使用GPU来处理机器学习技术的系统和方法。还需要一种通过避开GPU的限制来加速并优化机器学习技术的处理的系统和方法。这可确保GPU的完整处理能力能够在解决使用机器学习技术的交互式使用应用程序(如语音和手写识别)中得到充分利用。
发明内容
此处所揭示的本发明涉及一种使用图形处理单元(GPU)来处理机器学习技术的系统和方法。本发明通过将中央处理单元(CPU)处理的一部分移植到GPU,减轻了CPU的计算限制。更具体地,本发明将通常由CPU处理的机器学习结构移植到GPU。机器学习技术尤其适合被移植到GPU,因为GPU通常比CPU更强大,并且因为机器学习技术涉及解决具有非无效解并比数据访问需要更大量的计算的问题,如语音和手写识别。这与基于存储器的分类或搜索相反,它与计算相比具有较高的数据访问。如果向GPU的数据传输耗费了太多时间,则减少了在GPU上进行计算的益处。换言之,如果向GPU传输计算所需的那么多数据,则瓶颈变成数据传输,并且任何净得的改进都被抵消掉。
本发明的方法包括使用GPU训练机器学习技术而不在GPU上进行随后的测试、使用GPU测试机器学习技术而不在GPU上进行先前的训练、以及在GPU上进行训练和测试。具体地,此处所揭示的本发明包括处理交互式使用计算机应用程序的计算机实现的方法。该方法包括使用图形处理单元处理机器学习技术来获取对函数的解、并输出由交互式使用计算机应用程序所使用的解。该方法还包括令训练机器学习技术的可学习参数使用图形处理单元来获取已训练的可学习参数,并使用已训练的可学习参数来获取解。交互式使用计算机应用程序可以是语音识别应用程序、手写识别应用程序之一。此外,机器学习技术可以是神经网络。
该方法还可包括在中央处理单元上储存可学习参数,并在图形处理单元上储存可学习参数的至少某些。获取函数的解可通过使用像素着色引擎(shader)来计算内积,它是矢量内积和矩阵内积的至少其中之一。该方法还可包括将内积分解成子问题,并使用像素着色引擎在子问题上执行多遍。获取函数的解可通过使用像素着色引擎计算外积来完成。该方法还可包括使用纹理映射来计算外积。获取函数解可通过使用像素着色引擎执行矩阵转置来完成。该方法还可包括使用纹理映射来执行矩阵转置。
此处所揭示的本发明也包括使用图形处理单元加速并优化机器学习技术的过程。该方法包括使用图形处理单元上的像素着色引擎来训练机器学习技术的可学习参数、使用图形处理单元上的像素着色引擎以及已训练的可学习参数从机器学习技术获取结果、并输出由应用程序使用的结果。
该过程也包括在图形处理单元上查找可学习参数的至少某些,并使用像素着色引擎来计算以下的至少其中之一:(a)矢量内积;(b)矩阵内积;(c)外积;(d)矩阵转置。机器学习技术可以是神经网络,神经网络可以是以下的至少其中之一:(a)多层、全连接的神经网络;(b)常规神经网络。机器学习技术也可使用期望值最大化(EM)算法和K均值技术以及学习矢量量化(LVQ)技术。该过程也包括使用图形处理单元处理数据。
此处所揭示的本发明还包括一种具有用于使用图形处理单元处理机器学习技术的计算机可执行指令的计算机可读媒质。该媒质包括将着色引擎加载到图形处理单元、将查询数据加载到中央处理单元、调用着色引擎以在图形处理单元上使用机器学习技术处理已训练的函数、以及获取由交互式使用应用程序所使用的结果。
该计算机可读媒质还包括令至少某些可学习参数驻留在图形处理单元上,并处理查询数据以获取输入数据并将输入数据加载到图形处理单元上。此外,该媒质包括使用着色引擎在图形处理单元上计算基元操作。基元操作包括以下的至少其中之一:(a)矢量内积;(b)矩阵内积;(c)外积;(d)矩阵转置。
机器学习技术可以是神经网络和梯度下降技术。该计算机可读媒质还包括令梯度下降技术的至少某些可调节参数驻留在图形处理单元上。交互式使用应用程序可以是手写识别应用程序。此外,机器学习技术可以是神经网络,并还包括使用神经网络执行分类。交互式使用应用程序也可以是光学字符识别应用程序,机器学习技术是神经网络,并还包括使用神经网络执行分类。机器学习技术可以是梯度下降技术,并包括在图形处理单元上储存梯度下降参数,并通过加倍梯度下降参数来扩展梯度下降参数的尾数。
附图说明
参考以下描述以及示出本发明的各方面的附图,可以进一步理解本发明。当结合附图阅读以下本发明的详细描述时,可以清楚其它特征和优点,附图作为示例示出了本发明的原理。
现在参考附图,贯穿附图,相同的标号表示对应的部件:
图1示出了可在其中实现机器学习GPU执行引擎和方法的合适的计算系统的一个示例。
图2所示是本发明所揭示的机器学习GPU执行引擎和方法的一个示例性实现的框图。
图3所示是作为示例,使用例如梯度下降算法的3层学习机器的训练模块的框图/流程图。
图4所示是图3所示的3层学习机器的测试模块的框图/流程图。
图5所示是机器学习GPU执行方法的训练阶段的操作的概况的流程图。
图6所示是机器学习GPU执行方法的测试阶段的操作的概况的流程图。
图7是神经网络中一对层的详细说明。
图8示出了由机器学习GPU执行方法使用的矩形存储技术。
图9示出了机器学习GPU执行方法的GPU存储器组织。
图10示出了使用纹理三角形的纹理映射的使用。
图11所示是内积的框图。
具体实施方式
在以下本发明的描述中参考附图,附图形成了本发明的一部分,并在其中作为说明示出了可实践本发明的具体示例。可以理解,可以在不脱离本发明的范围的情况下使用其它实施例并作出结构上的变化。
I.介绍
图形处理单元(GPU)传统上被用于加速实时3D图形显示。然而,作为提高的处理能力和可编程性的结果,GPU也能够有效地处理其它非图形相关过程。这些过程通常被限于替换图形算法和涉及大量数据和处理的科学计算问题(如,计算流体动力学)。然而,交互式使用应用,如语音和手写识别却吸引了相对较少的兴趣,这是由于GPU体系结构的限制和特性。
本发明所描述的机器学习GPU执行系统和方法通过将某些或所有CPU处理移植到GPU,减轻了CPU的计算限制。更具体地,本系统和方法将可用于各种各样的机器学习技术的体系结构从CPU转移到GPU。将处理转移到GPU通过使用克服GPU体系结构的限制,并在GPU体系结构的框架内能较好工作的若干新技术来实现。在克服了这些实现之后,机器学习技术尤其适合在GPU上处理,因为GPU通常比典型的CPU更强大。此外,类似于图形处理,机器学习技术的处理的问题涉及解非无效解以及大量的数据。
II.示例性操作环境
本发明所揭示的机器学习GPU执行引擎和方法被设计成在计算环境中执行。以下讨论旨在提供可在其中实现机器学习GPU执行引擎和方法的合适的计算环境的简要、一般描述。
图1示出了可在其中实现机器学习GPU执行引擎和方法的合适的计算系统环境的一个示例。计算系统环境100仅为合适的计算环境的一个示例,并非暗示对本发明的使用范围或功能的局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有依赖或需求。
机器学习GPU执行引擎和方法可以使用众多其它通用或专用计算系统环境或配置来操作。适合使用机器学习GPU执行引擎和方法的众所周知的计算系统、环境和/或配置包括但不限于:个人计算机、服务器计算机、手持式计算机、诸如蜂窝电话和PDA等的膝上或移动计算机或通信设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
机器学习GPU执行引擎和方法可在诸如由网络环境中的计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。机器学习GPU执行引擎和方法也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储媒质中,包括存储器存储设备。参考图1,用于实现机器学习GPU执行引擎和技术的示例性系统包括计算机110形式的通用计算装置。
计算机110的组件可包括但不限于,处理单元120(如中央处理单元CPU)、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。
计算机110通常包括各种计算机可读媒质。计算机可读媒质可以是可由计算机110访问的任一可用媒质,包括易失和非易失媒质、可移动和不可移动媒质。作为示例而非局限,计算机可读媒质包括计算机存储媒质和通信媒质。计算机存储媒质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失和非易失,可移动和不可移动媒质。
计算机存储媒质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它媒质。通信媒质通常在诸如载波或其它传输机制的已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送媒质。
注意,术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信媒质包括有线媒质,如有线网络或直接连线连接,以及无线媒质,如声学、RF、红外和其它无线媒质。上述任一的组合也应当包括在计算机可读媒质的范围之内。
系统存储器130包括以易失和/或非易失存储器形式的计算机存储媒质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它可移动/不可移动、易失/非易失计算机存储媒质。仅作示例,图1示出了对不可移动、非易失磁媒质进行读写的硬盘驱动器141、对可移动、非易失磁盘152进行读写的磁盘驱动器151以及对可移动、非易失光盘156,如CD ROM或其它光媒质进行读写的光盘驱动器155。
可以在示例性操作环境中使用的其它可移动/不可移动、易失/非易失计算机存储媒质包括但不限于,磁带盒、闪存卡、数字视频盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
图1讨论并示出的驱动器及其关联的计算机存储媒质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(通常指鼠标、跟踪球或触摸板)向计算机110输入命令和信息。
其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、无线电接收器、电视或广播视频接收器等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121。除监视器之外,计算机也可包括其它外围输出设备,如扬声器197和打印机196,通过输出外围接口195连接。
计算机110可以在使用到一个或多个远程计算机,如远程计算机180的逻辑连接的网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括许多或所有上述与计算机110相关的元件,尽管在图1中仅示出了存储器存储设备181。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,这里示出作为示例而非局限,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或其它装置,用于通过WAN 173,如因特网建立通信。调制解调器172可以是内置或外置的,通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,描述的与计算机110相关的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非局限,图1示出了远程应用程序185驻留在存储器设备181中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
III.一般综述
GPU被设计成加速实时3D图形显示。由于对更好图形的需求的增加,GPU迅速地变得更强大且可编程。作为其增加的可编程度的结果,GPU也能够有效地处理许多其它类型的非图形相关的过程。本发明所揭示的机器学习GPU执行引擎和方法通过将某些CPU处理移植到GPU上,减轻了CPU的计算限制。更具体地,本发明将通常由CPU处理的机器学习体系结构移植到GPU上。如后文所详细描述的,这需要使用若干实现技术来克服GPU的若干限制,并加速和优化机器学习技术的GPU处理。对于通用计算,机器学习尤其适合被移植到GPU上,因为GPU比典型的CPU更强大。
图2所示是本发明所揭示的机器学习GPU执行引擎和方法的示例性实现的框图。应当注意,图2仅是可实现并使用机器学习GPU执行引擎和方法的若干方法之一。机器学习技术可由GPU在训练和测试(或使用)阶段处理。训练阶段指的是在其中使用训练数据调整算法的参数的计算。测试阶段指的是在其中系统作为输入数据和训练参数的函数用于计算有用信息的计算。训练通常耗费较长的时间,但它可一劳永逸地完成。测试指的是例如在字符或语音识别中使用所展开的系统,有时候需要非常快的响应时间。在训练耗费扩展的时间段,但期望最大硬件独立性的应用中,训练在GPU上完成,而测试在CPU上完成。训练算法也可能过于复杂,以至于无法在GPU上运行,而测试算法较简单(如神经网络中的可训练卷积层(convolution layer))。在这一情况下,可能在CPU上训练学习算法,而在测试阶段使用GPU。当然,在某些情况下,可期望在GPU上运行训练和测试。GPU实现对训练和测试将机器学习处理速度提高到优于仅CPU实现的量级。由于GPU技术较新,且比较旧的CPU技术更快地进展,因此这一比值得到了提高。
更具体地,如图2所示,计算装置110包含机器学习GPU执行引擎200。计算装置还包含CPU 120和CPU存储器130。CPU通过加速总线210与视频接口190进行通信。较佳地,该总线210是加速图形端口(AGP)或较新的PCI快速总线,它们被设计成特别地用于3D图形的吞吐量需求。
视频接口190包括GPU 220和GPU存储器230。GPU 220能够通过总线210向CPU 120传输数据。机器学习GPU执行引擎200也与GPU 220和GPU存储器230进行通信。机器学习GPU执行引擎200包括训练模块240和测试模块250。训练模块240在机器学习技术的训练阶段中使用,并用于使用GPU训练该技术的参数。测试(或使用)模块250用于计算已训练参数和输入的给定的函数。计算的结果从机器学习GPU执行引擎200传输到CPU 120,以在诸如语音识别等交互式使用应用程序中使用。
IV.系统组件
图3所示是作为示例使用梯度下降算法的3层学习机器的训练模块的框图/流程图。图3仅作为示例给出,并不意味着将本发明限于梯度下降算法。在本示例中,学习机器优化通过使用梯度下降来执行。在其它机器学习技术中,可传播概率来替代梯度,如在贝叶斯网络和图形模型中。层的排列的数量也是不受限制的,并且本发明可具有更多的层、更少的层或不同的层的排列(非串行)。参数被表示为W=(W1,W2,W3)。整个模块的输入是X,输出是Y=Y3
每一层计算其输入Y、X或W的函数G。注意,从层函数的观点来看,W和Y是对称且不可区分的。这意味着W1、W2和W3本身可由其它层计算。G也可具有比Y和W更多的输入。每一层通过计算其输入的函数(前向传递),并通过传播其输出的导数与相邻层进行通信,输出的导数通过将输出梯度相乘获得,由其雅可比(Jacobian)转置表示为dE/dY。这是反向传递。作为定义,G的雅可比J是矩阵Jki=dYk/dXi,其中,k索引函数G的第k个输出,i索引第i个输入。误差函数E使用代价函数将最后一层的输出与目标T进行比较。不同的代价函数的示例可以是最小均方误差(MSE)、交叉熵(CE)或其它。代价函数为每一变量提供梯度,即每一变量如何影响价值以及在哪一方向上影响代价。该梯度对系统中每一变量和参数计算。更新参数W以降低代价函数。图4所示是图3所示的3层学习机器的测试模块的框图/流程图。
V.操作概述
本发明所揭示的机器学习GPU执行引擎200使用机器学习GPU执行方法,以启用GPU对机器学习技术的处理。一般而言,该方法可被划分成使用GPU来训练机器学习技术的训练阶段,以及使用已训练的函数来解应用的问题的测试阶段。现在将讨论这些阶段的每一个。
训练阶段
在训练阶段,机器学习GPU执行方法用于训练机器学习技术的可学习参数。图5所示是机器学习GPU执行方法的训练阶段的操作的概况。图5表示在GPU上执行的训练绘画的数据流程和控制结构。注意,该图并非对任一类型的机器学习技术专用。许多类型的机器学习技术(如,SVM、K均值、学习矢量量化(LVQ)、期望值最大化(EM)等)可使用该体系结构。上述机器学习技术在本领域中是众所周知的,因此不需要在此详细讨论。如图5所示,CPU向GPU给出指令,并阻塞直到GPU完成这些指令。可选地,也可令CPU和GPU同时计算。
参考图5,机器学习GPU执行方法的训练阶段通过加载着色引擎程序(P)、诸如权值等初始可训练参数(W)以及其它学习参数(L)开始(框500)。这一数据然后从CPU传输到GPU(箭头505)。从CPU到GPU的数据传输相对较昂贵,因此CPU在进入训练循环之前尽可能多地预加载数据。可训练参数(W)储存在GPU存储器230中(框510)。在一个较佳的实现中,学习参数(L)是每一神经网络层的权值以及每一单元的阈值。学习参数(L)是单个标量,称为学习速率。着色引擎程序(P)是用于前向和后向传播并用于权值更新的不同类型的着色引擎。
CPU然后开始在训练数据上循环,并通过加载批量训练数据(X,T)累加训练数据组(框515)。(X)表示像素图像,(T)表示其目标标签。使用组(或批量)的原因是存在启动CPU和GPU之间的数据传输的成本。每次按照若干模式的组传输数据更有效。
像素图像(X)然后被预处理,使得(X)被变换成(X′)(框520)。下一步,将(X′)和(T)发送到GPU(箭头525)。训练数据(X′)然后连同训练目标数据(T)(框535)一起储存在GPU存储器230中(框530)。预处理可具有许多不同的功能,仅举几个例子,如规范化数据使其处于较佳的格式、提取智能或复杂的特征以及生成失真以使数据组更丰富。理论上,预处理可在GPU或CPU上完成。然而,实际上,在CPU上编程比GPU更简单。这意味着如果预处理不需要大量的计算,则在CPU上运行预处理更简单。在某些情况下,某些操作可能无法在GPU上简单、有效地实现,或根本无法实现,并且因此必须在CPU上运行。在某些情况下,预处理在训练和测试阶段中可以不同。例如,在训练中,可从原始数据生成人工数据(平移、旋转等)。已知这一过程能够在测试时刻改进生成。
应当注意,可在预处理中包括可训练参数。即使可训练参数是全局优化的一部分,并且结合驻留在GPU上的学习参数一起训练,这一情况也是真实的。然而,会产生困难,因为可能在每一模式之后,信息(如,误差梯度、负反馈等)必须从GPU传递回CPU,以更新驻留在CPU上的那些参数,使得下一模式可得益于所更新的预处理。当前,从GPU到CPU的数据流程尚未得到优化,因为图形卡通常被设计成向屏幕发送数据,而非向CPU发送回数据。其结果是,采用现有的体系结构,较佳的是将所有可训练参数保存在GPU上。较佳地,所有其它数据被保存在CPU上,并且处理在GPU上执行。可选地,可训练参数可同时驻留在CPU和GPU上。
一旦训练数据(X′)被加载到GPU上,CPU指令GPU运行处理机器学习技术所需的各种着色引擎(框540)。一种典型的机器学习技术由位于GPU 220上的学习模块545表示。学习模块545包括计算函数G(X′,W)作为预处理的输入(X′)和可训练参数(W)的函数的学习机器550。其目标是使其输出尽可能地接近目标值(T)。计算G(X′,W)和(T)之间的误差555,并将误差信号(如,关于W的梯度)发送回学习机器550。然后更新权值(W)以减少G(X′,W)和(T)之间的误差。
作为示例,当训练两层神经网络时,前向和后向传播对应于约20个不同的着色引擎(其某些被多次调用)。当然,着色引擎的数量和复杂度可根据所使用的算法而不同。对组中的每一模式调用着色引擎(如,在某些情况下为500次)。对于随机梯度下降,在处理组中的每一模式之后更新学习参数。对于批量梯度下降,在更新学习参数之前在若干模式上累加学习参数梯度。是使用随机梯度下降还是批量梯度下降很大程度上取决于应用程序和学习算法。对于某些学习算法,如SVM,不产生这一问题。对于手写识别和神经网络,随机梯度下降机器学习技术是一种较佳的机器学习技术。
为一般性目的,可添加下面两个过程,使得CPU可在训练循环内从GPU获取反馈。例如,如图5所示,CPU可收集训练统计并获取训练进展数据(框560)。这可通过令GPU向CPU发送更新的可训练参数(W)和误差来实现(箭头565)。该过程是可任选的,如图5中由虚线框所示的。训练进展数据可用于调整学习参数,或甚至调整某种模式的呈现频率(框570)。例如,采用神经网络,有时候期望在学习进展时降低学习速率。在被称为“自举”的另一类算法中,某些模式的频率或其学习影响可以随由系统作出的误差的函数而改变。
预处理中的可训练参数也可按来自GPU的误差信号的函数来修改。这通过允许误差信号流回CPU,并在CPU上更新学习参数来实现。可相应地修改组大小。极端地,组大小为1,这意味着一旦误差信号如上文在预处理部分所提及的从GPU返回,则在每一次向GPU呈现之后在CPU上更新训练参数。
然后确定训练是否已完成(框575)。这可当所有的批量训练数据在固定数量的迭代之后被处理时确定,或者当达到了期望误差阈值时确定。如果训练未完成,则训练循环再次以数据的加载开始(框515)。否则,获取最终的已训练参数(W)(框580)。这可通过由GPU向CPU传输参数(W)来实现(箭头585)。然后,训练完成(框590)。
测试阶段
在测试阶段,机器学习GPU执行方法用于计算输入和可训练参数的函数。图6所示是机器学习GPU执行方法的测试阶段的操作的概况的流程图。如图6所示,机器学习GPU执行方法计算某些可训练参数W和输入X的给定函数G。应当注意,可训练参数可使用GPU、CPU或通过任一其它装置来计算。此外,可训练参数可以是或不是训练的结果。在这一方面,图6独立于图5所示的可训练参数的训练。
在图6中,使用了类似于图5的体系结构。具体地,图5和6中的体系结构共享数据结构和着色引擎程序P。然而,一个重要的差异是不再需要后向传播着色引擎,因为训练已完成。机器学习GPU执行方法的测试阶段通过将着色引擎程序P和可训练参数W加载到GPU上开始(框600)。如在训练阶段一样,测试阶段试图在识别/使用循环之外尽可能多地进行下载并预计算。着色引擎程序P和可训练数据W然后被发送到GPU(箭头605)。具体地,着色引擎程序P被发送到GPU220以执行处理,而可训练参数W 610被储存在GPU存储器230中。
接下来,收集并加载在其上计算函数G的一组模式X(框615)。存在初始化CPU和GPU之间的通信的成本,因此通过执行分组,可在若干模式上摊销这一成本。模式X然后在被从CPU发送到GPU之前被预处理成X′(框620)。X′然后被发送到GPU(箭头625)。输入数据X′630储存在GPU存储器230中。
预处理可在CPU或GPU上执行。然而,较佳地,只要预处理不是计算上太昂贵的,它就在CPU上执行。预处理对诸如从数据规范化和提取重要信息和特征等特征是有用的。在预处理之后,模式X′作为一组被发送到GPU(箭头625)。
接下来,CPU指令GPU使用着色引擎程序P(框635)。驻留在GPU上的函数模块640包括已训练函数645。已训练函数645连同着色引擎程序一起用于计算函数Y=G(X′,W)。可使用GPU存储器230中的临时计算空间650来协助这一计算。从这一计算中,在GPU存储器230中累加对该组的每一模式的结果Y 655,并将其作为函数模块的输出发送(框660)。结果Y然后被传输回CPU(箭头665),并且在CPU上获取结果Y(框670)。再次,从GPU到CPU的传输是相当昂贵的,因此分组且将Y的大小保持到最小是一种优点。在手写分类示例中,Y仅是图像X的类别,并因此相当小。确定是否有额外的批量查询数据X(框675)。如果有,则再次重新开始识别/使用循环。否则,将结果Y作为输出发送(框680)。
VI.操作细节
机器学习问题描述
若干机器学习技术包含可被强制转换为非常大量矩阵操作的计算作为内核。尤其感兴趣的是大的矩阵/矢量乘法。作为示例,用于手写识别的神经网络通常包含一对层。图7是神经网络中一对层的详细说明。
参考图7,隐藏变量的计算被强制转换为如下给出的矩阵乘法及其后跟随的映射步骤(对1层的计算):
[w][i]=[o′]
[o]=f([o′])
其中,f是S形函数
f ( x ) = 1 e - x + 1
或双曲正切函数
f ( x ) = e x - e - x e x + e - x
两个这样的层被串接,以产生结果。输入、隐藏和输出矢量的大小范围可上千。尽管图7和上文是基于神经网络的,然而应当理解,许多其它的机器学习问题也适合在上文给出的大浮点矢量上的相应操作的一般模型。
GPU上的基元操作
不幸的是,许多机器学习技术,如神经网络、期望值最小化、和许多其它基于梯度下降的算法由简单的基元(或构成块)组成。这些基元包括:
·内积(矢量之间或矩阵与矢量之间)
·外积(矢量之间)
·线性代数(如,标量在矢量或矩阵上的加、减、乘)
·应用到矢量或矩阵的非线性(如双曲正切、S形、阈值)
·矩阵转置
机器学习GPU执行方法使用像素着色引擎实现这些操作的每一个。另外,该方法允许这些操作的每一个一起用于训练并在实时设置中使用。应当注意,该方法可用于神经网络或由与下文描述的相同的基元组成的任何其它的学习算法,或其简单的扩展。
使用像素着色引擎用于GPU计算
机器学习GPU执行方法使用一个或多个像素着色引擎实现上述所有的操作。像素着色引擎在图形处理流水线中使用。像素着色引擎是在像素呈现硬件上执行的个别的程序。具体地,将三角形转换成像素的过程被称为“光栅化”。硬件采用三角形作为输入,并允许指令呈现由程序指定的每一像素,它可在呈现三角形之前加载。这些可编程三角形呈现器被称为“像素着色引擎”。着色引擎中的程序的指令近似汇编语言,因为它们的每一个都具有直接硬件实现。存在对着色引擎竞争的语言(和硬件),如高级着色引擎语言、
Figure C200410101974D00191
的C图形(Cg)以及DirectX。像素着色引擎引入的新灵活性不仅允许表面的自然呈现,也允许令GPU更接近通用并行处理器。
机器学习GPU执行方法使用GPU作为通用并行处理器。另外,该方法使用像素着色引擎以实现机器学习技术中使用的各种基元操作。作为并行专用GPU硬件的结果,这些算法的训练和使用在GPU上运行要比在CPU上运行快一个数量级。
在DirectX的Deirect3D组件中,有两种元素,被称为顶点着色引擎和像素着色引擎。DirectX是由
Figure C200410101974D00192
公司开发的一组应用程序接口(API),它使应用程序能够利用GPU的硬件加速特征。当前一代像素着色引擎是高度可编程的。两种类型的着色引擎都关注向输出设备呈现三角形(图形对象的构成块)。顶点着色引擎可用于诸如空间变换和三角形的顶点(并因此是名字)的动画等任务。像素着色引擎用于当单个三角形被光栅化时着色个别像素(或计算其色彩值)。
像素着色引擎被表达为DirectX着色引擎汇编语言中的一系列指令,它是由DirectX所定义的有限的、硬件独立语言。着色引擎中的代码对要呈现的三角形中的每一像素执行一次,并且其唯一的效果是对该像素设置四个矢量的值。着色引擎语言的限制以及边缘效果的缺乏意味着GPU能够自由地以任一顺序,并使用与其硬件可支持的同样多的并行性来呈现像素,从而获得非常高的性能。像素是4个矢量的事实提供了另一种并行性:像素着色引擎的每一执行可同时计算四个元素(如,一个矢量的四个相邻元素)。
汇编语言编程中使用的许多工具可用于像素着色引擎。这些包括常量、寄存器、加法、减法、乘法、互逆、一小组超越函数等等。然而,诸如循环和分支等其它类似的构造一般是不可用的。这是因为每一着色引擎的指令数量被限制(在一种流行的GPU中为96个指令),并且因为着色引擎无法修改不同于所呈现的像素的存储器。这些限制意味着某些算法不适合由GPU处理,并且如果它们可完全实现,则它们在GPU上运行比在CPU上运行慢。为评估特定的机器学习算法是否能够在GPU上执行,需要检查组成该算法的每一个别操作。
实现单元操作
机器学习GPU执行方法使用一个或多个像素着色引擎实现选中的每一基元操作。第一个挑战是令着色引擎计算在GPU存储器中为矩形的结果。换言之,该结果必须是浮点值的二维矩阵(4矢量)。然而,像素着色引擎在给定的三角形中呈现所有的像素。为克服这一问题,机器学习GPU执行方法指定三角形的矩形视口。图8示出了由机器学习GPU执行方法使用的矩形存储技术。具体地,图8示出了包含要呈现的像素的三角形800。依照机器学习GPU执行方法,GPU将仅在视口810和三角形800的交叉部分内计算像素。由此,为计算期望的矩形区域,将该区域指定为视口810,并将其包含在三角形800内,从而变为呈现目标。
在需要呈现矢量而非矩阵的情况下,可应用相同的技术。唯一的区别是指定仅为一像素高的视口矩形。类似地,为呈现标量值,可使用1×1的像素视口。
采用该技术以及像素着色引擎内可用的通用编程工具,可实现诸如x=F(x)等对矢量和数组的一元操作。对于需要从其它操作数中读取的操作,必须检查GPU存储器组织。具体地,DirectX允许存储器的矩阵区域被分配作为工作空间。图9示出了机器学习GPU执行方法的GPU存储器组织。如图9所示,工作空间900在GPU存储器内生成。在现有的硬件上,工作空间可从2048×2048像素的正方形区域(每一个都具有4个值)的最小分配生成。从这一子矩形910,着色引擎操作可从其它子矩形,如t1920、t2930和t3940中呈现并取出操作数。这一取操作数可通过操作数读950来实现。
DirectX中方便这一存储器组织的机制是纹理映射。纹理映射从将图像放入呈现的表面中的需求产生。例如,当呈现木星的表面、斑马或诸如砖墙等纹理时,必须考虑绘画到表面的模式以及光照、角度、反射等等。对于此操作,跨光栅化三角形的目标区域以双线性内插对矩形查找表的索引。通过将工作空间的矩形区域(不同于要呈现的区域)作为纹理来处理,它们可被映射到目的地矩形。由此,当计算目的地矩形中的x,y位置上的像素时,可访问纹理矩形的几何上对应的像素中的值。例如,如果要呈现a×b像素大小的目的地矩形,则可纹理映射同样为a×b像素的另一区域。这将产生着色引擎代码中对于对应于目的地中第i个像素的ai和bi处的源矩形值的直接访问。这一技术的一个简单应用允许任何矩阵、矢量或标量值被复制到工作空间中别处的同样大小的矩阵、矢量或标量中。可选地,x像素×1像素的纹理区域可被映射到目的地矩形。这提供了对其值依赖于要呈现的目的地像素的x坐标,但不依赖于y坐标的查找表的访问。
纹理的有用性可通过在着色引擎内的寄存器上使用算术来扩展。寄存器是着色引擎可用于呈现给定像素的本地变量。其值无法在像素之间共享(这将破坏并行性假定),但可(本地)用于中间结果。例如,当将其值复制到新位置时,任何数组或矢量可被转置。假定其左、右、上和下坐标为l、r、t和b的源矩形。然后指定其坐标为t、b、l和r的纹理矩形。在像素着色引擎内,在使用x和y纹理坐标从源取出值并将其复制到目的地之前,交换这两个纹理坐标。在呈现结束时,目的地将包含该源的转置。
图10示出了使用纹理三角形的纹理映射的使用。如图10所示,目的地1000的当前像素的呈现将从指定的源矢量1020中的纹理矩形1010检索纹理坐标(15,7)。在取出纹理值之前,反转行和列坐标,使得来自纹理矩形1030,具有位置(7,15)的值被实际读出,它位于要转置的实际真正的源矢量1040内。
DirectX允许纹理映射用于将一个以上源矩形映射到当前目的地。在现有的硬件中,在每一遍中至少可使用8个这样的映射。采用多源,可实现诸如(矢量A—矢量B—>矢量C)等操作。在C中的每一像素上,取出从A到B的纹理映射值、对寄存器值执行初等数学、并储存结果。
从两个矢量到一个矩阵的纹理映射也提供了一种实现外积(矢量A*矢量B—>矩阵C)的方式。设矢量A为行矢量,一个像素宽,矢量B为列矢量,一行高。将这些退化矩形纹理映射到矩阵C的矩形。然后,当呈现C的像素x、y时,纹理采样将产生A的第y个元素以及B的第x个元素,它们正是相乘和储存所需的值。
使用四个分量
在讨论内积的实现之前,鉴于GPU工作空间具有四个分量这一事实,将讨论每一单元操作。这些分量由于每一像素由x、y、z和w值构成而产生。此处,标签x和y不应当与关于上文讨论的对像素坐标引用中的x和y相混淆。这四个分量常规地用于在四维对象空间中储存坐标。机器学习GPU执行方法充分利用了GPU编程模型和硬件的这一特征来更快地执行计算。可忽略这些分量中的三个,并且在如x平面上完成所有的计算,但是所得的编程简化将以高执行成本出现。
为利用这些分量,定义像素平面到数学数组或矢量中的位置的映射。对于矢量,最简单的映射如下:
像素0:x->元素0
像素0:y->元素1
像素0:z->元素2
像素0:w->元素3
像素1:x->元素4
依此类推。
为将其扩展到矩阵,观察到矩阵的每一行(或列)是一个矢量。上述映射被应用到每一行(或列)。是将四个分量折叠成行维度还是列维度是可以简化编程的方式对每一矩阵个别的作出的选择。
给定从矩阵或矢量元素到像素和分量的映射,可以清楚,复制操作完全不受影响。着色引擎texld和mov以及许多其它指令每次在一个像素上操作,因此它们分别将四个值从纹理像素移动到寄存器,并从寄存器移动到目的地像素。
矢量上的转置操作也不改变。分量总是被折叠成矢量的维度。在矩阵的情况下,代码不改变,但是必须注意,折叠的方向连同数据一起转置。
也可适应数学操作。采用适当的句法,许多着色引擎指令可在4矢量值或单个矢量上使用。例如,exp r1.x,r0.x取出寄存器0的x平面、对其取幂、并将结果储存在r1的x平面中。
外积
两个矢量的外积可使用所有四个分量来实现,但是必须引入另一新技术。由机器学习GPU执行方法适用的该技术被称为索引器纹理技术。一般而言,这是仅在四个矢量分量之一中选择值的方法,它被映射到上文所描述的元素。
作为示例,考虑矢量A是大小为a的列矢量。矢量B是大小为b的行矢量。期望计算外积C—a行高且b列宽的矩阵。C将其四个分量折叠成列,或y维度。换言之,按照像素,C的存储矩形为b列宽,但仅为a/4行高(因为每一像素行储存4个矩阵行)。需要a为4的倍数。
需要计算C的每一像素的着色引擎例程。纹理映射对A是直接的,但对B不是。当计算C的第i个像素时,需要访问B的第i个值(非像素)。例如,在C的像素0,0的四个分量中,需要计算下列值:
C0,0=A0*B0
C1,0=A1*B0
C2,0=A2*B0
C3,0=A3*B0
这一计算可以在一个GPU mul(乘)指令中完成。这需要以某种方式将值B0放入寄存器的w平面中(如将A0-A3储存在r2中,将B0储存在r3的w分量中)。然后:
mul r1,r2,r3.wwww
返回到另一步骤工作,如果存在可将B0从其像素内邻域B1-B3中挑选出的“位掩码”,则可使用dp4(点积)指令将该值提取到r3的w分量中。假定r5包含(1,0,0,0),且r4包含B0-B3(由B的纹理映射加载)。该指令将计算(r4.x*1+r4.y*0+r4.z*0+r4.w*0),它等于r4.x,或B0
dp4 r3.w,r4,r5
可计算内积,如果当为矩阵C的列0时值(1,0,0,0)可用,则当呈现列1时为(0,1,0,0);当呈现列2时为(0,0,1,0)等等。这是索引器纹理技术的目的。索引器纹理技术使用非常小的纹理—4像素宽且1像素高,并被初始化成下列值:
 
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
这四个像素值包括了使用所描述的技术从矢量B提取个别值所需的所有“位掩码”。所剩下的是找出一种令正确的索引器纹理技术像素在着色引擎的每一调用中可用的方法。为完成这一任务,机器学习GPU执行方法使用纹理技术的又一应用。
在这一点上,纹理映射以保存纹理像素和目的地像素之间的一对一映射的方式被使用。这通过定义包含相同数量的像素的纹理坐标矩形和目的地矩形来完成。对于索引器纹理技术,定义大小为索引器纹理本身(按定义,为1.0×1.0纹理坐标单元)的倍数纹理坐标矩形如下。如果矩阵C的宽度为w像素,则对索引器纹理指定其宽度为w/4(必须是整数)的纹理坐标矩形。当跨C的宽度在每一像素上调用着色引擎时,索引器纹理坐标范围从0到w/4。换言之,当遍历C的每四个像素时,索引器坐标将从一个整数值改变到下一个。如果考虑纹理坐标的分数部分,则对C的每4个像素,其范围从0到1。这些正是采样索引器纹理以获取C的每一像素上的正确“位掩码”所需的值:
frc r3,t3         //将索引器纹理坐标的分数部分加载到寄存器3
texld r4,r3,s1   //使用寄存器3中的纹理坐标来采样索引器纹理
使用上述技术,创建了计算两个矢量的外积的像素着色引擎。
内积
内积是可被表示为(矩阵A*矢量B—>矢量C)的操作。内积会产生问题,因为它需要在若干值上循环时累加和。这违反了着色引擎体系结构,后者假定在相邻像素之间没有通信。为此,内积无法被实现为单个像素着色程序。然而,如下文所示,内积可通过使用一系列着色引擎和某些额外的存储器来实现。
大小为a行×b列的矩阵A与大小为a的行矢量B相乘。注意,B通常被表示为列矢量,但使用行矢量可简化GPU计算。可回忆,作出矢量的转置副本可使用机器学习GPU执行方法来实现,因此这不是障碍。其结果C是高度为b的列矢量。假定矩阵A以其每像素的4个分量被如上所述地折叠成y(行)维度来组织。
图11所示是内积的框图。图11的对应公式如下:
C0=A0,0*B0+A0,1*B1+A0,2*B2+A0,3*B3
C1=A1,0*B0+A1,1*B1+A1,2*B2+A1,3*B3
依此类推。
注意,呈现目标C是一维的。这优于前面的方法,因为所定义的任何纹理映射可在C中的任一给定像素上对每一个仅具有一个值。然而,C中的每一值取决于B中的所有值和A的一行中的所有值。由此,必须使用另一方法以在着色引擎中从A和B访问多个值。这一方法首先使用多个纹理映射(采用当前硬件,8是合理的数字)来有效地读取多个操作数。其次,在着色引擎中使用地址算术来读取额外的操作数。
即使采用这些技术,也无法在单次呈现中计算大内积。这是因为像素着色程序无法使用分支或循环,并仅可包含有限数量的汇编指令(如在一个当前的实现中为96)。由此,每一着色引擎仅可在达到指令限制之前完成某些计算量。幸运的是,内积可通过限制一次所考虑的A的列数被分解成一组子问题。这将产生一组列矢量部分乘积。该部分乘积然后可被迭代地缩减,直到获取包含内积结果的单个列矢量。
分解技术如下。首先,创建将A的12列子矩阵与B的12列子矢量相乘的着色引擎。有8个纹理映射可用,并且6个被分配给A,2个被分配给B。对A的6个映射具有相同大小的源矩形,但是在6个不同的水平偏移上,从0到5像素。这产生对矩阵的前6列的直接访问(可以回忆,1像素等于水平方向上的1列)。B的两个映射也可按1个像素偏移,给予对B的前8列的直接访问(其中,1像素等于4列)。
着色引擎过程对与使用GPU中的临时(草稿)存储器的目的地矩形的12列部分乘积运行。一次计算C的四行(一个像素)着色引擎过程如下:
a)使用texld(纹理加载)指令4次,用彼此水平地偏移一个像素的4个纹理映射将A的前4个像素加载到寄存器中。每一像素包含四个行值。使用另一texld加载B的一个像素(4列)。
b)使用mul将前4个乘积储存到寄存器0中。这对所呈现的第一个像素计算A0,0*B0、A1,0*B0、A2,0*B0和A3,0*B0。记号xxxx指对所有四个乘积使用寄存器1(即B0)的x分量:
mul r0,r1.xxxx,r2
c)使用mad(乘/加)将下一4个乘积累加到寄存器0中。这访问A的第二列(通过r3),并加到先前的结果—乘积A0,1*B1、A1,1*B1、A2,1*B1和A3,1*B1上。使用yyyy来访问B1
mad r0,r1.yyyy,r3,r0
d)以同一方式再使用mad两次,累加后面8个乘积:
mad r0,r1.zzzz,r4,r0
mad r0,r1.wwww,r5,r0
e)现在,准备第五到八个列(列号4-7)。列4和5已可由分配给A的6个纹理映射中的剩余两个访问。对于列6和7,采用列6的坐标,并加上常量c0两次,c0被设为等于一个像素(或工作空间宽度的1/2048)。这些坐标对于列6和7被储存在额外的寄存器中。然后,使用四个texld指令将这些值,即A0,4到A3,7储存在寄存器中。
f)使用分配给B的被偏移一个像素的第二个纹理映射,加载B4到B7的值(一个像素的值)。
g)使用四个mad指令将另外16个乘积累加到储存在r0中的四个累计中,如步骤(b)到步骤(d)所完成的。
h)现在,对部分乘积的最后四个列作准备。在这一点上,已使用了所有的纹理映射。由此,获取列7的地址,它仍在寄存器中,并连续四次将c0加到该值上。结果储存在寄存器中。执行同一过程将C0加到包含B的第二个像素的地址的寄存器中。这包括将其前进一个像素以访问B8到B11。一旦正确的坐标在寄存器中,再次使用texld将A0,8到A3,11和B8到B11的值加载到其它寄存器中。
i)再使用四个mad指令将最后16个乘积累加到r0中。现在,r0包含12列部分内积的元素C0到C3的值。然后,着色引擎例程完成。不在该着色引擎中处理更多的列的原因是将达到每一着色引擎的指令限制。
上文是将12列部分内积计算到临时存储器中的列矢量的方法。该方法可以如下扩展到宽于12列的矩阵。首先,只要剩余的宽度是12或更多,就处理12列部分乘积。下一步,与第一部分结果直接相邻的这些遍数的结果位于临时存储器的连续块中。最后,如果剩余8或4列(可以回忆,矩阵的宽度必须是4的倍数),则使用被书写成适合8或4列的经修改的着色引擎。用于这些着色引擎的技术是12列着色引擎的简化。
这可获得表示部分结果的一个或多个相邻列矢量的块。这些块需要被“缩减”,即,将其相加成包含最终内积的单个列矢量(并位于可由其它例程访问的明确位置,而非“草稿”存储器)。为效率目的,使用纹理映射(与寄存器中的地址计算相反)来访问需要被缩减的部分结果。使用8个纹理映射作为源,可在一次缩减多达8个部分结果。用于此目的的着色引擎代码是非常直截了当的,它由texld和add指令构成。简化该过程的一个方法是通过要缩减的位置的选择,而非最终结果。即,缩减的结果可被放入现有部分结果的右侧的下一列中。以这一方式,直到最后一个缩减步骤,要被缩减的部分结果的组总是相邻的矩形。采用这些技术以及足够的临时存储器,可计算任意大小的内积。
上文示出了机器学习GPU执行方法包含训练神经网络(以及由相同的操作组成的其它任何机器学习算法)所需的所有操作。此外,这些操作可在GPU上被实现为像素着色引擎,并且在所有的情况下,这些算法有较高程度的并行性。
VII.工作示例
为更完整地理解本发明所揭示的机器学习GPU执行系统和方法,介绍一个示例性工作示例的操作细节。应当注意,该工作示例仅是可实现机器学习GPU执行系统和方法的一个示例。
在本工作示例中,机器学习GPU执行系统和方法在具有
Figure C200410101974D0027141814QIETU
Radeon 9800图形卡的单处理器2.8GHz Pentium 4上运行。9800图形卡具有94个位置的指令存储器和256MB的工作空间,其中16MB用于读/写工作空间,剩余的用于只读数据。仅涉及CPU的实现已被优化,以利用Pentium 4的SSE SIMD扩展,因此比较在SIMD和SIMD之间作出。GPU加速对所测试的示例仍然为一个数量级。
该工作示例示出了用于执行手写识别的机器学习GPU执行系统和方法。其任务是找出手写数字的像素图像的分类(′0′到′9′)。训练数据库由60,000个训练图像及其正确的标签组成。该训练组有时候被称为MNIST,并在web上可用,它在机器学习算法文献中是众所周知的。为完成该任务,使用神经网络方法。具体地,该神经网络是2层全连接神经网络。
通过后向传播对2层全连接神经网络的训练被分解成以下遍数:
Figure C200410101974D00281
这里,前向传播是矩阵W1乘以矢量I,其后跟随函数映射F1(x)(在这一情况下,F1(x)=双曲正切)以计算矢量H。由于在这一神经网络中有2层,因此对W2、H和F2(x)(在这一情况下,F2(x)=S形)重复相同的操作,以产生O。可以同一方式实现更多的层。W1、W2是神经网络的每一层的权值的矩阵,I是输入矢量,H是隐含层矢量,O是输出矢量。通常也向每一隐含单元和输出单元添加阈值。该阈值可通过向输入和隐含层添加其值总是为1的单元来估算。将常量单元连接到其它单元的权值有效地为这些单元的阈值。如果层I和H按照常量单元来增加,则上述公式对每一隐含和输出层正确地实现了阈值。该阈值参数可嵌入在W1和W2内。误差计算是神经网络的目标矢量和输出矢量之差乘以F(x)函数的导数D(x)。F(x)和对应的D(x)的公式如下:
Figure C200410101974D00282
注意,着色引擎语言具有指数函数,它可按分量逐个应用到矢量,或从着色引擎观点来看,按像素逐个应用。
权值更新通过执行该层的误差矢量和输入矢量的外积来执行。所得的矩阵按照学习系数á缩放,并添加到现有的权值矩阵中。为对网络向上传播误差,计算另一矩阵矢量乘法。即,计算权值矩阵的转置与误差矢量的乘法,并再次按D(x)函数缩放。
作为概括,使用机器学习GPU执行方法在GPU上实现以下操作:
1.矩阵*矢量—>矢量(内积)
2.对矢量的每一元素计算x=f(x)(其中,f是双曲正切或对数函数,或其导数)
3.矢量A-矢量B—>矢量C
4.矢量*矢量—>矩阵(外积)
5.矩阵A+常量*矩阵B—>矩阵A
6.矩阵转置
7.复制(矩阵或矢量)到GPU存储器内的新位置
8.从CPU存储器复制(矩阵或矢量)到GPU存储器,或反之亦然(这直接由DirectX支持,并仅为完整性而提及)
这些操作的每一个在一遍中完成,有时候当上述限制阻碍了在单遍中计算操作时,可在多遍中完成。GPU中的实际执行需要在预处理中创建遍数的列表。该列表可手动或自动创建。此外,个别函数必须被编译并下载到GPU(同样在预处理中),输入和训练值必须被下载到图形存储器的工作空间中,然后三角形和视口必须被下载并且对每一遍指定函数。这些步骤的每一个通过对Direct 3D(D3D)图形API的调用来实现。注意,下载三角形和视口启动一遍的执行。如上所述,呈现GPU中被剪切的三角形组成了隐含的每像素的DO循环。对每一遍的特定片段着色过程被编码为每一多边形的属性。对于迭代训练,该序列对每一迭代重复。贯穿所有的迭代,不需要将数据从图形存储器读回CPU中,除非程序员希望监控过程。图形存储器到主存储器的传输在当前的硬件中较慢,因此程序员通常避免这样的操作。
本发明的以上描述为说明和描述目的而提出。它并不意味着穷尽本发明或将其限于所揭示的精确形式。鉴于上述教导,可作出许多修改和变化。本发明的范围并不意味着由本发明的详细描述限制,而是由所附权利要求书来限制。

Claims (24)

1.一种用于处理计算机应用程序的计算机实现的方法,其特征在于,它包括:
使用一图形处理单元处理一机器学习技术以获取结果,其中处理机器学习技术包括使用一像素着色引擎计算一内积,所述内积是以下的至少其中之一:(a)矢量内积;(b)矩阵内积;
将所述内积分解成子问题,并使用像素着色程序在所述子问题上执行多遍;以及
使用所述结果以提供由所述计算机应用程序使用的解决方案。
2.如权利要求1所述的计算机实现的方法,其特征在于,使用图形处理单元处理机器学习技术还包括以下的至少其中之一:(a)使用所述图形处理单元训练所述机器学习技术的可学习参数;(b)使用所述图形处理单元测试和计算输入与所述已训练的可学习参数的函数;(c)使用所述图形处理单元训练可学习参数,并测试和计算输入与所述已训练的可学习参数的函数。
3.如权利要求1所述的计算机实现的方法,其特征在于,所述结果是已训练的可学习参数,所述方法还包括:
使用所述图形处理单元训练所述机器学习技术的可学习参数,以获取所述已训练的可学习参数;以及
使用所述已训练的可学习参数来获取所述解决方案。
4.如权利要求1所述的计算机实现的方法,其特征在于,它还包括:
使用一中央处理单元获取已训练的可学习参数;以及
使用所述图形处理单元从测试和计算输入与所述已训练的可学习参数的函数中获取结果。
5.如权利要求1所述的计算机实现的方法,其特征在于,它还包括:
使用所述图形处理单元获取所述机器学习技术的已训练的可学习参数;以及
使用所述图形处理单元测试和计算输入与所述已训练的可学习参数的函数。
6.如权利要求1所述的计算机实现的方法,其特征在于,所述计算机应用程序是交互式使用的计算机应用程序,所述交互式使用的计算机应用程序是以下之一:(a)语音识别应用程序;(b)手写识别应用程序;(c)光学字符识别应用程序。
7.如权利要求1所述的计算机实现的方法,其特征在于,所述机器学习技术是神经网络。
8.如权利要求3所述的计算机实现的方法,其特征在于,它还包括在所述图形处理单元上储存所述已训练的可学习参数的至少某些。
9.如权利要求1所述的计算机实现的方法,其特征在于,处理机器学习技术还包括使用一像素着色引擎计算一外积。
10.如权利要求9所述的计算机实现的方法,其特征在于,它还包括使用纹理映射计算所述外积。
11.如权利要求1所述的计算机实现的方法,其特征在于,处理机器学习技术还包括使用一像素着色引擎执行矩阵转置。
12.如权利要求11所述的计算机实现的方法,其特征在于,它还包括使用纹理映射执行所述矩阵转置。
13.如权利要求1所述的计算机实现的方法,其特征在于,所述像素着色引擎驻留在一图形卡上。
14.如权利要求3所述的计算机实现的方法,其特征在于,它还包括在所述图形处理单元上查找所述可学习参数的至少某些。
15.如权利要求7所述的计算机实现的方法,其特征在于,所述神经网络是以下至少其中之一:(a)多层、全连接的神经网络;(b)卷积神经网络。
16.如权利要求1所述的计算机实现的方法,其特征在于,所述机器学习技术使用期望值最大化(EM)技术。
17.如权利要求1所述的计算机实现的方法,其特征在于,所述机器学习技术是以下的至少其中之一:(a)K均值技术;(b)学习矢量量化(LVQ)技术。
18.如权利要求1所述的计算机实现的方法,其特征在于,它还包括使用所述图形处理单元预处理数据。
19.如权利要求18所述的计算机实现的方法,其特征在于,预处理包括以下的至少其中之一:(a)规范化数据以将其置于较佳的形式用于输入;(b)从所述数据中提取信息和特征;(c)获取输入数据并将所述输入数据加载到所述图形处理单元上。
20.如权利要求1所述的计算机实现的方法,其特征在于,它还包括:
预处理数据以获取输入数据;以及
将所述输入数据加载到所述图形处理单元上。
21.如权利要求1所述的计算机实现的方法,其特征在于,所述机器学习技术是梯度下降技术。
22.如权利要求21所述的计算机实现的方法,其特征在于,它还包括令所述梯度下降技术的可调节参数的至少某些驻留在所述图形处理单元上。
23.如权利要求6所述的计算机实现的方法,其特征在于,所述机器学习技术是神经网络,它还包括使用所述神经网络执行分类。
24.如权利要求1所述的计算机实现的方法,其特征在于,所述机器学习技术是梯度下降技术,它还包括:
在所述图形处理单元上储存梯度下降参数;以及
通过在两个存储位置上储存每一参数扩展所述梯度下降参数的精度,一个存储位置包含所述参数值的较高位数字,另一存储位置包含较低位数字。
CNB2004101019745A 2003-12-09 2004-12-08 使用图形处理单元加速并优化机器学习技术的处理 Expired - Fee Related CN100468320C (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US52857803P 2003-12-09 2003-12-09
US60/528,578 2003-12-09
US10/837,382 US7219085B2 (en) 2003-12-09 2004-04-30 System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit
US10/837,382 2004-04-30

Publications (2)

Publication Number Publication Date
CN1627251A CN1627251A (zh) 2005-06-15
CN100468320C true CN100468320C (zh) 2009-03-11

Family

ID=34636692

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004101019745A Expired - Fee Related CN100468320C (zh) 2003-12-09 2004-12-08 使用图形处理单元加速并优化机器学习技术的处理

Country Status (5)

Country Link
US (1) US7219085B2 (zh)
EP (2) EP1569128B1 (zh)
JP (1) JP4901097B2 (zh)
KR (1) KR101137107B1 (zh)
CN (1) CN100468320C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108351983A (zh) * 2015-10-28 2018-07-31 谷歌有限责任公司 修改计算图

Families Citing this family (192)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8471852B1 (en) 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US20050243087A1 (en) * 2004-04-30 2005-11-03 Shmuel Aharon GPU-based Finite Element
US8189002B1 (en) * 2004-10-29 2012-05-29 PME IP Australia Pty, Ltd. Method and apparatus for visualizing three-dimensional and higher-dimensional image data sets
US7598953B2 (en) * 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7839854B2 (en) * 2005-03-08 2010-11-23 Thomas Alexander System and method for a fast, programmable packet processing system
US7403784B2 (en) * 2005-03-10 2008-07-22 Avaya Technology Corp. Method and apparatus for positioning a set of terminals in an indoor wireless environment
JP4327175B2 (ja) * 2005-07-12 2009-09-09 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックプロセッサシステム、グラフィックプロセッサおよび描画処理方法
US7747070B2 (en) * 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US8571346B2 (en) 2005-10-26 2013-10-29 Nvidia Corporation Methods and devices for defective pixel detection
US7750956B2 (en) 2005-11-09 2010-07-06 Nvidia Corporation Using a graphics processing unit to correct video and audio data
US8624909B2 (en) * 2005-11-21 2014-01-07 Vixs Systems Inc. Image processing system and method thereof
US8588542B1 (en) 2005-12-13 2013-11-19 Nvidia Corporation Configurable and compact pixel processing apparatus
US8737832B1 (en) 2006-02-10 2014-05-27 Nvidia Corporation Flicker band automated detection system and method
US7599861B2 (en) 2006-03-02 2009-10-06 Convergys Customer Management Group, Inc. System and method for closed loop decisionmaking in an automated care system
US7809663B1 (en) 2006-05-22 2010-10-05 Convergys Cmg Utah, Inc. System and method for supporting the utilization of machine language
US8379830B1 (en) 2006-05-22 2013-02-19 Convergys Customer Management Delaware Llc System and method for automated customer service with contingent live interaction
EP2041598B1 (en) * 2006-06-20 2010-12-01 Qualcomm Incorporated Receiver for radio positioning signals
US8154554B1 (en) * 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US8594441B1 (en) 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
US8648867B2 (en) * 2006-09-25 2014-02-11 Neurala Llc Graphic processor based accelerator system and method
KR100915329B1 (ko) * 2006-12-02 2009-09-03 한국전자통신연구원 그래픽 프로세서의 범용 계산을 위한 성능 테스트 방법
US7907138B2 (en) * 2006-12-29 2011-03-15 Intel Corporation System co-processor
US8723969B2 (en) 2007-03-20 2014-05-13 Nvidia Corporation Compensating for undesirable camera shakes during video capture
US8724895B2 (en) 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8392529B2 (en) 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
US8570634B2 (en) 2007-10-11 2013-10-29 Nvidia Corporation Image processing of an incoming light field using a spatial light modulator
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8548215B2 (en) 2007-11-23 2013-10-01 Pme Ip Australia Pty Ltd Automatic image segmentation of a volume by comparing and correlating slice histograms with an anatomic atlas of average histograms
WO2009067675A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Client-server visualization system with hybrid data processing
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8319781B2 (en) 2007-11-23 2012-11-27 Pme Ip Australia Pty Ltd Multi-user multi-GPU render server apparatus and methods
US9177368B2 (en) 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
US8234228B2 (en) * 2008-02-07 2012-07-31 Nec Laboratories America, Inc. Method for training a learning machine having a deep multi-layered network with labeled and unlabeled training data
US8698908B2 (en) 2008-02-11 2014-04-15 Nvidia Corporation Efficient method for reducing noise and blur in a composite still image from a rolling shutter camera
US20090234603A1 (en) * 2008-03-17 2009-09-17 Anritsu Company System and method for accelerating an electrical measurement instrument using a graphical processing unit
US9379156B2 (en) 2008-04-10 2016-06-28 Nvidia Corporation Per-channel image intensity correction
JP2011524049A (ja) * 2008-06-04 2011-08-25 エヌイーシー ラボラトリーズ アメリカ インク 超並列アクセラレータを使用して学習機械の訓練と分類とを並列化し高速化するシステム及び方法
US8274516B2 (en) * 2008-08-04 2012-09-25 Microsoft Corporation GPU scene composition and animation
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US20100188412A1 (en) * 2009-01-28 2010-07-29 Microsoft Corporation Content based cache for graphics resource management
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US20100223213A1 (en) * 2009-02-27 2010-09-02 Optillel Solutions, Inc. System and method for parallelization of machine learning computing code
US8749662B2 (en) 2009-04-16 2014-06-10 Nvidia Corporation System and method for lens shading image correction
CN101664583B (zh) * 2009-09-09 2012-05-09 深圳市海博科技有限公司 基于cuda的剂量计算优化方法和系统
US8698918B2 (en) 2009-10-27 2014-04-15 Nvidia Corporation Automatic white balancing for photography
US8560466B2 (en) * 2010-02-26 2013-10-15 Trend Micro Incorporated Method and arrangement for automatic charset detection
RU2458384C1 (ru) * 2011-02-17 2012-08-10 Федеральное государственное военное образовательное учреждение высшего профессионального образования "Военный авиационный инженерный университет" (г. Воронеж) Министерства обороны Российской Федерации Устройство для контроля эвм
US8489529B2 (en) * 2011-03-31 2013-07-16 Microsoft Corporation Deep convex network with joint use of nonlinear random projection, Restricted Boltzmann Machine and batch-based parallelizable optimization
US20130054566A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Acceleration of ranking algorithms using a graphics processing unit
JP4976578B1 (ja) 2011-09-16 2012-07-18 楽天株式会社 画像検索装置およびプログラム
JP5879899B2 (ja) * 2011-10-12 2016-03-08 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
TW201322006A (zh) * 2011-11-18 2013-06-01 Ind Tech Res Inst 資料處理方法及其裝置
US20130163195A1 (en) * 2011-12-22 2013-06-27 Nvidia Corporation System, method, and computer program product for performing operations on data utilizing a computation module
US9798698B2 (en) 2012-08-13 2017-10-24 Nvidia Corporation System and method for multi-color dilu preconditioner
CN102841881A (zh) * 2012-08-21 2012-12-26 浪潮电子信息产业股份有限公司 一种基于众核处理器的多重积分计算方法
US9508318B2 (en) 2012-09-13 2016-11-29 Nvidia Corporation Dynamic color profile management for electronic devices
US9307213B2 (en) 2012-11-05 2016-04-05 Nvidia Corporation Robust selection and weighting for gray patch automatic white balancing
US8880446B2 (en) 2012-11-15 2014-11-04 Purepredictive, Inc. Predictive analytics factory
WO2014110167A2 (en) 2013-01-08 2014-07-17 Purepredictive, Inc. Integrated machine learning for a data management product
CN103996069B (zh) * 2013-02-20 2018-04-03 百度在线网络技术(北京)有限公司 一种基于多gpu的bpnn训练方法和装置
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US9218574B2 (en) 2013-05-29 2015-12-22 Purepredictive, Inc. User interface for machine learning
US9646262B2 (en) 2013-06-17 2017-05-09 Purepredictive, Inc. Data intelligence using machine learning
US9826208B2 (en) 2013-06-26 2017-11-21 Nvidia Corporation Method and system for generating weights for use in white balancing an image
US9756222B2 (en) 2013-06-26 2017-09-05 Nvidia Corporation Method and system for performing white balancing operations on captured images
CN104809498B (zh) * 2014-01-24 2018-02-13 清华大学 一种基于神经形态电路的类脑协处理器
CN104809501B (zh) * 2014-01-24 2018-05-01 清华大学 一种基于类脑协处理器的计算机系统
CN104809426B (zh) * 2014-01-27 2019-04-05 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
US20150242741A1 (en) * 2014-02-21 2015-08-27 Qualcomm Incorporated In situ neural network co-processing
US9953646B2 (en) 2014-09-02 2018-04-24 Belleau Technologies Method and system for dynamic speech recognition and tracking of prewritten script
US9563825B2 (en) 2014-11-20 2017-02-07 Adobe Systems Incorporated Convolutional neural network using a binarized convolution layer
US9418319B2 (en) 2014-11-21 2016-08-16 Adobe Systems Incorporated Object detection using cascaded convolutional neural networks
US10540957B2 (en) 2014-12-15 2020-01-21 Baidu Usa Llc Systems and methods for speech transcription
CN104538033A (zh) * 2014-12-29 2015-04-22 江苏科技大学 基于嵌入式gpu系统的并行化语音识别系统及方法
KR102055355B1 (ko) 2015-01-28 2019-12-12 구글 엘엘씨 배치 정규화 레이어들
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US9786026B2 (en) 2015-06-15 2017-10-10 Microsoft Technology Licensing, Llc Asynchronous translation of computer program resources in graphics processing unit emulation
US9881351B2 (en) 2015-06-15 2018-01-30 Microsoft Technology Licensing, Llc Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation
US10540588B2 (en) * 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US10452971B2 (en) * 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
KR102505279B1 (ko) * 2015-07-24 2023-03-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
US9972063B2 (en) 2015-07-30 2018-05-15 International Business Machines Corporation Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units
US10380479B2 (en) * 2015-10-08 2019-08-13 International Business Machines Corporation Acceleration of convolutional neural network training using stochastic perforation
US10332509B2 (en) * 2015-11-25 2019-06-25 Baidu USA, LLC End-to-end speech recognition
US10616314B1 (en) 2015-12-29 2020-04-07 Amazon Technologies, Inc. Dynamic source routing for data transfer
US10482380B2 (en) * 2015-12-30 2019-11-19 Amazon Technologies, Inc. Conditional parallel processing in fully-connected neural networks
CN105631482A (zh) * 2016-03-03 2016-06-01 中国民航大学 一种基于卷积神经网络模型的危险物品图像分类方法
US20170264501A1 (en) * 2016-03-14 2017-09-14 Catalina Labs, Inc. System and method for generating advice for improving internet and wifi performance in a network using machine-learning techniques
CN107292385A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种类Alexnet网络的模型训练方法和装置
BR112018072407A2 (pt) * 2016-06-17 2019-02-19 Hewlett-Packard Development Company, L.P. estrutura de dados comum em máquina de aprendizagem.
KR20180012439A (ko) 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
RU2635902C1 (ru) 2016-08-05 2017-11-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система отбора обучающих признаков для алгоритма машинного обучения
CN106327564B (zh) * 2016-08-25 2019-01-11 河南理工大学 一种图像处理方法及装置
CN106408618B (zh) * 2016-08-31 2019-05-07 上海交通大学 一种基于机器学习的图像解构方法
US11210589B2 (en) * 2016-09-28 2021-12-28 D5Ai Llc Learning coach for machine learning system
CN106529679B (zh) * 2016-10-14 2020-01-14 腾讯科技(上海)有限公司 一种机器学习方法及系统
US10380222B2 (en) 2016-10-17 2019-08-13 International Business Machines Corporation Matrix factorization with two-stage data block dispatch associated with graphics processing units
US10623775B1 (en) * 2016-11-04 2020-04-14 Twitter, Inc. End-to-end video and image compression
CN106779057B (zh) * 2016-11-11 2020-04-17 北京旷视科技有限公司 基于gpu的计算二值神经网络卷积的方法及装置
US10360494B2 (en) * 2016-11-30 2019-07-23 Altumview Systems Inc. Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules
US11010431B2 (en) 2016-12-30 2021-05-18 Samsung Electronics Co., Ltd. Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD
US10824934B2 (en) 2017-01-12 2020-11-03 Texas Instruments Incorporated Methods and apparatus for matrix processing in a convolutional neural network
CN106951961B (zh) * 2017-02-24 2019-11-26 清华大学 一种粗粒度可重构的卷积神经网络加速器及系统
WO2018163005A1 (ja) 2017-03-10 2018-09-13 株式会社半導体エネルギー研究所 タッチパネルシステム、電子機器および半導体装置
US10497084B2 (en) * 2017-04-24 2019-12-03 Intel Corporation Efficient sharing and compression expansion of data across processing systems
US10186011B2 (en) 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US10572773B2 (en) * 2017-05-05 2020-02-25 Intel Corporation On the fly deep learning in machine learning for autonomous machines
US20180322386A1 (en) * 2017-05-05 2018-11-08 Intel Corporation Fine-grain compute communication execution for deep learning frameworks
JP7114622B2 (ja) 2017-05-17 2022-08-08 グーグル エルエルシー ハードウェアにおける行列乗算の実行
WO2018213598A1 (en) * 2017-05-17 2018-11-22 Google Llc Special purpose neural network training chip
GB2562529B (en) * 2017-05-18 2019-12-11 Samsung Electronics Co Ltd Method and apparatus for stabilising 360 degree video
WO2018212514A1 (ko) * 2017-05-18 2018-11-22 삼성전자 주식회사 360도 영상을 처리하는 방법 및 장치
CN117993454A (zh) 2017-06-21 2024-05-07 株式会社半导体能源研究所 包括神经网络的半导体装置
US20190005377A1 (en) * 2017-06-30 2019-01-03 Advanced Micro Devices, Inc. Artificial neural network reduction to reduce inference computation time
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
US10599978B2 (en) * 2017-11-03 2020-03-24 International Business Machines Corporation Weighted cascading convolutional neural networks
US11270228B2 (en) * 2017-11-17 2022-03-08 Panasonic Intellectual Property Management Co., Ltd. Information processing method and information processing system
US11710028B2 (en) * 2017-12-30 2023-07-25 Intel Corporation Efficient convolution in machine learning environments
KR102113093B1 (ko) * 2018-01-10 2020-05-20 서울대학교산학협력단 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
KR102228586B1 (ko) 2018-01-19 2021-03-16 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11468312B2 (en) * 2018-02-02 2022-10-11 Samsung Electronics Co., Ltd. Memory management for machine learning training on GPU
US10681173B2 (en) 2018-04-03 2020-06-09 International Business Machines Corporation Optimized network traffic patterns for co-located heterogeneous network attached accelerators
EP3776271A4 (en) * 2018-04-05 2022-01-19 Rain Neuromorphics Inc. SYSTEMS AND METHODS FOR EFFICIENT MATRIX MULTIPLICATION
KR20190136431A (ko) 2018-05-30 2019-12-10 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US20190378016A1 (en) * 2018-06-07 2019-12-12 International Business Machines Corporation Distributed computing architecture for large model deep learning
CN110766147B (zh) * 2018-07-25 2022-10-11 赛灵思公司 神经网络编译器架构及编译方法
CN112513887B (zh) * 2018-08-03 2024-10-18 西门子股份公司 神经逻辑控制器
KR102536763B1 (ko) * 2018-08-20 2023-05-26 지멘스 악티엔게젤샤프트 인공 지능을 위한 프로그래밍가능 로직 제어기-기반 모듈식 가속 모듈
US11037356B2 (en) 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
KR102277172B1 (ko) * 2018-10-01 2021-07-14 주식회사 한글과컴퓨터 인공 신경망 선택 장치 및 방법
CN109460260B (zh) * 2018-10-24 2021-07-09 瑞芯微电子股份有限公司 一种快速开机的方法和装置
CN109272110A (zh) * 2018-10-31 2019-01-25 上海交通大学 基于光子神经网络芯片的光电融合智能信号处理系统
US11526759B2 (en) * 2018-11-05 2022-12-13 International Business Machines Corporation Large model support in deep learning
CN109359120A (zh) * 2018-11-09 2019-02-19 阿里巴巴集团控股有限公司 一种模型训练中的数据更新方法、装置及设备
US11880769B2 (en) * 2018-11-14 2024-01-23 Advanced Micro Devices, Inc. Using multiple functional blocks for training neural networks
US10922790B2 (en) * 2018-12-21 2021-02-16 Intel Corporation Apparatus and method for efficient distributed denoising of a graphics frame
US11946854B2 (en) * 2018-12-26 2024-04-02 The Regents Of The University Of California Systems and methods for two-dimensional fluorescence wave propagation onto surfaces using deep learning
US11537936B2 (en) 2019-01-17 2022-12-27 Servicenow, Inc. Data set generation for testing of machine learning pipelines
US11550971B1 (en) 2019-01-18 2023-01-10 X Development Llc Physics simulation on machine-learning accelerated hardware platforms
KR102543413B1 (ko) * 2019-02-12 2023-06-13 에스케이하이닉스 주식회사 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
US10970911B2 (en) * 2019-02-21 2021-04-06 Facebook Technologies, Llc Graphics processing chip with machine-learning based shader
US11170064B2 (en) 2019-03-05 2021-11-09 Corinne David Method and system to filter out unwanted content from incoming social media data
US11151325B2 (en) 2019-03-22 2021-10-19 Servicenow, Inc. Determining semantic similarity of texts based on sub-sections thereof
US10671892B1 (en) 2019-03-31 2020-06-02 Hyper Labs, Inc. Apparatuses, methods, and systems for 3-channel dynamic contextual script recognition using neural network image analytics and 4-tuple machine learning with enhanced templates and context data
US11595484B2 (en) 2019-05-03 2023-02-28 Servicenow, Inc. Centralized machine learning predictor for a remote network management platform
US11586659B2 (en) 2019-05-03 2023-02-21 Servicenow, Inc. Clustering and dynamic re-clustering of similar textual documents
US11651032B2 (en) 2019-05-03 2023-05-16 Servicenow, Inc. Determining semantic content of textual clusters
JP7351641B2 (ja) * 2019-05-29 2023-09-27 理想科学工業株式会社 印刷データ生成装置
US11115432B2 (en) 2019-07-08 2021-09-07 Servicenow, Inc. Multi-application recommendation engine for a remote network management platform
CN110502975B (zh) * 2019-07-09 2023-06-23 平安科技(深圳)有限公司 一种行人重识别的批量处理系统
CN110399222B (zh) * 2019-07-25 2022-01-21 北京邮电大学 Gpu集群深度学习任务并行化方法、装置及电子设备
KR20190096872A (ko) * 2019-07-31 2019-08-20 엘지전자 주식회사 연합학습(Federated learning)을 통한 필기체 인식방법 및 이를 위한 장치
KR102147912B1 (ko) * 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
JP7373840B2 (ja) * 2019-10-03 2023-11-06 株式会社 システムスクエア 検査装置
US11450712B2 (en) 2020-02-18 2022-09-20 Rain Neuromorphics Inc. Memristive device
CN111526357B (zh) * 2020-04-14 2021-06-29 艾瑞思检测技术(苏州)有限公司 一种基于pca学习的显卡接口机器测试方法
CN111522771B (zh) * 2020-04-20 2023-08-15 北京百度网讯科技有限公司 眼底图像处理方法、终端设备及存储介质
US20210374563A1 (en) * 2020-05-29 2021-12-02 Joni Jezewski Solution Automation
US11314783B2 (en) 2020-06-05 2022-04-26 Bank Of America Corporation System for implementing cognitive self-healing in knowledge-based deep learning models
US11470107B2 (en) 2020-06-10 2022-10-11 Servicenow, Inc. Matching configuration items with machine learning
US11756290B2 (en) 2020-06-10 2023-09-12 Bank Of America Corporation System for intelligent drift matching for unstructured data in a machine learning environment
US11451573B2 (en) 2020-06-16 2022-09-20 Servicenow, Inc. Merging duplicate items identified by a vulnerability analysis
US20210397957A1 (en) * 2020-06-18 2021-12-23 Apple Inc. Multi-processor training of neural networks
US11915360B2 (en) 2020-10-20 2024-02-27 The Regents Of The University Of California Volumetric microscopy methods and systems using recurrent neural networks
CN112270413B (zh) * 2020-10-22 2024-02-27 北京百度网讯科技有限公司 算子合并方法、装置、电子设备及存储介质
CN112508188B (zh) * 2020-12-01 2024-06-14 北京奇艺世纪科技有限公司 一种分布式模型训练系统、方法、装置、设备和存储介质
US20220414492A1 (en) * 2021-06-23 2022-12-29 Joni Jezewski Additional Solution Automation & Interface Analysis Implementations
US20230044564A1 (en) * 2021-08-03 2023-02-09 Joni Jezewski Other Solution Automation & Interface Analysis Implementations
KR102543512B1 (ko) * 2022-10-31 2023-06-13 서울대학교산학협력단 뉴럴 렌더링을 위한 저정밀도 하드웨어 가속기 및 그 동작 방법
JP2024110228A (ja) * 2023-02-02 2024-08-15 富士通株式会社 中継プログラム、中継方法、情報処理装置、並びに、情報処理システム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5343537A (en) * 1991-10-31 1994-08-30 International Business Machines Corporation Statistical mixture approach to automatic handwriting recognition
US5592597A (en) 1994-02-14 1997-01-07 Parametric Technology Corporation Real-time image generation system for simulating physical paint, drawing media, and feature modeling with 3-D graphics

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
"Fast Matrix Multiplies using Graphics Hardware". E.Scott Larsen,David McAllister.Proceedings of the 2001 ACM/IEEE Conference on Supercomputing. 2001
"Fast Matrix Multiplies using Graphics Hardware". E.Scott Larsen,David McAllister.Proceedings of the 2001 ACM/IEEE Conference on Supercomputing. 2001 *
"Linear Algebra Operators for GPU Implementation of Numerical Algorithms". Jens Kruger,Rudiger Westermann.ACM Transactions on Graphics,Vol.22 No.3. 2003
"Linear Algebra Operators for GPU Implementation of Numerical Algorithms". Jens Kruger,Rudiger Westermann.ACM Transactions on Graphics,Vol.22 No.3. 2003 *
"Optical Character Recognition on Graphics Hardware",http://www.cs.unc.edu/~adyilie/publications.htm. Adrian Ilie.Technical Report,Department of Computer Science,University of North Carolina at Chapel Hill. 2002
"Optical Character Recognition on Graphics Hardware",http://www.cs.unc.edu/~adyilie/publications.htm. Adrian Ilie.Technical Report,Department of Computer Science,University of North Carolina at Chapel Hill. 2002 *
"Sparse Matrix Solvers on the GPU: Conjugate Gradients and Multigrid". Jeff Bolz, Ian Farmer,Eitan Grinspun,Peter Schroder.ACM Transactions on Graphics,Vol.22 No.3. 2003
"Sparse Matrix Solvers on the GPU: Conjugate Gradients and Multigrid". Jeff Bolz, Ian Farmer,Eitan Grinspun,Peter Schroder.ACM Transactions on Graphics,Vol.22 No.3. 2003 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108351983A (zh) * 2015-10-28 2018-07-31 谷歌有限责任公司 修改计算图
US11087216B2 (en) 2015-10-28 2021-08-10 Google Llc Modifying computational graphs

Also Published As

Publication number Publication date
KR20050056124A (ko) 2005-06-14
JP4901097B2 (ja) 2012-03-21
EP1569128A2 (en) 2005-08-31
EP1569128B1 (en) 2015-06-17
US20050125369A1 (en) 2005-06-09
JP2005182785A (ja) 2005-07-07
KR101137107B1 (ko) 2012-07-02
CN1627251A (zh) 2005-06-15
EP2648132B1 (en) 2018-07-11
US7219085B2 (en) 2007-05-15
EP2648132A1 (en) 2013-10-09
EP1569128A3 (en) 2011-06-15

Similar Documents

Publication Publication Date Title
CN100468320C (zh) 使用图形处理单元加速并优化机器学习技术的处理
US7548892B2 (en) Processing machine learning techniques using a graphics processing unit
US20230267319A1 (en) Training neural network accelerators using mixed precision data formats
US11875268B2 (en) Object recognition with reduced neural network weight precision
US7567252B2 (en) Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US11586883B2 (en) Residual quantization for neural networks
Steinkraus et al. Using GPUs for machine learning algorithms
US20190340499A1 (en) Quantization for dnn accelerators
US20200210838A1 (en) Neural network activation compression with narrow block floating-point
CN109388777A (zh) 一种用于经优化的Winograd卷积加速器的系统和方法
WO2020142193A1 (en) Adjusting precision and topology parameters for neural network training based on a performance metric
US20190005377A1 (en) Artificial neural network reduction to reduce inference computation time
Setoain et al. GPU for parallel on-board hyperspectral image processing
Zhang et al. Implementation of DNNs on IoT devices
Tsai et al. Performance-portable autotuning of opencl kernels for convolutional layers of deep neural networks
US11568621B2 (en) Dynamic character model fitting of three-dimensional digital items
Davis Graphics processing unit computation of neural networks
US20220375027A1 (en) Image processing device and operation method therefor
Cabido et al. Hardware-accelerated template matching
Azorin-Lopez et al. Generative shape deformation with optimal transport using learned transformations
Fischer et al. Applications of the massively parallel machine, the MasPar MP-1, to Earth sciences
McGlinchey OPTIMIZING THE SOM FOR THE PLAYSTATION 2
Theiler et al. Co-design of Software and Hardware to
Liu et al. DeepMetaHandles: Learning Deformation Meta-Handles of 3D Meshes with Biharmonic Coordinates—Supplementary Material
Moore A recurrent neural network implementation using the graphics processing unit

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090311

Termination date: 20131208