在资源受限的环境中实现机器学习

专利查询2022-5-9  345


本申请涉及在资源受限的环境中实现机器学习。

背景技术

机器学习模型正被用于执行越来越广泛的计算任务。机器学习模型通常会产生比替代方法更好的结果,并且可以实现其他不可执行的任务的性能。然而,利用机器学习模型的计算机程序通常比其他计算机程序消耗更多的内存、存储和计算资源。这在内存、存储空间和计算资源受限的环境中可能会出现问题,例如无服务器计算环境。



技术实现要素:

根据一个方面,提供了一种计算机实现的方法。该方法包括将包括计算机程序的包的内容加载到封装的执行环境中;并且由一个或多个计算设备在封装的执行环境中执行该计算机程序。包的内容的数据存储大小可以被限制超过包数据存储大小限制。执行计算机程序可以导致处理,该处理包括从云存储服务中获取经过训练的机器学习模型;将经过训练的机器学习模型加载到封装的执行环境的临时存储中;以及应用该经过训练的机器学习模型以基于一个或多个向量输入导出一个或多个向量输出。经过训练的机器学习模型和包的内容的组合数据存储大小超过包数据存储大小限制。

封装的执行环境可以是容器。

封装的执行环境可以是虚拟机。

应用该经过训练的机器学习模型还可以包括通过查询非关系型数据库来获取一个或多个向量输入;以及使用该经过训练的机器学习模型处理一个或多个向量输入以导出一个或多个向量输出。

该非关系型数据库可以使用分区键跨多个数据库分区对数据条目进行分区。该分区键可以是实体标识符。

查询非关系型数据库可以利用基于递增整数时间戳的排序键。该递增整数时间戳是Unix时间戳。

经过训练的机器学习模型可以包括一个或多个神经网络交换格式的计算图的表示。

该经过训练的机器学习模型可以已经使用第一机器学习框架进行训练,并且可以使用第二机器学习框架进行应用。第一机器学习框架的数据存储大小可以大于第二机器学习框架的数据存储大小。第一机器学习框架可以是开发机器学习框架。第二机器学习框架可以是生产机器学习框架。

包的内容可以包括经过精简的机器学习框架。应用经过训练的机器学习模型可以使用经过精简的机器学习框架。

经过精简的机器学习框架可以包括完整机器学习框架的多个文件的子集。该子集可以排除在使用完整机器学习框架的经过训练的机器学习模型的一个或多个应用期间未被访问的多个文件中的一个或多个。

根据另一方面,提供了一种数据处理系统。该数据处理系统被配置为执行根据任一前述定义的方法。

根据另一方面,提供了一种包。该包可以包括计算机程序。包的数据存储大小可以被限制超过包数据存储大小限制。该计算机程序可以包括指令,当由一个或多个计算设备在封装的执行环境中执行时,该指令可以导致一个或多个计算设备执行从云存储服务中获取的经过训练的机器学习模型;将经过训练的机器学习模型加载到封装的执行环境的临时存储中;以及应用经过训练的机器学习模型以基于一个或多个向量输入导出一个或多个向量输出。经过训练的机器学习模型和包的内容的组合数据存储大小可以超过包数据存储大小限制。

根据另一方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有根据任一前述定义的包。

附图说明

现在将参考以下附图以示例的方式描述本发明的某些实施例。

图1是示出了可以利用经过训练的机器学习模型的系统的示例的示意框图;

图2是应用经过训练的机器学习模型的示例方法的流程图;

图3是在封装的执行环境中加载和执行计算机程序的示例方法的流程图;

图4是在与训练该机器学习模型的机器学习框架不同的机器学习框架上运行该机器学习模型的示例方法的流程图;以及

图5是导出经过精简的机器学习框架的示例方法的流程图。

具体实施方式

示例实施例提供了在资源受限的环境中利用机器学习模型的系统和方法。

电脑系统

图1是示出了可以利用经过训练的机器学习模型的计算机系统100的示例的示意框图。

计算机系统100包括包托管服务器110、云存储服务120、执行主机130和非关系型数据库170。包托管服务器100、云存储服务120和非关系型数据库170中的每一个被配置为通过各自的网络与执行主机130进行通信。各自的网络中的每一个可以是相同的网络或不同的网络。各自的网络中的每一个可以是局域网、互联网、专用广域网(WAN)、虚拟专用网(VPN)和/或云计算服务的内部网络中的任一个或任何组合。为了清楚起见,计算机系统100的一些功能方面每个都被讨论为与计算设备相关。这些功能方面中的任何一个都可以被并置在单个计算设备上,例如包部署服务器110可以与执行主机130被并置在同一设备上。可替代地或附加地,这些功能方面中的任一个可以分布在多个计算设备上。例如,云存储服务120可以是跨多个计算设备被托管的分布式云存储服务和/或非关系型数据库170可以是跨多个计算设备被托管的分布式非关系型数据库170。

包托管服务器110可以是任何合适的计算设备或者可以是云存储服务的服务器。例如,包托管服务器110可以是商用服务器、机架服务器、台式计算机、大型机、笔记本电脑或云存储服务的一个或多个服务器。包托管服务器110可以使用任何合适的技术来存储包。例如,包可以被存储为文件、二进制数据库条目或二进制大对象(BLOBs)。包托管服务器110可以使用任何合适的技术向网络中的其他设备提供包。例如,可以使用数据库主机服务或文件主机服务将包提供给其他设备。在包托管服务器110为云存储服务的一个或多个服务器的情况下,包托管服务器110可以是例如亚马逊简单存储服务(Amazon S3)、Azure存储或其他云存储服务的一个或多个服务器。该云存储服务可以是云存储服务120或者可以是不同的云存储服务。

包托管服务器110托管包112,包112包括稍后将描述的包的内容150。包112可以是包括包的内容150的压缩存档。例如,包112可以是ZIP文件、JAR文件、使用gzip压缩的磁带存档文件(tar.gz文件)、使用bzip2压缩的磁带存档文件(tar.bz2文件)或7z文件。或者,包112可以是未压缩的形式,例如,作为包托管服务器110的文件系统上的常规文件夹。

云存储服务120提供通过计算设备在网络上可访问的数据存储。在云存储服务120中,数字数据可以被存储在逻辑数据池中并从逻辑数据池中被检索。物理存储设备,例如硬盘驱动器和固态驱动器,提供可以跨多个服务器,并且在某些情况下,跨多个位置分布的数据存储。与被托管在单个服务器上的数据存储相比,使用跨多个服务器分布的数据存储可以促进存储的高度冗余、可用、可扩展和快速访问。云存储服务可以是对象存储服务、块存储服务、文件存储服务或云数据库。云存储服务可以是由云存储供应商提供的商用云存储服务。例如,云存储服务可能是亚马逊简单存储服务(Amazon S3)、Azure存储或其他云存储服务。云存储服务也可以是被托管在私有云中的云存储服务,例如作为使用OpenStack平台被实现的私有云的一部分。可用于提供使用私有云的云存储服务的云存储服务软件的示例包括Swift、Cinder和Manila,其分别提供对象、块和文件存储。

云存储服务120存储被存储的经过训练的机器学习模型122。被存储的经过训练的机器学习模型122可以被存储为压缩文件或压缩存档的一部分。例如,被存储的经过训练的机器学习模型122可以被存储为ZIP文件、使用gzip压缩的磁带存档文件(tar.gz文件)、使用bzip2压缩的磁带存档文件(tar.bz2文件)或7z文件。或者,被存储的经过训练的机器学习模型122可以未压缩地被存储或以机器学习模型压缩格式被存储。被存储的经过训练的机器学习模型122可以以神经网络交换格式表示。神经网络交换格式可以将机器学习模型表示为计算图。神经网络交换格式可以是与几种神经网络框架兼容的表示神经网络的格式。神经网络交换格式的示例是开放式神经网络交换格式(ONNX)和神经网络交换格式(NNEF)。或者,被存储的经过训练的机器学习模型122可以以特定机器学习框架的格式表示。

执行主机130可以是任何合适的计算设备。例如,执行主机130可以是商用服务器、机架服务器、台式计算机、大型机或笔记本电脑。执行主机130可以跨多个计算设备分布,例如,跨多个商用服务器和/或机架服务器。执行主机130可以是提供无服务器计算服务的云计算服务的执行主机。无服务器计算服务可以提供功能即服务(FaaS)。FaaS促进了代码的执行,而无需提供或管理服务器。使用FaaS,代码可以作为“功能”运行以响应事件或请求,然后由无服务器计算平台自动提供用于执行代码的服务器和环境。提供FaaS的无服务器计算服务的示例包括AWS Lambda、Azure Functions和IBM云功能。提供FaaS的无服务器计算服务也可以使用无服务器计算服务软件被托管在私有云中。提供FaaS的无服务器计算服务软件的示例包括Apache OpenWhisk、Kubeless和OpenFaaS。

执行主机130提供封装的执行环境140。封装的执行环境140至少在有限程度上将正在执行的处理以及存储在封装的执行环境内的数据与其他处理和存储在执行主机内的数据隔离。多个封装的执行环境可以由执行主机130提供。由这些封装的执行环境中的每一个提供的隔离促进在执行主机130上运行多个程序、进程、功能或平台,同时最小化它们之间的干扰并维持安全和隐私要求。例如,由每个封装的执行环境提供的隔离可以促进来自多个组织的功能在执行主机130上被执行而不损害它们的安全性和/或隐私。

封装的执行环境140可以是虚拟机。虚拟机模拟计算机系统。客户操作系统被托管在虚拟机上,并且虚拟机在客户操作系统看来类似于物理机。可以使用管理程序,即虚拟机监视器来提供虚拟机。管理程序可以与执行主机130的主机操作系统集成。例如,基于内核的虚拟机(KVM)管理程序内置于Linux内核中,而Hyper-V管理程序内置于Windows服务器中。管理程序还可以促进硬件辅助虚拟化以提高虚拟机的性能。硬件辅助虚拟化可以利用处理器虚拟化指令,例如Intel处理器上的Intel VT-x和AMD处理器上的AMD-V。虚拟机可以是微型虚拟机。提供微型虚拟机的管理程序的一个示例是被AWS Lambda使用的Firecracker。与其他虚拟机相比,微型虚拟机可以启动得更快并且使用更少的计算资源。

封装的执行环境140可以是容器。容器将在容器内运行的应用程序的执行环境与直接在执行主机130或其他容器中执行的应用程序的执行环境隔离开。容器使用执行主机130的操作系统内核和硬件,并与直接在执行主机上或其他容器中运行的应用程序共享这些。为了实现隔离,容器提供了由内核和硬件提供的底层资源,使它们对容器内的应用程序看起来是专用于容器的。容器还可以通过在容器内运行的应用程序限制对执行主机130的各种系统资源的访问,例如,文件系统,到原始设备。容器还可以限制在容器内运行的应用程序可以访问的计算资源的数量,例如CPU、内存和持久性存储。容器可以比类似的虚拟机小,因为其使用执行主机130的操作系统内核。

使用虚拟机而不是容器的优势包括基于硬件虚拟化的安全性和更好的工作负载隔离。使用容器而不是虚拟机的优势包括快速启动时间;更好的资源利用率和高密度,即单个执行主机上可以容纳更多容器。

包112的包内容150可以被加载到封装的执行环境140中。在包112被存储为压缩存档的情况下,加载包内容150可以包括解压缩包。包内容150的数据存储大小可以被限制超过包数据存储大小限制。包内容150的数据存储大小可以受封装的执行环境或执行主机130是其一部分的云计算服务的限制。将包内容150加载到封装的执行环境140中可以由执行主机130、包托管服务器110或由执行主机130是其一部分的云计算服务的另一设备来执行。

包内容150包括计算机程序152和机器学习框架154。计算机程序152可以是由将是无服务器计算服务的一部分的执行主机130提供给FaaS的无服务器计算服务执行的“功能”。无服务器计算服务可以限制每个“功能”可以运行的时间。计算机程序152和由此导致的处理,可以运行的时间可以受到时间限制的的限制。机器学习框架154可以由计算机程序152使用。机器学习框架154可以是任何合适的机器学习框架,例如PyTorch、ONNX Runtime、Caffe2、TensorFlow或MxNet。机器学习框架可以是完整机器学习框架,也可以是经过精简的机器学习框架。经过精简的机器学习框架包括完整机器学习框架的文件的子集,例如PyTorch。例如,该子集不应该包括在执行经过训练的机器学习模型162时未被访问的那些文件。用于导出经过精简的机器学习框架的方法500是关于图5描述的。

封装的执行环境还可以包括临时存储160。临时存储可以是临时目录,例如“/tmp”目录,或用于临时存储数据的磁盘分区。临时存储160可以是持久性存储而不是易失性存储,例如,可以是磁盘存储而不是内存。临时存储160的容量可以大于包数据存储大小限制。经过训练的机器学习模型162可以被存储在临时存储160中,例如,通过计算机程序152。

计算机程序152可以在封装的执行环境140内的执行主机130上执行。执行计算机程序可以导致从云存储服务120中获取经过训练的机器学习模型162。可以通过从云存储服务120中检索被存储的经过训练的机器学习模型122来获取经过训练的机器学习模型162,并且其中被存储的经过训练的机器学习模型122被存储为压缩存档或文件,解压缩被存储的经过训练的机器学习模型122以获取经过训练的机器学习模型162。经过训练的机器学习模型162可以以神经网络交换格式表示。神经网络交换格式可以是与几种神经网络框架兼容的表示神经网络的格式。神经网络交换格式的示例是开放式神经网络交换格式(ONNX)和神经网络交换格式(NNEF)。或者,经过训练的机器学习模型162可以以特定机器学习框架的格式表示。

计算机程序152可以导致经过训练的机器学习模型162被加载到临时存储160中。虽然临时存储160可以具有存储经过训练的机器学习模型162的容量,但经过训练的机器学习模型162的数据存储大小,以及在某些情况下,被存储的经过训练的机器学习模型122的大小可以超过包数据存储大小限制。在其他情况下,经过训练的机器学习模型162和/或被存储的经过训练的机器学习模型122的数据存储大小不应该超过包数据存储大小限制,但其数据存储大小与包内容150的数据存储大小相结合将超过包数据存储大小限制。

计算机程序可以导致经过训练的机器学习模型162被应用,即被运行或被执行。可以使用机器学习框架154来应用经过训练的机器学习模型。可以使用与机器学习框架154不同的机器学习框架来训练经过训练的机器学习模型162,即,可以使用与运行经过训练的机器学习模型的机器学习框架不同的机器学习框架来训练经过训练的机器学习模型。该不同的机器学习框架可以具有比机器学习框架154更大的数据存储大小。使用机器学习框架154而不是训练经过训练的机器学习模型162的机器学习框架的经过训练的机器学习模型162的应用可以通过使用用于经过训练的机器学习模型162的神经网络交换格式来被促进。

机器学习框架154可以是生产机器学习框架,即适用于执行机器学习模型的机器学习框架,而不同的机器学习框架可以是开发机器学习框架,即适用于训练机器学习模型的机器学习框架。比起开发机器学习框架,生产机器学习框架可以使用较少的计算资源,例如CPU、GPU和/或内存。在本领域中,一些生产机器学习框架可以被称为“机器学习运行时”。术语“生产机器学习框架”应该被解释为包括此类“机器学习运行时”。开发机器学习框架可以提供促进训练的功能,例如调试功能和优化功能,并且可以提供各种附加功能,这些附加功能在生产中不被经过训练的机器学习模型162使用,但是对于训练期间的实验是有用的。

应用经过训练的机器学习模型可以导致基于一个或多个向量输入导出一个或多个向量输出。一个或多个向量输入可以通过查询非关系型数据库170来获取。一个或多个向量输入可以是响应于查询而由非关系型数据库170返回的一个或多个向量。经过训练的机器学习模型162可以处理一个或多个向量输入以导出一个或多个向量输出。

非关系型数据库170可以是任何合适的非关系型数据库。非关系型数据库可以是NoSQL数据库。非关系型数据库的类型的示例包括键值存储、面向文档的数据库和列式数据库。非关系型数据库170可以是作为云服务被提供的非关系型数据库,或者可以是被使用特定的软件服务并被托管在由云计算供应商提供的一个或多个本地计算设备或一个或多个计算设备(和/或虚拟机器)的非关系型数据库。作为云服务被提供的非关系型数据库的示例包括亚马逊DynamoDB、亚马逊Redshift、亚马逊DocumentDB和Azure Cosmos DB。被使用特定的软件服务的非关系型数据库的示例包括Apache Cassandra、CouchDB和MongoDB。使用非关系型数据库代替关系型数据库可以具有减少查询数据的时间的优点。被查询数据可以用作经过训练的机器学习模型162的一个或多个向量输入。在执行主机130是提供无服务器计算服务的云计算服务的执行主机的情况下,计算机程序152和由此导致的处理可以运行的时间可以是有限的。非关系型数据库查询数据的减少的时间可以促进使用基于此类时间限制内的被查询数据的一个或多个向量输入的经过训练的机器学习模型162。

非关系型数据库170包括使用分区键174被分区并使用排序键176被排序的存储数据172。非关系型数据库170的存储数据172可以基于分区键174跨数据库的多个分区分布。使用适当的分区键174可以通过跨分区传播读/写负载来促进瓶颈和节流的防止。例如,分区键174可以是实体标识符,并且通过散列分区键174,这些实体可以跨分区适当地分布,使得读/写负载跨这些分区适当地分布。排序键176可用于索引存储数据172。排序键176还可用于对存储数据172进行排序。使用排序键176对存储数据172进行索引可以促进对使用排序键的数据条目的快速查询并且还可以促进对具有相似排序键的条目组的快速访问。例如,通常可以使用所述事件发生的时间来查询与因为给定实体发生的事件相关的数据条目。与在相似时间发生的事件相关的数据条目通常可以也被一起访问。使用递增的整数时间戳作为排序键176可以促进对使用时间的事件的快速查询并且可以促进对相似时间发生的事件的条目组的快速访问。递增的整数时间戳的一个示例是Unix时间戳。Unix时间戳也被称为POSIX时间戳和Unix Epoch time。Unix时间戳使用自1970年1月1日00:00:00以来经过的秒数(不包括闰秒)描述时间点。

经过训练的机器学习模型的应用方法

图2是示出用于应用经过训练的机器学习模型的示例方法200的流程图。方法200可以通过使用一个或多个计算设备的一个或多个处理器执行计算机可读指令来执行。例如,该方法可以由提供无服务器计算服务的云计算服务的一个或多个执行主机来执行。无服务器计算服务可以提供功能即服务,并且方法200可以作为“功能”被执行。

在步骤210中,从云存储服务中获取经过训练的机器学习模型。在使用云存储服务将经过训练的机器学习模型存储为压缩存档或文件的情况下,获取经过训练的机器学习模型可以包括解压缩存档或文件。经过训练的机器学习模型可以用神经网络交换格式表示。神经网络交换格式可以是与几种神经网络框架兼容的表示神经网络的格式。神经网络交换格式的示例是开放式神经网络交换格式(ONNX)和神经网络交换格式(NNEF)。或者,经过训练的机器学习模型可以以特定机器学习框架的格式表示。

在步骤220中,将经过训练的机器学习模型加载到封装的执行环境的临时存储中。虽然临时存储可以具有被存储的经过训练的机器学习模型的容量,但经过训练的机器学习模型的数据存储大小可以超过包数据存储大小限制。包数据存储大小限制限制包的内容的数据存储大小,其中包包括导致本方法被执行的计算机程序。在其他情况下,经过训练的机器学习模型的数据存储大小不应该超过包数据存储大小限制,但其数据存储大小与包内容150的数据存储大小相结合将超过包数据存储大小限制。加载经过训练的机器学习模型的临时存储可以是临时目录,例如“/tmp”目录,或用于临时存储数据的磁盘分区。临时存储可以是持久存储而不是易失性存储,例如磁盘存储而不是内存。

在步骤230中,可应用经过训练的机器学习模型以基于一个或多个向量输入导出一个或多个向量输出。应用经过训练的机器学习模型也可以被称为运行或执行经过训练的机器学习模型。可以使用机器学习框架来应用经过训练的机器学习模型,例如PyTorch、ONNX Runtime、Caffe2、TensorFlow或MxNet。可以使用与训练经过训练的机器学习模型的机器学习框架不同的机器学习框架来应用经过训练的机器学习模型。用于应用经过训练的机器学习模型的机器学习框架可以是完整机器学习框架,也可以是经过精简的机器学习框架。关于图5描述了用于导出经过精简的机器学习框架的方法500。步骤230可以包括子步骤232和子步骤234。

在子步骤232中,可以通过查询非关系型数据库来获取一个或多个向量输入。被查询的非关系型数据库可以是任何合适的非关系型数据库。非关系型数据库,或至少其中的某些类型,也被称为NoSQL数据库。非关系型数据库的类型的示例包括键值存储、面向文档的数据库和列式数据库。被查询的非关系型数据库170可以是作为云服务被提供的非关系型数据库,或者可以是被使用特定的软件服务并被托管在由云计算供应商提供的一个或多个本地计算设备或一个或多个计算设备(和/或虚拟机器)的非关系型数据库。作为云服务被提供的非关系型数据库的示例包括亚马逊DynamoDB、亚马逊Redshift、亚马逊DocumentDB、Azure Cosmos DB和亚马逊Document DB。被使用特定的软件服务的非关系型数据库的示例包括Apache Cassandra、CouchDB和MongoDB。使用非关系型数据库代替关系型数据库可以具有减少查询数据的时间的优点。可以通过使用适当的分区键和/或排序键来促进或增强查询时间的减少,如关于非关系型数据库160所描述的。查询时间的减少可以减少用于执行方法200的时间。用于执行方法200的时间的减少可以促进方法200作为FaaS“功能”由无服务器计算服务的执行主机执行。

在子步骤234中,根据经过训练的机器学习模型处理一个或多个向量输入以导出一个或多个向量输出。用经过训练的机器学习模型处理一个或多个向量输入可以包括将一个或多个向量输入输入到机器学习模型。在经过训练的机器学习模型是或包括神经网络的情况下,然后可以使用经过训练的机器学习模型的一个或多个神经网络层来处理一个或多个向量输入以导出一个或多个向量输出。一个或多个向量输出可以是针对一个或多个向量输入的经过训练的机器学习模型的输出。

加载和执行方法

图3是示出用于在封装的执行环境中加载和执行计算机程序的示例方法300的流程图。方法300可以通过使用一个或多个计算设备的一个或多个处理器执行计算机可读指令来执行。例如,方法300可以由提供无服务器计算服务的云计算服务的一个或多个计算设备来执行。

在步骤310中,将包括计算机程序的包的内容加载到封装的执行环境中。包的内容的数据存储大小被限制超过包数据存储大小限制。在封装的执行环境是云计算服务的一部分的情况下,云计算服务可以确定包数据存储大小限制。在包是压缩存档的情况下,加载包的内容可以包括解压缩包。

在步骤320中,包括在包的内容中的计算机程序被执行。在被执行时,计算机程序导致方法200在封装的执行环境中被执行。

机器学习模型框架迁移方法

图4是示出用于在与训练经过训练的机器学习模型的机器学习框架不同的机器学习框架上运行机器学习模型的示例方法400的流程图。方法400可以通过使用一个或多个计算设备的一个或多个处理器执行计算机可读指令来执行。

在步骤410中,使用第一机器学习框架来训练机器学习模型。可以使用训练数据来训练机器学习模型。训练数据可以包括多个训练数据对,其中每个训练数据对包括一个或多个向量输入和一个或多个向量输入的预期向量输出。可以通过,对每个训练数据对,使用机器学习模型处理训练数据对的一个或多个向量输入以导出向量输出,基于向量输出和机器学习中包括的期望向量输出之间的差异计算损失,并基于损失更新机器学习模型的参数以最小化损失,来使用训练数据训练机器学习模型。损失可以是任何合适的损失量度,例如均方误差或交叉熵损失。在机器学习模型是神经网络的情况下,被更新的参数可以是神经网络的权重。参数的更新可以使用梯度下降来计算,梯度使用反向传播计算。第一机器学习框架可以是开发机器学习框架,即适用于训练机器学习模型的机器学习框架。开发机器学习框架可以提供促进训练的功能,例如调试功能和优化功能,并且可以提供各种在生产中,即在训练后执行机器学习模型时,未被使用的附加功能,但是对于训练期间的实验是有用的。可用作开发机器学习框架的机器学习框架的示例包括PyTorch、MxNet和Tensorflow。训练完成后,机器学习模型被认为是经过训练的机器学习模型。

在步骤420中,以神经网络交换格式存储经过训练的机器学习模型。神经网络交换格式可以将机器学习模型表示为计算图。神经网络交换格式可以是与几种神经网络框架兼容的表示神经网络的格式。神经网络交换格式的示例是开放式神经网络交换格式(ONNX)和神经网络交换格式(NNEF)。第一机器学习框架可以原生支持以神经网络交换格式存储或导出经过训练的机器学习模型。在经过训练的机器学习模型框架不原生支持以神经网络交换格式存储或导出经过训练的机器学习模型的情况下,通过使用转换器将经过训练的机器学习模型转换为神经网络交换格式,可以将经过训练的机器学习模型存储为神经网络交换格式。

在步骤430中,使用第二机器学习框架运行经过训练的机器学习模型。第二机器学习框架可以原生支持运行以神经网络交换格式存储的机器学习模型。或者,可以通过使用转换器将神经网络交换格式的经过训练的机器学习模型转换为第二机器学习框架支持的经过训练的机器学习模型的表示;并使用此表示在第二机器学习框架上运行经过训练的机器学习模型,来使用第二机器学习框架运行经过训练的机器学习模型。第二机器学习框架可以是生产机器学习框架。比起开发机器学习框架,生产机器学习框架可以使用较少的计算资源,例如CPU、GPU和/或内存。生产机器学习框架的示例包括ONNX Runtime和Caffe2。在本领域中,一些生产机器学习框架可以被称为“机器学习运行时”。术语“第二机器学习框架”和“生产机器学习框架”应被解释为包括此类“机器学习运行时”。

机器学习框架精简方法

图5是示出用于导出经过精简的机器学习模型的示例方法500的流程图。方法500可以通过使用一个或多个计算设备的一个或多个处理器执行计算机可读指令来执行。

在步骤510中,使用文件系统访问监视器来监视完整机器学习框架的文件。完整机器学习框架可以是任何合适的机器学习框架,例如PyTorch、TensorFlow或ONNX Runtime。机器学习框架的文件可以包括编译的软件库、文本计算机程序代码、文档和/或数据资源。合适的文件系统访问监视器的示例包括fswatch和filemon。

在步骤520中,机器学习模型,例如在此处描述的系统和方法中使用的经过训练的机器学习模型,使用完整机器学习框架被运行。在机器学习模型的运行期间,在步骤510中开始的对机器学习框架的文件的监视继续进行。因此,在运行机器学习模型时,会监视对完整机器学习框架的文件的访问。

在步骤530中,确定在运行机器学习模型时未被访问的机器学习框架的一个或多个文件。未被访问的文件可以基于使用文件系统访问监视器对完整机器学习框架的文件的监视来确定。文件系统访问监视器可以列出或以其他方式提供在运行机器学习模型时被访问的文件。然后可以将完整机器学习框架的文件与文件系统访问监视器提供的文件列表进行比较。未包括在被访问文件列表中的完整机器学习框架的文件可以被确定为未被访问的一个或多个文件。

在步骤540中,从完整机器学习框架中导出经过精简的机器学习框架。经过精简的机器学习框架可以排除未被访问的一个或多个文件中的全部或部分。经过精简的机器学习框架可以通过从完整机器学习框架中删除未被访问的一个或多个文件中的全部或一些来导出。除了未被访问的一个或多个文件中的一些或全部之外,还可以通过复制或打包完整机器学习框架的文件来导出经过精简的机器学习框架。

修改

应当理解,可以对上文描述的实施例进行各种修改。这种修改可以涉及机器学习和/或云计算领域中已知的等效和其他特征,例如在提供FaaS的无服务器计算服务领域中,并且可以替代或补充这里已经描述的特征。一个实施例的特征可以由另一实施例的特征替换或补充。

尽管在本申请中已将权利要求表述为特征的特定组合,但应当理解,本发明公开的范围还包括本文中明确或隐含地公开或其任何概括的任何新颖特征或任何新颖特征组合,无论它是否涉及与任何权利要求中目前要求保护的相同发明,以及它是否减轻了与本发明相同的任何或所有技术问题。申请人特此通知,在本申请或从其衍生的任何进一步申请的审查期间,可以对这些特征和/或这些特征的组合提出新的权利要求。


最新回复(0)