机器学习模型编译器
文献发布时间:2023-06-19 13:46:35
相关申请的交叉引用
本专利申请要求于2020年6月19日提交的名称为“Machine Learning ModelCompiler”的美国临时专利申请第63/041,766号的优先权权益,该专利申请的公开内容全文以引用方式并入本文。
技术领域
本说明书整体涉及机器学习,并且更具体地讲,涉及机器学习模型编译器。
背景技术
软件工程师和科学家一直使用计算机硬件进行机器学习,以在不同行业应用中进行改进。为了有助于机器学习模型的设计和开发,有时提供机器学习库,其包括可在机器学习模型的运行时获得和解释的机器学习函数。
附图说明
本主题技术的一些特征在所附权利要求书中被示出。然而,出于解释的目的,在以下附图中阐述了本主题技术的若干实施方案。
图1示出了根据一个或多个具体实施的示例性网络环境。
图2示出了根据一个或多个具体实施的用于生成并运行可执行机器学习模型的系统的示例性计算架构。
图3示出了根据一个或多个具体实施的用于生成机器学习模型的示意性流程图。
图4示出了根据一个或多个具体实施的用于执行机器学习模型的示意性流程图。
图5示出了根据一个或多个具体实施的用于使用运行时库执行编译的 ML模型的示意性流程图。
图6示出了根据一个或多个具体实施的用于生成可执行机器学习模型的示意性流程图。
图7示出了根据一个或多个具体实施的用于执行可执行机器学习模型的示意性流程图。
图8示出了根据一个或多个具体实施的用于ML编译器的ML编译器工具的各方面。
图9示出了根据一个或多个具体实施的可执行ML模型的各方面。
图10示出了根据一个或多个具体实施的用于生成可执行机器学习模型的示例性过程的流程图。
图11示出了可被用于实现本主题技术的一个或多个具体实施的电子系统。
具体实施方式
下面示出的具体实施方式旨在作为本主题技术的各种配置的描述并且不旨在表示本主题技术可被实践的唯一配置。附图被并入本文并且构成具体实施方式的一部分。具体实施方式包括具体的细节旨在提供对本主题技术的透彻理解。然而,本主题技术不限于本文阐述的具体细节,而是可以采用一个或多个其他具体实施来实践。在一个或多个具体实施中,以框图形式示出了结构和部件,以便避免使本主题技术的概念模糊。
近年来由于大量训练数据的可用性以及更强大和更高效的计算硬件的进步,机器学习普及率显著上升。机器学习可以利用被训练并且随后被执行以在许多其他类型应用中的特定应用程序中提供预测(例如,分析图像和视频、声音、对象检测和/或跟踪等)的模型诸如神经网络。然而,在硬件有限的环境中诸如在具有低功率或有限存储器处理环境的设备中提供机器学习可能是具有挑战性的。
例如,嵌入式域对现有机器学习框架提出了独特的挑战,这可能妨碍机器学习模型的部署。有限的功率预算对处理功率和存储器带宽施加限制。在这些嵌入式域中,传统操作系统被避开,使得传统依赖的系统调用可能不可用,并且通常不存在可通过其加载外部资源的文件系统。
尽管存在这些和其他硬件限制,但通常希望将机器学习直接嵌入到具有实时约束(例如,对计算定时的限制,使得计算相对于其他计算发生一次)的固件中。最具挑战性的限制之一是尺寸:在一些情况下,机器学习模型必须适配在极小的存储器占用空间中以在嵌入式设备中是可行的。执行机器学习模型所需的每个字节的运行时环境影响机器学习模式中的可用权重数量,并且因此间接地影响在这些环境中部署的模型的准确度。
根据本主题公开的各方面,提供了一种机器学习编译器以生成自给式可执行机器学习模型,该自给式可执行机器学习模型基本上减少或完全消除了对运行时环境的需要和使用。
根据本主题公开的各方面,提供了可在小存储器和/或低功率环境中 (例如,包括在可穿戴设备诸如智能手表上和/或在具有有限功率限制存储器处理器的耳塞上)运行的可执行机器学习模型。可执行机器学习模型可通过编译使用机器学习库生成的机器学习模型来生成,以编译模型的可编译(例如,面向对象的)代码版本。然后可编译和打包该可编译代码以提供可执行机器学习模型,该可执行机器学习模型可在没有对库函数和/或其他运行时环境特征的运行时调用的情况下执行。
以这种方式编译机器学习模型的所有操作也为模型的优化提供了额外的机会。例如,将机器学习模型的所有操作包括在可执行机器学习模型的可编译源代码中的过程允许利用关于模型的层与层之间的连接的知识来优化跨层的操作。现有机器学习模型通常使用解译器来执行,该解译器可优化各个操作,但不知道下一层的即将到来的操作,因此不能跨层进行优化。如下文进一步详细描述的减少或消除运行时环境、所得的附加优化机会(例如,包括任意融合能力)提供了将机器学习部署到极其小的嵌入式设备的能力。
图1示出了根据一个或多个具体实施的示例性网络环境100。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
网络环境100包括电子设备110和服务器120。网络106可以通信地 (直接地或间接地)耦接电子设备110和/或服务器120。在一个或多个具体实施中,网络106可以是可包括互联网或可通信地耦接到互联网的设备的互连网络。出于解释的目的,网络环境100在图1中示出为包括电子设备110和服务器120;然而,网络环境100可包括任何数量的电子设备和任何数量的服务器。
电子设备110可为例如台式计算机、便携式计算设备诸如膝上型计算机、智能电话、外围设备(例如,数字相机、耳机、耳塞)、平板设备、可穿戴设备诸如智能手表、智能带等。在图1中,通过举例的方式,电子设备110被描绘为移动电子设备(例如智能电话)。电子设备110可以是和/或可以包括下文相对于图2和/或图11所述的电子系统的全部或部分。
在一个或多个具体实施中,电子设备110可提供用于生成和/或执行可执行机器学习模型的系统,该可执行机器学习模型可在零运行时操作环境 (例如,在不包括与可执行机器学习模型分开的和/或由操作系统提供的运行时环境和/或运行时库的操作环境中)中执行。在零运行时操作环境中执行可执行机器学习模型可包括在不访问运行时库的情况下执行可执行机器学习模型(例如,在不包括运行时库的操作环境中)。此外,电子设备110 可提供用于训练机器学习模型和/或使用此类机器学习模型(例如,实现神经网络的机器学习模型)开发应用的一个或多个机器学习框架。在一个示例中,此类机器学习框架可为机器学习中的不同问题域提供各种机器学习算法和模型。在一个示例中,电子设备110可包括部署的可执行机器学习模型,该部署的可执行机器学习模型提供与预测对应的数据的输出或一些其他类型的机器学习输出。在一个具体实施中,电子设备110利用受过训练的可执行机器学习模型,并且随时间推移连续地学习/重新训练模型。
图2示出了根据一个或多个具体实施的用于生成并且/或者执行可执行机器学习模型的系统的示例性计算架构。出于解释的目的,计算架构被描述为由电子设备110提供;然而,计算架构可由任何其他电子设备实现,诸如台式计算机、膝上型计算机、可穿戴设备、平板电脑等。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
如图所示,电子设备110可包括存储可执行机器学习(ML)模型220 的存储器200。在一个或多个具体实施中,电子设备110可包括存储器 202,该存储器存储用于训练可执行机器学习模型220和/或训练可被编译以形成可执行机器学习模型220的机器学习模型的训练数据210和/或其他输入数据。在各种具体实施中,可以在编译机器学习模型以形成可执行机器学习模型之前或之后执行机器学习模型的训练。在一个或多个具体实施中,可执行ML模型220可以是经过训练的机器学习模型,其已经由机器学习编译器218在电子设备110处或在另一设备处编译并且包括参数(例如,与神经网络的节点相关联的权重、偏置等),该参数已在电子设备110 和/或另一设备/系统处被训练并被提供给电子设备110。
在图2的示例中,电子设备110包括处理电路208。如图所示,处理电路208可包括中央处理单元204(例如,CPU)、图形处理单元206(例如,GPU)和低功率处理器212。
在一个示例中,低功率处理器212可以是小型低功率辅助处理器(和/ 或ASIC),其可持续(或恒定地)通电以检测设备的运动或检测和/或解释触摸、音频或用于控制设备的其他输入数据,如在电子设备诸如智能电话、可穿戴设备诸如智能手表、或音频设备诸如耳机或耳塞中所提供的。在一个或多个具体实施中,低功率处理器212可被配置为使用比CPU204 和/或GPU 206更少的功率。在一个或多个具体实施中,低功率处理器212 可具有比CPU204或GPU 206更少的可用片上高速缓存。在一个示例中,低功率处理器212可为始终接通的处理器(AOP),该AOP为被实现为嵌入式运动协处理器的小型低功率辅助处理器,如在电子设备诸如
如图2所示,处理电路208还可包括本地存储器211,诸如CPU 204、 GPU 206和/或低功率处理器212中的一者或多者可访问的存储器高速缓存。在一个或多个具体实施中,处理电路208可使用对应于CPU 204、 GPU 206和低功率处理器212的多个单独的芯片来实现。在一个或多个具体实施中,可提供低功率处理器212而不提供CPU 204或GPU 206。在一个或多个具体实施中,低功率处理器212可被配置为在CPU 204和GPU 206不活动时(例如,在电子设备110的睡眠状态下)保持活动(例如,执行用于音频触发检测、运动检测等的可执行ML模型220)。在一个或多个具体实施中,处理电路208可由具有不同核心类型的单个处理器复合体或不同类型的多个处理器形成。例如,处理器复合体可包括具有多个内核群集的多处理系统,每个群集具有与一条或多条总线和/或存储器结构互连件互连的内核类型的一个或多个内核。
如图2所示,可提供机器学习合成器214(ML合成器)(例如,用于由CPU 204或GPU206中的一者或多者从存储在存储器200中的代码执行)。ML编写器214可以是用于机器学习开发者的开发工具,通过该开发工具可从存储在存储器200中的ML库216获得和/或组合一个或多个先前存储的ML库函数以构建和/或训练机器学习模型。例如,ML编写器可包括工具以在ML开发者语言文档中包括对ML库216中的ML库函数的调用,该ML开发者语言文档可由解译器执行。在诸如文档中实现的ML模型的运行时,解译器可根据机器学习模型获得并执行(例如,使用CPU 204和/或GPU 206)ML库函数,如ML开发者语言文档中所述。
然而,ML开发者语言文档以及用于运行相关联的模型的ML库216和 /或运行时库可能太大而不能使用例如低功率处理器212来实现(例如,太大而不能使用低功率处理器的存储器资源和/或处理资源来实现)。例如,低功率处理器212可不具有用于整个运行时库的足够存储器。可提供机器学习编译器218(ML编译器)(例如,用于由CPU 204或GPU 206中的一者或多者从存储在存储器200中的代码执行)以编译(例如,使用ML编译器工具219)由ML编写器214生成(或以其他方式生成)的机器学习模型。编译ML开发者语言文档生成可执行ML模型220,其具有比ML开发者语言文档和相关联的库更小的存储器占用空间,并且可使用低功率处理器212执行(例如,在零运行时操作环境中)。例如,ML编译器218可生成为该ML模型220定制所需的内核(例如,通过基于在ML模型220中要求的模型创建者在运行中创建记录)。在一个或多个具体实施中,对于编译过程的部分,ML编译器218可操作单独的编译器,诸如编译器221(例如,用于可编译代码诸如面向结构的代码诸如面向对象的代码、功能代码、或允许编译独立可执行程序的任何语言的代码的常规编译器),以生成用于机器学习内核和/或机器学习内核的包裹器的机器代码,该机器学习内核可由ML编译器218打包以形成可执行ML模型220。
图3示出了用于使用ML编写器214生成ML模型的示例性过程的示意性流程图。如图所示,用户输入300可被提供给ML编写器214以用于从ML库216选择和/或整合一个或多个ML库函数(例如,用于计算机视觉、自然语言处理、声音分类活动分类、标记、估计、查找相似性、可视化、激活层、卷积层、完全连接层、池化层、存储器管理等的ML库函数)到ML模型302中。例如,ML编写器214可通过生成包括对来自ML 库216的ML库函数的函数调用的ML语言文档来生成ML模型302,该 ML模型可由解译器执行。ML编写器214还可提供用于训练模型的工具。
图4示出了示例性过程,其中ML模型302(例如,来自ML编写器 214)由解译器400(例如,电子设备110或另一电子设备或系统处的解译器)执行。如图所示,解译器400可接收模型输入401(例如,计算机视觉 ML模型的图像数据、语音识别ML模型的音频数据等)和ML模型302,并且可(例如,根据ML模型)从ML库216获得、优化和/或执行ML库函数以使用CPU204生成模型输出402。
如图5所示,为了减小ML模型的存储器占用空间,在一个具体实施中,ML模型302可被编译以供CPU 204执行(例如,不使用解译器 400),诸如通过将对运行时环境502的调用插入编译的ML模型500(例如,包括对运行时环境502的调用的编译的可执行二进制数)中。运行时环境502可包括与来自ML库216的可由任何ML模型使用的ML库函数中的任一个相对应的运行时库函数,和/或附加的运行时库函数,诸如图形函数、数学函数等。
然而,即使如图5所示减小存储器占用空间仍然需要足够的存储器以用于在编译ML模型500的执行期间将运行时环境502加载到存储器中,以及用于可执行二进制数和运行时环境之间的通信,这对于由低功率处理器诸如低功率处理器212执行而言可能是禁止的。
根据一个或多个具体实施,提供了一种解决方案以完全减少或消除对运行时环境的需要和使用。例如,如图6所示,在一个或多个具体实施中,ML编译器218将ML模型302(例如,来自ML编写器214)转换为实现网络的(例如,自给式的)可编译源代码600(例如,可编译源代码诸如面向对象的代码诸如C代码,和/或供稍后由单独的编译器221使用的中间表示代码)。例如,ML编译器218可识别和包括(例如,在可编译源代码600中)运行时库或可访问用于开发模型的另一代码库的仅一部分。例如,代码库的被ML编译器218包括在可编译源代码600中的部分可仅包括该代码库的被ML模型302实际使用的部分(例如,不包括库的其他未使用部分)。例如,然后可由单独的编译器诸如编译器221独立地编译所得可编译源代码600,以生成可由ML编译器218打包并部署到任何环境的可执行代码604(例如,一组机器学习内核,以及用于该组机器学习内核的裹包器代码)。例如,编译器221可由ML编译器218(例如,由ML编译器工具219)控制以生成一条或多条可执行代码604(例如,机器代码)并将其返回给ML编译器218。其将可执行代码的容器打包以形成可执行ML 模型220(例如,包括一组内核和用于内核的机器代码包裹器并且提供用户可调用的网络界面的容器)。这样,ML编译器218可消除手动开发定制 ML解决方案(例如,以结构定向语言或其他可编译语言)的需要,从而为在有限环境中部署ML的团队提供生产率增益。当探索模型的多次迭代以在准确度、模型尺寸和模型性能之间进行优化时,这可能是特别有价值的。
神经网络性能瓶颈通常可被划分为计算受限区域(其中处理器执行指令的能力是限制性能的因素)和存储受限区域(其中存储器子系统提供数据的能力是限制性能的因素)。ML编译器218可利用ML编译器工具219 来优化可执行ML模型220的性能。例如,ML编译器工具219可包括用于优化可编译源代码600的操作级别方面(例如,通过组合ML和/或底层操作,和/或执行存储器布局和对准操作)和/或用于确定循环操作(例如,嵌套式循环的集合)应如何优化的前端工具。ML编译器工具219可包括循环优化器、用于操作循环优化器以将计算受限网络转换成存储受限网络的循环界面工具、和/或一个或多个附加工具诸如配置文件工具。
ML编译器工具219的循环界面(参见,例如图8的循环界面802)可提供循环优化框架,该循环优化框架为输入神经网络生成定制内核并且提供大量优化池以提取最大性能。循环界面可允许ML编译器218将任意操作融合到单个内核中,从而将张量数据保持在寄存器中并显著减小存储器带宽。对于一些网络配置,以这种方式融合(例如,任意)操作消除了对明确张量进行实例化的需要,从而降低了存储器要求。
协同使用这些方法(例如,(i)生成ML模型的可编译版本,(ii)面向结构的代码的多级优化,包括由循环界面生成内核,以及(iii)将ML模型的所有代码和资源编译成独立的可执行ML模型,诸如可执行ML模型220)使得ML编译器能够创建机器学习模型的高性能零开销具体实施。
图7示意性地示出了可执行ML模型220可由处理器诸如低功率处理器212执行的过程。如图所示,可将可执行ML模型220和可执行ML模型的模型输入401提供给低功率处理器212,该低功率处理器可仅使用可执行 ML模型220生成模型输出402,而无需访问运行时环境,诸如图5的运行时环境502。例如,ML编译器218可在可执行ML模型220中包括由机器学习模型使用的运行时库的子集(例如,使得整个运行时库不需要被加载到存储器中以用于执行ML模型)。这样,存储器仅用于由可执行ML模型220执行的精确操作,而不需要存储未被可执行ML模型220使用的运行时库信息,并且不需要访问运行时环境的存储器带宽使用。
优化机器学习的基于编译器的方法,ML编译器218生成的零运行时解决方案(例如,其中所得可执行模型仅包括其使用的资源,与解译模型相比),以及ML编译器工具219的内核生成技术、优化技术和配置文件技术可提供允许图6和图7所示的过程的各种优点,以产生高性能、最低开销的ML解决方案。
图8是示出ML编译器工具219的各方面的示意图。如图所示,ML编译器工具219可包括前端800、循环界面802和循环优化器804。在一个或多个具体实施中,ML编译器218(例如,在ML编译器工具219中)还可包括配置文件工具以帮助用户调谐机器学习模型。
前端800可以是ML模型302、ML库216、一个或多个其他代码库 (诸如包括由ML模型302和/或ML库引用的代码的运行时库)与其他 ML编译器工具219之间的ML编译器218的界面。例如,ML编译器318 可操作前端800以优化可编译源代码诸如可编译源代码600,并且执行其他过程以将包括优化代码的ML模型编译为一个(例如,使得可执行ML模型220是独立的零运行时ML模型)。
因为模型的所有操作(包括库操作)可被前端800包括在被编译以形成可执行ML模型的可编译源代码600中,该代码内的操作的优化可基于特定操作之前和/或之后的操作,而不是可由解译器执行的每个操作的有限优化。
例如,ML编译器218的前端800可以对模型进行描述,在操作级别优化描述,并且将优化的操作分解成更小的步骤以供循环界面802优化。在操作级别优化可包括例如确定是否填充张量(例如,填充具有空白空间的张量以对准矢量操作)和/或布置转置操作的位置。前端800可生成用于如何优化ML模型的操作中的嵌套循环的指令,例如,通过选择用于将内核映射到循环中以及用于组合和/或修改循环的调度指令(例如,降低决策)。调度指令可包括展开或剥开循环和/或实例化一个或多个内部张量的指令。前端800可部分地通过以下方式生成指令:使用ML编译器自身中的启发法以在操作级别进行优化,将操作分解成嵌套循环并寻找循环之间的优化选项,以及检测从循环进一步向下优化的机会(例如,直到下降到机器指令/机器代码的级别)。
循环界面802可从前端800接收优化循环的指令,并且基于指令来操作循环优化器804,以用于在循环级别处进行优化。前端800和/或循环界面802可生成指令(例如,用于循环界面802和/或用于循环优化器804) 以优化跨ML模型的多个操作和/或多个层的嵌套循环的集合,在没有ML 编译器前端操作来拉入独立模型的所有代码的情况下这是不可能的。
循环界面802可以是ML编译器218内部的底层内核生成器。循环界面802可被配置为生成一组内核900(例如,机器学习内核)和将内核绑定在一起以用于可执行ML模型220的裹包器代码902(例如,如图9所示)。
循环界面802可操作循环优化器804以根据来自前端800的指令转换、融合、重新排序和/或重新结构循环。这允许ML编译器218选择每个循环级的优化。由ML编译器218提供的这种细粒度选择机会对于在减小ML模型的存储器占用空间的时候同时优化性能而言可以是重要的。
在一个或多个具体实施中,循环界面802可(例如,从前端800)接收循环嵌套(例如,一组嵌套循环)和用于如何优化循环嵌套的指令(例如,调度指令)作为输入。循环界面802可将从前端800接收的ML特定循环嵌套映射到不同域上,该不同域可以是在不存在循环界面802的情况下循环优化器的优化焦点。循环界面802可从循环优化器804获得循环嵌套的优化版本,并且还可将循环优化器的输出分解成可编译代码,诸如C 代码、编译器221的中间表示代码和/或其他可编译代码。
在一个或多个具体实施中,前端800和/或循环界面802可使用多个优化将操作和后续操作融合成单个更复杂的操作。这可以减少或消除由来自存储器的每个单独操作读取、写出结果等产生的每个存储器流量,而不是允许中间值保持在硬件寄存器中。在一个或多个具体实施中,前端800和/ 或循环界面802可简化操作,诸如算术简化(例如,通过折叠)。
在一个或多个具体实施中,前端800和/或循环界面802可基于竞争代码尺寸和性能要求来确定(例如,针对通过循环界面802控制循环优化器 804)融合、展开和实例化之间的有效平衡。例如,确定该平衡可包括将偏置+激活操作融合到卷积中以减少存储器流量,和/或将所有点样卷积融合到周围(例如,之前和/或之后)操作中。
在一个或多个具体实施中,前端800和/或循环界面802可确定(例如,针对通过循环界面802控制循环优化器804)用于深度卷积的情境变换 (例如,展开)的指令,诸如(可分离卷积+偏置+激活+点样卷积)操作的操作到后续深度卷积的计算中的情境融合,展开最里面的两层点样卷积,和/或静态设置关于张量的限制信息。静态设置关于张量的限制信息可通过完全移除附加的存储器指令和针对尺寸的运行时测试来与展开优化操作配合。在一个或多个具体实施中,前端800和/或循环界面802可提供有效的应用编程接口(API),以将具有已知界限的缓冲器传递到由循环界面802 生成的内核(例如,使用循环优化器804和/或编译器221)。在一个或多个具体实施中,前端800和/或循环界面802可为堆栈分配器提供存储器的积极重复使用,以优化可执行机器学习模型。在一个或多个具体实施中,前端800和/或循环界面802可以利用例如基于回调的分配来确保有限的存储器使用(例如,以防止可执行机器学习模型在执行时间期间分配存储器)以用于优化可执行机器学习模型。
图10示出了根据一个或多个具体实施的用于使用机器学习编译器生成可执行机器学习模型的示例性过程的流程图。出于解释的目的,本文主要参考图1的电子设备110来描述过程1000。然而,过程1000不限于图1的电子设备110,并且过程1000的一个或多个框(或操作)可由服务器120 的一个或多个部件和/或由其他合适设备来执行。进一步出于解释的目的,过程1000的框在本文中被描述为顺序地或线性地发生。然而,过程1000 的多个框可并行地发生。此外,过程1000的框不必按所示顺序执行,并且/ 或者过程1000的一个或多个框不必执行和/或可由其他操作替代。
在框1002处,可将机器学习模型诸如ML模型302提供给机器学习编译器诸如ML编译器218。例如,ML模型可能已经使用ML编写器诸如 ML编写器214生成并且包括来自Ml库216的ML库函数,或者使用其他机器学习模型生成工具和/或库/资源生成。
在框1004处,对于机器学习模型的所有操作,机器学习编译器可生成可编译源代码(例如,可编译源代码,诸如面向对象的代码、其他面向结构的代码或功能代码),诸如图6的可编译源代码600,该可编译源代码被配置为由单独的编译器诸如编译器221编译。在一个或多个具体实施中,机器学习模型可能已使用先前存储的机器学习库函数的库(例如,ML库 216)来生成。生成可编译源代码(例如,可编译源代码600)可包括创建一组机器学习内核;以及利用机器学习编译器的前端来优化用于所述操作中的一者或多者的所生成的可编译源代码。在一个或多个具体实施中,优化所生成的可编译源代码可包括执行存储器布局和对准操作。
优化用于操作中的一个或多个操作的所生成的可编译源代码还可包括利用机器学习编译器的前端将优化操作中的一个或多个操作分成子操作,诸如循环(例如,一组嵌套循环),确定用以优化循环的指令,以及向机器学习编译器的循环界面(例如,循环界面802)提供循环和用以优化循环的指令。用以优化的指令可包括调度指令。循环界面使用指令来优化循环,还可操作循环优化器诸如循环优化器804以为循环中的一个或多个生成可编译代码(例如,作为可编译源代码600的一部分)。
该组机器学习内核也可被优化。例如,在一个或多个具体实施中,优化用于所述操作中的一者或多者的所生成的可编译源代码和优化所述机器学习内核包括平衡用于可执行机器学习模型的性能度量和尺寸度量。在一个或多个具体实施中,优化机器学习内核包括实施解决方案(例如,回调解决方案、通知循环界面802和/或循环优化器804要重复使用什么存储器的解决方案、为循环界面802和/或循环优化器804提供预先针对此类存储器的额外缓冲器的解决方案、或其他解决方案)以限制存储器使用,从而防止可执行机器学习模型在执行时间期间分配存储器。在一个或多个具体实施中,优化机器学习内核包括移除由机器学习编译器的前端指导的运行时检查。
在框1006处,机器学习编译器可使用由单独的编译器从可编译源代码生成的编译机器代码来生成可执行机器学习模型诸如可执行ML模型220,该可执行机器学习模型能够在零运行时操作环境中执行。在一个或多个具体实施中,可执行机器学习模型可包括平台特定的可执行代码。例如,可执行机器学习模型可被特定为由特定硬件执行。在一个或多个具体实施中,机器学习编译器可通过生成包括一组机器学习内核(例如,如图9所示的内核900)和针对该组机器学习内核的裹包器代码(例如,包裹器代码 902)的容器来生成可执行机器学习模型。调度指令可包括用于优化循环中的一个或多个循环的指令。
本公开认识到在本发明技术中使用此类个人信息数据可用于使用户受益。例如,个人信息数据可用于到神经网络的输入或来自神经网络的输出。
本公开设想负责收集、分析、公开、传输、存储或其他使用此类个人信息数据的实体将遵守既定的隐私政策和/或隐私实践。具体地,将期望此类实体实现和一贯地应用一般公认为满足或超过维护用户隐私的行业或政府所要求的隐私实践。关于使用个人数据的此类信息应当被突出地并能够被用户方便地访问,并应当随数据的收集和/或使用变化而被更新。用户的个人信息应被收集仅用于合法使用。另外,此类收集/共享应仅发生在接收到用户同意或在适用法律中所规定的其他合法根据之后。此外,此类实体应考虑采取任何必要步骤,保卫和保障对此类个人信息数据的访问,并确保有权访问个人信息数据的其他人遵守其隐私政策和流程。另外,这种实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和实践。此外,应针对被收集和/或访问的特定类型的个人信息数据调整政策和实践,并使其适用于适用法律和标准,包括可用于施加较高标准的辖区专有的具体考虑因素。例如,在美国,对某些健康数据的收集或获取可能受联邦和/或州法律的管辖,诸如健康保险流通和责任法案(HIPAA);而其他国家的健康数据可能受到其他法规和政策的约束并应相应处理。
不管前述情况如何,本公开还预期用户选择性地阻止使用或访问个人信息数据的实施方案。即本公开预期可提供硬件元件和/或软件元件,以防止或阻止对此类个人信息数据的访问。例如,在到神经网络的输入或来自神经网络的输出的情况下,本主题技术可被配置为在注册服务期间或随后的任何时间允许用户选择“选择加入”或“选择退出”参与对个人信息数据的收集和/或共享。除了提供“选择加入”和“选择退出”选项外,本公开设想提供与访问或使用个人信息相关的通知。例如,可在下载应用时向用户通知其个人信息数据将被访问,然后就在个人信息数据被应用访问之前再次提醒用户。
此外,本公开的目的是应管理和处理个人信息数据以最小化无意或未经授权访问或使用的风险。一旦不再需要数据,通过限制数据收集和删除数据可最小化风险。此外,并且当适用时,包括在某些健康相关应用程序中,数据去标识可用于保护用户的隐私。可在适当时通过移除标识符、控制所存储数据的量或特异性(例如,在城市级别而不是在地址级别或在对于面部识别而言不充分的级别收集位置数据)、控制数据如何被存储(例如,在用户间汇集数据)和/或其他方法诸如差异化隐私来促进去标识。
因此,虽然本公开广泛地覆盖了使用个人信息数据来实现一个或多个各种所公开的实施方案,但本公开还预期各种实施方案也可在无需访问此类个人信息数据的情况下被实现。即,本发明技术的各种实施方案不会由于缺少此类个人信息数据的全部或一部分而无法正常进行。
图11示出了可被用于实现本主题技术的一个或多个具体实施的电子系统1100。电子系统1100可以是图1所示的电子设备110和/或服务器120 和/或可为其一部分。电子系统1100可包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统1100包括总线 1108、一个或多个处理单元1112、系统存储器1104(和/或缓冲器)、ROM 1110、永久性存储设备1102、输入设备接口1114、输出设备接口 1106以及一个或多个网络接口1116,或者其子集及变型形式。
总线1108总体表示通信地连接电子系统1100的许多内部设备的所有系统、外围设备以及芯片组总线。在一个或多个具体实施中,总线1108将该一个或多个处理单元1112与ROM 1110、系统存储器1104和永久性存储设备1102通信地连接。该一个或多个处理单元1112从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行主题公开的过程。在不同的具体实施中,该一个或多个处理单元1112可以是单个处理器或者多核处理器。
ROM 1110存储该一个或多个处理单元1112以及电子系统1100的其他模块需要的静态数据和指令。另一方面,永久性存储设备1102可以是读写存储器设备。永久性存储设备1102可以是即使在电子系统1100关闭时也存储指令和数据的非易失性存储器单元。在一个或多个具体实施中,海量存储设备(诸如,磁盘或光盘及其相应盘驱动器)可被用作永久性存储设备1102。
在一个或多个具体实施中,可移除存储设备(诸如,软盘、闪存驱动器及其相应盘驱动器)可被用作永久性存储设备1102。与永久性存储设备 1102一样,系统存储器1104可以是读写存储器设备。然而,与永久性存储设备1102不同,系统存储器1104可以是易失性读写存储器,诸如随机存取存储器。系统存储器1104可存储一个或多个处理单元1112在运行时可能需要的指令和数据中的任何指令和数据。在一个或多个具体实施中,本主题公开的过程被存储在系统存储器1104、永久性存储设备1102和/或 ROM 1110中。该一个或多个处理单元1112从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行一个或多个具体实施的过程。
总线1108还连接到输入设备接口1114和输出设备接口1106。输入设备接口1114使得用户能够向电子系统1100传送信息以及选择命令。可与输入设备接口1114一起使用的输入设备可包括例如字母数字混合键盘和指向设备(也称为“光标控制设备”)。输出设备接口1106可使得例如能够显示电子系统1100所生成的图像。可与输出设备接口1106一起使用的输出设备可包括例如打印机和显示设备,诸如液晶显示器(LCD)、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、柔性显示器、平板显示器、固态显示器、投影仪或用于输出信息的任何其他设备。一个或多个具体实施可包括既充当输入设备又充当输出设备的设备,诸如触摸屏。在这些具体实施中,提供给用户的反馈可以是任何形式的感官反馈,诸如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。
最后,如图11所示,总线1108还通过一个或多个网络接口1116将电子系统1100耦接到一个或多个网络和/或耦接到一个或多个网络节点,诸如图1中所示的电子设备110。以此方式,电子系统1100可以是计算机网络 (诸如LAN、广域网(“WAN”)或内联网)的一部分,或者可以是网络的网络(诸如互联网)的一部分。电子系统1100的任何或所有部件可与本主题公开一起使用。
根据本公开的各方面,提供了一种方法,该方法包括:向机器学习编译器提供机器学习模型;利用所述机器学习编译器生成用于所述机器学习模型的所有操作的可编译源代码,所述可编译源代码被配置为由单独的编译器编译;以及利用所述机器学习编译器使用由所述单独的编译器从所述可编译源代码生成的编译机器代码来生成可执行机器学习模型,所述可执行机器学习模型能够在零运行时操作环境中执行。
根据本公开的各方面,提供了一种设备,该设备包括:存储可执行机器学习模型的存储器;以及一个或多个处理器,所述一个或多个处理器被配置为执行所述可执行机器学习模型以生成模型输出,而无需访问运行时库。
根据本公开的各方面,提供了一种存储指令的非暂态计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行包括以下各项的操作:向机器学习编译器提供机器学习模型;利用所述机器学习编译器生成用于所述机器学习模型的所有操作的可编译源代码,所述可编译源代码被配置为由单独的编译器编译,所述可编译源代码包括用于由所述机器学习模型使用的运行时库的仅一个子组的代码;以及利用所述机器学习编译器使用由所述单独的编译器从所述可编译源代码生成的编译机器代码来生成可执行机器学习。
可以利用编写有一个或多个指令的有形计算机可读存储介质(或一种或多种类型的多个有形计算机可读存储介质)部分地或全部地实现本公开范围之内的具体实施。有形计算机可读存储介质实质上也可以是非暂态的。
计算机可读存储介质可以是任何可以由通用或专用计算设备读、写或以其他方式访问的存储介质,包括任何能够执行指令的处理电子器件和/或处理电路。例如,非限制地,计算机可读介质可包括任何易失性半导体存储器,诸如RAM、DRAM、SRAM、T-RAM、Z-RAM和TTRAM。计算机可读介质也可包括任何非易失性半导体存储器,诸如ROM、PROM、 EPROM、EEPROM、NVRAM、闪存、nvSRAM、FeRAM、FeTRAM、 MRAM、PRAM、CBRAM、SONOS、RRAM、NRAM、赛道存储器、FJG 和Millipede存储器。
此外,计算机可读存储介质可包括任何非半导体存储器,诸如光盘存储装置、磁盘存储装置、磁带、其他磁性存储设备或者能够存储一个或多个指令的任何其他介质。在一个或多个具体实施中,有形计算机可读存储介质可直接耦接到计算设备,而在其他具体实施中,有形计算机可读存储介质可例如经由一个或多个有线连接、一个或多个无线连接、或它们的任意组合而间接地耦接到计算设备。
指令可以是直接能执行的,或者可用于开发可执行指令。例如,指令可被实现为可执行的或不可执行的机器代码,或者可被实现为可被编译以产生可执行的或不可执行的机器代码的高级语言指令。此外,指令也可被实现为数据,或者可包括数据。计算机可执行指令也可以任何格式组织,包括例程、子例程、程序、数据结构、对象、模块、应用、小程序、函数等。如本领域技术人员认识到的那样,包括但不限于指令的数量、结构、序列和组织的细节可明显不同,而不改变底层的逻辑、功能、处理和输出。
虽然以上论述主要涉及执行软件的微处理器或多核处理器,但一个或多个具体实施由一个或多个集成电路诸如ASIC或FPGA执行。在一个或多个具体实施中,此类集成电路执行存储在电路自身上的指令。
本领域的技术人员将会认识到,本文所述的各种例示性的框、模块、元件、部件、方法和算法可被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上文已经一般性地按照功能性对各种例示性的框、模块、元件、部件、方法和算法进行了描述。此类功能性是被实现为硬件还是软件取决于具体应用以及对整个系统施加的设计约束。技术人员对于每个具体应用可通过不同方式实现所描述的功能性。各种部件和框可被不同地布置(例如,以不同的顺序排列,或以不同的方式划分),而不脱离本主题技术的范围。
应当理解,本发明所公开的过程中的框的特定顺序或分级结构为示例性方法的例示。基于设计优选要求,应当理解,过程中的框的特定顺序或者分级结构可被重新布置或者所有示出的框都被执行。这些框中的任何框可被同时执行。在一个或多个具体实施中,多任务和并行处理可能是有利的。此外,上述具体实施中各个系统部件的划分不应被理解为在所有具体实施中都要求此类划分,并且应当理解,程序部件和系统可一般性地被一起整合在单个软件产品中或者封装到多个软件产品中。
如本说明书以及本专利申请的任何权利要求中所用,术语“基站”、“接收器”、“计算机”、“服务器”、“处理器”及“存储器”均是指电子设备或其他技术设备。这些术语排除人或者人的群组。出于本说明书的目的,术语“显示”或“正在显示”意指在电子设备上显示。
如本文所用,在用术语“和”或“或”分开项目中任何项目的一系列项目之后的短语“中的至少一者”是将列表作为整体进行修饰,而不是修饰列表中的每个成员(即每个项目)。短语“中的至少一者”不要求选择所列出的每个项目中的至少一个;相反,该短语允许包括任何一个项目中的至少一个和/或项目的任何组合中的至少一个和/或每个项目中的至少一个的含义。举例来说,短语“A、B和C中的至少一者”或“A、B或C中的至少一者”各自是指仅A、仅B或仅C;A、B和C的任意组合;和/或 A、B和C中的每一个中的至少一个。
谓词字词“被配置为”、“能够操作以”以及“被编程以”并不意味着对某一主题进行任何特定的有形或无形的修改而是旨在可互换使用。在一个或多个具体实施中,被配置为监视和控制操作或部件的处理器也可以是意指处理器被编程以监视和控制操作或者处理器可操作以监视和控制操作。同样,被配置为执行代码的处理器可解释为被编程以执行代码或能够操作以执行代码的处理器。
短语诸如方面、该方面、另一方面、一些方面、一个或多个方面、具体实施、该具体实施、另一具体实施、一些具体实施、一个或多个具体实施、实施方案、该实施方案、另一实施方案、一些实施方案、一个或多个实施方案、配置、该配置、其他配置、一些配置、一种或多种配置、主题技术、公开、本公开、它们的其他变型等等都是为了方便,并不意味着涉及这样的一个或多个短语的公开对于主题技术是必不可少的,也不意味着这种公开适用于主题技术的所有配置。涉及此类一个或多个短语的公开可适用于所有配置或一个或多个配置。涉及此类一个或多个短语的公开可提供一个或多个示例。短语诸如方面或一些方面可指代一个或多个方面,反之亦然,并且这与其他前述短语类似地应用。
字词“示例性”在本文中被用于意指“用作示例、实例或者例示”。在本文中被描述为“示例性的”或作为“示例”的任何实施方案不必被理解为优选于或优于其他具体实施。此外,在术语“包括”、“具有”等在说明书或权利要求中使用的限度内,这样的术语旨在是包含性的,与术语“包括”当在权利要求中被用作过渡字词时“包括”被解释的方式类似。
本领域的普通技术人员已知或稍后悉知的贯穿本公开描述的各个方面的元素的所有结构和功能等同物通过引用明确地并入本文,并且旨在被权利要求书所涵盖。此外,本文所公开的任何内容并非旨在提供给公众,而与该公开是否明确地被陈述在权利要求中无关。不应根据35U.S.C.§112(f) 的规定解释任何权利要求要素,除非使用短语“用于……的装置”明确陈述了该要素,或者就方法权利要求而言,使用短语“用于……的步骤”陈述了该要素。
先前的描述被提供以使得本领域的技术人员能够实践本文所述的各个方面。这些方面的各种修改对本领域的技术人员而言是显而易见的,并且本文所限定的通用原则可应用于其他方面。因此,本权利要求书并非旨在受限于本文所示的方面,而是旨在使得全部范围与语言权利要求书一致,其中对奇异值中的元素的引用并非旨在意味着“仅仅一个”,而是指“一个或多个”,除非被具体指出。除非另外特别说明,否则术语“一些”是指一个或多个。男性的代名词(例如,他的)包括女性和中性(例如,她的和它的),并且反之亦然。标题和子标题(如果有的话)仅为了方便起见而使用并且不限制本主题公开。
- 机器学习模型编译器
- 机器学习模型运用管理系统以及机器学习模型运用管理方法