CN110603520A - 将学习模型集成到软件开发系统中 - Google Patents
将学习模型集成到软件开发系统中 Download PDFInfo
- Publication number
- CN110603520A CN110603520A CN201880029892.4A CN201880029892A CN110603520A CN 110603520 A CN110603520 A CN 110603520A CN 201880029892 A CN201880029892 A CN 201880029892A CN 110603520 A CN110603520 A CN 110603520A
- Authority
- CN
- China
- Prior art keywords
- code
- model
- compiled
- transformed
- file
- 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.)
- Granted
Links
- 238000010801 machine learning Methods 0.000 claims abstract description 210
- 230000006870 function Effects 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims description 55
- 238000005516 engineering process Methods 0.000 abstract description 21
- 230000008569 process Effects 0.000 description 40
- 230000018109 developmental process Effects 0.000 description 26
- 238000012545 processing Methods 0.000 description 22
- 238000011161 development Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 108091029480 NONCODE Proteins 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 241000258963 Diplopoda Species 0.000 description 1
- 101100314299 Listeria innocua serovar 6a (strain ATCC BAA-680 / CLIP 11262) tpi-2 gene Proteins 0.000 description 1
- 101150032817 TPI1 gene Proteins 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本主题技术提供从机器学习(ML)文档文件生成ML模型代码,ML文档文件为第一数据格式,ML文档文件被转换为不同于第一数据格式的面向对象的编程语言的代码。本主题技术进一步提供接收调用由ML模型代码提供的函数的附加代码。本主题技术编译ML模型代码和附加代码,编译的ML模型代码包括对应于编译的ML模型代码的目标代码并且编译的附加代码包括对应于附加代码的目标代码。本主题技术生成包括编译的ML模型代码和编译的附加代码的包。另外,本主题技术将包发送到目标设备上的运行环境以供执行。
Description
相关申请的交叉引用
本申请要求于2017年6月3日提交的标题为“INTEGRATION OF LEARNING MODELSINTO A SOFTWARE DEVELOPMENT SYSTEM”的美国临时专利申请号62/514,780的权益,该专利据此全文以引用方式并入本文,并且出于所有目的作为本美国实用专利申请的一部分。
技术领域
本说明书整体涉及将学习模型集成到软件开发系统中,包括在集成开发环境中的机器学习模型的变换和呈现。
背景技术
软件开发环境可用于在不同计算平台上以给定编程语言创建软件程序。
附图说明
本主题技术的一些特征在所附权利要求书中被示出。然而,出于解释的目的,在以下附图中阐述了本主题技术的若干实施方案。
图1示出了根据一个或多个具体实施的示例网络环境,其中可以实现用于将学习模型集成到软件开发系统中的系统。
图2示出了根据一个或多个具体实施的用于集成开发环境的示例软件架构,该集成开发环境将机器学习(ML)模型与面向对象的代码集成。
图3示出了根据一个或多个具体实施的用于将现有ML模型变换为模型规范的示例过程的流程图。
图4示出了根据一个或多个具体实施的用于提供变换的ML模型以供在软件开发环境中查看的示例过程的流程图。
图5示出了根据一个或多个具体实施的用于将编译的ML模型发送到目标设备的运行环境的示例过程。
图6示出了根据一个或多个具体实施的用于现有ML模型和变换的ML模型的数据的示例结构。
图7示出了可以利用其实现本主题技术的一个或多个具体实施的电子系统。
具体实施方式
下面示出的具体实施方式旨在作为本主题技术的各种配置的描述并且不旨在表示本主题技术可被实践的唯一配置。附图被并入本文并且构成具体实施方式的一部分。具体实施方式包括具体的细节旨在提供对本主题技术的透彻理解。然而,本主题技术不限于本文阐述的具体细节,而是可以采用一个或多个其他具体实施来实践。在一个或多个具体实施中,以框图形式示出了结构和部件,以便避免使本主题技术的概念模糊。
使软件开发者能够在软件开发环境中利用机器学习模型的现有方法可能需要大量配置。在一些情况下,开发机器学习模型需要设置附加的软件库、硬件配置等,这可能会为某些软件开发者创建进入的感知障碍。此外,许多软件开发者都精通从事面向对象编程的范例,这些范例集成在许多用于开发软件的现有工具中。相比之下,机器学习领域的最新发展已经产生了由不同的第三方提供的软件库,这些软件库被设计为在独立或单独的开发环境中工作,并且可要求软件开发者采用不同的方法来开发有时非常广泛地离开许多开发人员习惯的面向对象编程的理解概念的机器学习模型。
在本文所述的一个或多个具体实施中,机器学习(ML)模型可以以类似于第一类对象诸如函数、分类等等的内部表示的方式在集成软件开发环境(IDE)内内部地表示,而不是仅仅被表示为正在构建的程序的不透明资源。然后,使用此类模型的软件开发者可以利用IDE的生产力特征,诸如键入时的语法检查、自动完成、参数列表中的名称或类型错误检测等,以便调用ML模型功能,就像开发人员在使用标准系统库或分类时一样。实现这一目标的机制包括具有用于描述ML模型、从模型创建派生数据,然后用于索引模型中的名称和关键字,以及IDE使用这些索引名称和关键字来提供上述改进的功能的标准规范。
图1示出了根据一个或多个具体实施的示例性网络环境100,其中可以实现用于将学习模型集成到软件开发系统中的系统。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件、或更少的部件。
网络环境100包括电子设备110、电子设备115和服务器120。网络106可以通信地(直接地或间接地)耦接电子设备110和/或服务器120。在一个或多个具体实施中,网络106可以是可包括互联网或可通信地耦接到互联网的设备的互连网络。出于解释的目的,网络环境100在图1中示出为包括电子设备110和115以及服务器120;然而,网络环境100可以包括任何数量的电子设备和任何数量的服务器,诸如服务器云。
电子设备110可以是(例如)台式计算机、便携式计算设备,诸如膝上型计算机、智能电话、外围设备(例如,数字相机、耳机)、平板设备、可穿戴设备(诸如手表、腕带等),或者包括例如一个或多个无线接口的任何其他适当设备,诸如WLAN无线电设备、蜂窝无线电设备、蓝牙无线电设备、Zigbee无线电设备、近场通信(NFC)无线电设备和/或其他无线电设备。在图1中,通过举例的方式,电子设备110被描绘为台式计算机。电子设备110可以是和/或可以包括下文相对于图7论述的电子系统的全部或部分。
电子设备115可包括触摸屏并且可为例如便携式计算设备,诸如包括触摸屏的膝上型计算机、包括触摸屏的智能电话、包括触摸屏的外围设备(例如,数字相机、耳机)、包括触摸屏的平板设备、包括触摸屏的可穿戴设备(例如,手表、腕带等)、包括例如触摸屏的任何其他适当设备或者任何具有触控板的电子设备。在一个或多个具体实施中,电子设备115可不包括触摸屏,但可支持触摸屏类似的手势,诸如在虚拟现实环境或增强现实环境中。在一个或多个具体实施中,电子设备115可包括触控板。在图1中,通过举例的方式,电子设备115被描绘为具有触摸屏的移动设备。在一个或多个具体实施中,电子设备115可以是和/或可以包括下文相对于下文相对于图7所讨论的电子系统所讨论的电子设备的全部或一部分。
在一个或多个具体实施中,电子设备110可以提供软件开发环境,诸如计算机程序,软件开发者可以使用该软件开发环境来创建编译的(例如,可执行的)代码、调试、维护或以其他方式支持计算机程序和应用程序。例如,使用编译的代码,软件开发环境可在服务器120的帮助下创建用于在目标设备上部署的软件包。
在一个或多个具体实施中,服务器120将编译的代码部署到目标设备以供执行。在示例中,电子设备115可以是用于在电子设备115的运行环境中接收编译的代码并执行编译的代码的目标设备。又如,服务器120(和/或另一服务器)可以提供web服务并且可执行与编译的代码相关联的操作,诸如复杂的处理操作。
图2示出了根据一个或多个具体实施的用于集成开发环境200的示例软件架构,该集成开发环境200将机器学习模型与面向对象的代码集成在一起。出于说明的目的,集成开发环境(IDE)200被描述为由图1的电子设备110提供,诸如通过电子设备110的处理器和/或存储器;然而,IDE 200可以由任何其他电子设备实现。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件、或更少的部件。
IDE 200可以是多平台软件开发环境,诸如,例如,集成开发环境等,其提供软件开发者可用于创建、运行和调试计算机程序代码的特征。在一个或多个具体实施中,IDE 200在电子设备110上的过程中执行,诸如运行操作系统(例如Mac OS XTM等)的台式计算机。
在一个或多个具体实施中,IDE 200提供可在电子设备110的显示器上呈现的用户界面280。用户界面280可在编辑器中显示代码列表282,诸如正在开发的程序的源代码。源代码可以是面向对象的编程语言的计算机程序代码指令,诸如Swift、Objective C、C++、Python、Java等。用户界面280还提供项目导航器284,其可以在创建新的软件开发项目时显示。项目导航器284使用户能够管理项目中的文件和/或选择要在提供代码列表282的编辑器中查看或编辑的文件。用户界面280还提供搜索界面286,用于搜索代码列表282中的术语、项目中的文件和/或其他资产等。
IDE 200进一步包括存储装置210,其存储机器学习(ML)模型212和相关联的ML数据(例如,ML模型的数据集)、源代码文件214和/或与存储器中的IDE 200的软件开发项目相关的其他数据。机器学习模型可以包括根据诸如TensorFlow、Keras、Caffe等的机器学习软件库以格式或语法表示的数据,其可以不被IDE 200支持。示例机器学习模型可以应用机器学习技术,诸如自动化过程以从数据中提取模式、自动识别描述性特征与数据集中的目标特征(例如,预测模型)之间的关系的算法、深度神经网络、指定某些输入所属的类别(例如,分类器)等的分类器。本文考虑了其他类型的机器学习模型,并且前述示例对于主题技术是非限制性的。此外,机器学习模型可以与(例如,在存储库中提供或从网页下载)源代码使用示例、以诸如JAVA或.NET的语言编写的教程或参考实现或者IDE 200可能不支持或仅支持某些部署方案的API相关联。
为了集成现有机器学习模型(例如,ML模型212),IDE200可以包括机器学习(ML)模型变换器215,其包括规范转换器220和面向对象编程(OOP)代码生成器240。下面进一步描述这些部件中的每一个。下面在图2中进一步描述变换现有ML模型的示例过程。尽管ML模型变换器215被示为IDE 200的一部分,但是在一些具体实施中,ML模型变换器215可以作为与IDE 200分开的过程来执行。此外,尽管关于OOP代码生成器240和本文的其他部件提到了面向对象的编程,但是应当理解,本主题技术可以预期其他类型的编程语言,并且本文使用面向对象的编程语言来进行解释。具体地讲,可以关于IDE 200的部件使用任何编程语言,并且仍然在本主题技术的范围内。
如图所示,IDE 200还提供规范转换器220。在示例中,规范转换器220可以从存储装置210接收ML模型212。规范转换器220确定和/或验证第一格式(例如,Keras、TensorFlow、Caffe等)的现有ML模型是否包括符合由IDE 200支持或与IDE 200兼容的特定模型规范(例如,由第三方供应商或其他实体提供的模型规范)的足够的数据。示例模型规范可以定义参数、数据格式、数据类型和/或处理或硬件要求,用于将给定的机器学习模型转换成适合于利用IDE 200提供的特征的代码格式,包括例如,键入时的语法检查、自动完成、参数列表中的名称或类型错误检测等。规范转换器220将ML模型212变换为变换的ML模型235,其为与IDE 200支持的特定模型规范(例如,变换的ML模型)兼容的格式。在具体实施中,规范转换器220可利用序列化格式(例如“ProtoBuf”或协议缓冲器)以将变换的ML模型235存储在特定模型规范的数据模式中。
OOP代码生成器240为变换的ML模型生成代码接口。代码接口可以指代特定编程语言的代码语句,其描述使用变换的ML模型所需的函数和/或数据类型。在示例中,使用变换的ML模型的函数可接受一个或多个数据类型(例如,作为函数的输入变量)。因此,在示例中,变换的ML模型的代码接口提供与当前项目中使用的特定编程语言兼容的函数和数据类型。在示例中,OOP代码生成器240确定特定编程语言及其API中的数据类型,API可访问与变换的模型相关联的现有ML数据。在示例中,OOP代码生成器240创建thunk(例如,子例程),其有助于经由以特定编程语言支持的特定数据类型访问现有ML数据的值。具有关于为变换的ML模型生成代码接口和其他代码的更多细节的示例过程在图3中描述,其中编程语言及其API支持多种类型,其对应于现有的ML数据类型,其中可以基于熟练程序员的适当性或熟悉程度来选择所选的特定类型。
在具体实施中,OOP代码生成器240可执行以下操作。对于模型使用的每种类型Tm,选择编程语言及其API中可用的类型Tpn。在多种类型Tp可用的情况下,选择“最佳”类型,使得最常用的类型是不错的选择,编程语言中的一者应该优于仅在API中的一者。对于模型使用的每个函数Fm,它将一组Types Tmi1、Tmi2的值作为输入,并作为输出返回一组ValuesTmv1、Tmv2等—生成将对应类型Tpi1、Tpi2 Tpi2、Tpv1、Tpv2作为输入的函数。在函数内部,生成将每种模型类型转换为语言类型或从语言类型转换的代码,这可能很简单,也可能需要多个步骤。这样生成的代码称为thunk。
在一个或多个具体实施中,还从ML模型生成附加的基于非代码的有效载荷(例如,“编译的ML模型”)并将其传送到发送到目标设备的包中。包可以包括生成的代码接口和生成的代码的编译表示,并且包括该编译的ML模型(例如,基于非代码的有效载荷)。这种基于非代码的有效载荷不同于上面讨论的生成的代码接口和代码的编译表示。在示例中,在这方面编译的ML模型包括训练的权重和其他信息,这些信息在目标设备上是有用的,并且由于以下原因,没有以适当的形式与上面讨论的生成的代码一起提供:1)源代码不能很好地保存大量数据(阻抗、空间、速度);以及2)尽管用户非常容易访问,但源代码类型通常不像机器(例如,软件)的数据类型那样容易内省—因此希望推断该模型的其他部件可能更喜欢访问该数据(例如,确定用户想要的图像的大小)。
OOP代码生成器240还可以确定编译和/或执行变换的ML模型可能需要哪些(如果有的话)其他现有软件库(例如,存储在存储装置210上),诸如为执行GPU上的指令提供支持的图形处理单元(GPU)库。在图6中更详细地描述了与变换的ML模型相关联的数据的示例结构。
另外,在示例中,可以使用项目导航器284在UI 280中查看生成的代码接口。用于查看所生成的代码接口的示例过程在图4中更详细地讨论。
OOP语言编译器260编译生成的代码接口并为代码接口生成目标代码。
如进一步所示,作为构建可执行应用程序的一部分,链接器/封装器
270组合一个或多个目标文件(例如,来自OOP语言编译器260),以及在一些实例中,来自现有软件库(例如,用于机器学习的GPU库)的代码,将上述目标代码和/或库代码变换为可由电子设备110执行的可执行机器代码。链接器/封装器270的封装器部分将可执行代码读到存储器中并运行导致运行应用程序的代码。又如,链接器/封装器270可以将可执行代码发送到目标电子设备以进行部署。用于将完全编译的ML模型发送到目标设备的运行环境的示例过程在图5中更详细地讨论。
IDE 200进一步包括预处理部件,其为变换的ML模型提供不同的特征。如图所示,自动代码文档部件252执行预处理以实现与用户输入的代码和/或项目中的现有代码对应的实时文档。在示例中,自动代码文档部件252提供关于ML模型代码的各方面的信息,并提供关于模型的附加细节,诸如给定函数的描述、函数的参数列表、与由函数抛出的错误(如果有的话)相关的信息、函数的任何返回值,以及代码的任何注释。当用户在IDE 200的编辑器中正向代码列表282键入时,代码完成部件254提供代码的自动完成建议。索引器提供用于由搜索界面286进行搜索的ML模型代码的索引。用于上述预处理部件的任何数据(例如,搜索索引、文档、自动完成建议等)可以存储在数据库258中。
图3示出了根据一个或多个具体实施的用于将现有ML模型变换为模型规范的示例过程300的流程图。出于解释的目的,本文主要参考图2的IDE 200的各种部件来描述过程300,该过程可由图1的电子设备110的一个或多个处理器执行。然而,过程300不限于电子设备110和/或IDE 200,并且过程300的一个或多个框(或操作)可以由其他合适的设备和/或软件开发环境的一个或多个其他部件来执行。进一步出于解释的目的,过程300的框在本文中被描述为顺序地或线性地发生。然而,过程300的多个框可并行发生。此外,过程300的框不必按所示顺序执行,并且/或者过程300的一个或多个框不必执行和/或可由其他操作替代。
IDE 200的ML模型变换器215确定第一格式(例如,Keras、TensorFlow等)的机器学习(ML)模型包括符合第二格式的特定模型规范的足够的数据(302)。在示例中,第二格式对应于面向对象的编程语言(例如,Swift、Objective C等)。具体地讲,规范转换器220可确定现有模型是否缺少转换所需的数据/对象,并且确定现有模型是否整体无效和/或不一致(例如,不正确的数据、由该模型执行的一个或多个操作与所声称的目标或结果不一致等)。在ML模型包括不充分数据或无效的情况下,ML模型变换器215可提供错误声明并放弃对ML模型的进一步处理。
规范转换器220还可以对现有模型内部的数据执行附加变换,以更好地适应用户开发环境中的现有库。(例如,其中现有模型为TensorFlow格式,然后将模型数据变换为基于用户开发环境中现有库的格式)。
在确定ML模型包括足够数据之后,规范转换器220将ML模型变换为特定模型规范并提供因此与特定模型规范兼容的变换的ML模型(304)。在示例中,变换ML模型可以包括在ML模型中映射ML操作(例如,对应于由表示ML模型的图的节点执行的操作)以匹配可以由模型规范定义的对应操作。在处于这种兼容格式之后,IDE 200可以进一步处理变换的ML模型并提供如上面图1中所描述的附加功能。
规范转换器220标记变换的ML模型以指示ML模型已被变换为特定模型规范(306)。例如,标记包括将标识符分配给变换的ML模型,以便IDE 200可以引用变换的ML模型。
OOP代码生成器240为变换的ML模型生成代码接口和代码(308)。代码接口包括面向对象的编程语言的代码语句,其中代码语句对应于表示变换的ML模型的对象。生成的代码也可以对应于对象。例如,该对象可以包括用于执行变换的ML模型的操作的一个或多个函数的代码,其中每个函数可以包括映射到由变换的ML模型使用的数据和/或数据类型的输入数据类型。对应于变换模型的对象、代码和代码接口可以在IDE 200的用户界面280中呈现(例如,在代码列表282和/或项目导航器284中)。
在一个或多个具体实施中,OOP代码生成器240执行操作以生成用于变换的ML模型的代码。例如,OOP代码生成器240确定现有ML模型使用的输入数据格式(例如,具有浮点值的3-D矩阵,其在存储器中串行编码),并确定变换的模型的目标数据格式(例如,NSArrays、数组的Swift数组或新的自定义N维矩阵)。OOP代码生成器240确定现有ML模型的硬件/处理要求(例如,现有模型是在GPU、CPU上还是通过云运行)并生成在GPU、CPU和/或云上运行的代码等。此外,OOP代码生成器240获取ML模型中的机器学习原语(例如,实体、属性、矩阵和矩阵处理步骤),并生成符合特定规范的数据对象。另外,OOP代码生成器240将函数调用映射到输入数据类型(例如,输入向量、矩阵或ML模型所需的任何内容)。OOP代码生成器240以面向对象的编程语言生成函数。
软件开发者可以编辑来自OOP代码生成器240的生成的代码。例如,软件开发者可查看生成的函数并确定是否需要进行其他编辑。根据在IDE 200中处理的当前项目,软件开发者可以决定以当前项目的给定OOP编程语言(例如,Objective C、Swift等)编写的附加代码需要满足当前项目的目标中的一者。例如,当前项目可以对应于通过利用给定的ML模型来预测特定地理区域的住宅价格。可以为ML模型生成对应于预测房屋价格的函数,其中软件开发者决定需要修改和/或附加代码(例如,调整价格计算、使用ML模型未提供的附加数据等)。然后,软件开发者可以通过编辑该函数和/或创建调用该函数的新代码来利用IDE200的功能,同时有利地获取键入时的实时语法检查、自动完成、检测参数列表中的名称或类型错误等有益效果。
在由软件开发者生成和/或代码修改或添加ML模型的代码之后,OOP语言编译器260编译生成的代码和/或包括由与变换的机器学习模型对应的软件开发者提供的任何代码修改或添加(310)。编译变换的机器学习模型包括生成面向对象的编程语言的目标代码。OOP语言编译器260还将代码接口编译到变换的ML模型(例如,以在表示ML模型的对象上强制执行某些属性)。可以通过编译生成的代码和代码接口来生成各个目标代码。此外,由软件开发者提供的任何代码修改或添加(例如,调用所生成的函数的代码)被编译以生成相应的目标代码。
在示例中,链接器/封装器270组合与ML模型和/或由软件开发者修改或添加的代码对应的所有目标代码,并将目标代码变换为可执行的机器代码(用于目标计算设备)。可执行机器代码可以是软件包的形式,该软件包可以部署到目标计算设备以便在目标计算设备的运行环境中执行。在示例中,链接器/封装器270可以将包括编译的代码的包发送到目标设备的运行环境(312)。在图5中讨论了将用于执行的编译的ML模型部署在目标设备上的另一示例。
图4示出了根据一个或多个具体实施的用于提供变换的ML模型以便在软件开发环境(例如,IDE 200)中查看的示例过程400的流程图。出于解释的目的,本文主要参考图2的IDE 200的部件来描述过程400,该过程可由图1的电子设备110的一个或多个处理器执行。然而,过程400不限于电子设备110和/或IDE 200,并且过程400的一个或多个框(或操作)可以由其他合适的设备和/或软件开发环境的一个或多个其他部件来执行。进一步出于解释的目的,过程400的框在本文中被描述为顺序地或线性地发生。然而,过程400的多个框可并行发生。此外,过程400的框不必按所示顺序执行,并且/或者过程400的一个或多个框不必执行和/或可由其他操作替代。
IDE 200接收变换的模型文件(402)。在示例中,在用户拖动文件并将文件放入IDE200的用户界面280之后,在IDE 200中接收变换的模型文件。变换的模型文件可以如上所述通过参考图3所描述的操作来提供,并且本文假定符合IDE 200支持的特定模型规范。在示例中,变换的模型文件可以包括指示模型文件对应于特定模型规范的标签(例如,标识符)。响应于拖动的文件,IDE 200可以创建与变换的模型文件对应的新项目,或者如果当前项目已经打开,则将变换的模型文件添加到该当前项目。
如前所述,软件开发者可查看和/或编辑与变换的模型文件对应的代码。例如,软件开发者可查看与变换的模型文件相关联的函数,并确定是否需要附加的编辑。更具体地讲,软件开发者可以决定以当前项目的给定OOP编程语言(例如,Objective C、Swift等)编写的附加代码需要满足当前项目的目标中的一者。例如,当前项目可以对应于通过利用给定的ML模型来预测特定地理区域的住宅价格。可以生成对应于预测房屋价格的函数,其中软件开发者决定需要修改和/或附加代码(例如,调整价格计算、使用ML模型未提供的附加数据等)。然后,软件开发者可以通过编辑该函数和/或创建调用该函数的新代码来利用IDE200的功能,同时有利地获取键入时的实时语法检查、自动完成、检测参数列表中的名称或类型错误等有益效果。
IDE 200提供变换的模型文件的图形视图(404)。例如,用户界面280在IDE 200中将模型显示为对象(例如,对应于面向对象的编程语言),并且IDE 200可以提供关于对象的属性的信息和/或访问与IDE 200的预处理部件(索引器256、代码完成部件254和/或自动代码文档部件252)相关联的数据库258中的数据。又如,用户界面280的项目导航器284提供具有不同属性的对象的分层视图和/或提供相关联文件的列表(例如,支持来自软件库的文件)或其他相关文件/资产(例如,图像、视频、文本等)。因此,用户可查看项目导航器284中的对象并与之交互,并利用IDE 200提供的功能(例如,查看和/或编辑与变换的模型文件对应的代码)。此外,用户可以向当前项目添加其他文件和/或资产。
IDE 200提供与变换的模型文件相关联的代码列表(406)。例如,用户界面280提供IDE 200的代码列表282中的代码列表。这样,用户可查看和/或编辑与变换的模型文件相关联的代码,并且有利地访问由IDE 200提供的功能,诸如类型检查、检测编码错误、调试代码、代码完成、语法突出显示,以及提供代码列表282中的代码的其他上下文相关的信息。
在一个或多个具体实施中,IDE 200可以将编译的ML模型部署到一个或不同的目标设备以供执行。编译的ML模型可以包括在能够在给定目标计算设备上部署和执行的软件包中。当在IDE 200中处理项目时,可以选择一个或多个目标设备用于在目标平台上进行编译和/或部署。IDE 200可生成用于部署到此类目标设备的变换的ML模型的不同变体,其可以针对给定平台的特定硬件和/或软件功能进行优化。在示例中,IDE 200可以将编译的ML模型发送到服务器120,服务器120然后可将编译的模型提供给目标设备。
图5示出了根据一个或多个具体实施的用于将编译的ML模型发送到目标设备(例如,图1中的电子设备115)的运行环境的示例过程500。出于解释的目的,本文主要参考图2的IDE 200的部件来描述过程500,其可以由图1的电子设备110执行。然而,过程500不限于电子设备110和/或IDE 200,并且过程500的一个或多个框(或操作)可以由其他合适的设备和/或软件开发环境的一个或多个其他部件来执行。进一步出于解释的目的,过程500的框在本文中被描述为顺序地或线性地发生。然而,过程500的多个框可并行发生。此外,过程500的框不必按所示顺序执行,并且/或者过程500的一个或多个框不必执行和/或可由其他操作替代。
OOP代码生成器240从ML文档文件和/或其他资产生成ML模型代码(502)。在示例中,可以如上参考图3所描述的那样执行构建ML模型代码。在该示例中,生成ML模型利用实现文件(例如,.m文件)或源代码(例如,Swift或Objective C源代码)和/或对应于ML模型的数据和/或其他代码。
软件开发者可查看和/或编辑与ML模型对应的源代码。例如,软件开发者可查看与ML模型相关联的函数,并确定是否需要附加编辑。更具体地讲,软件开发者可以决定以当前项目的给定OOP编程语言(例如,Objective C、Swift等)编写的附加代码需要满足当前项目的目标中的一者。例如,当前项目可以对应于通过利用给定的ML模型来预测特定地理区域的住宅价格。可以生成对应于预测房屋价格的函数,其中软件开发者决定需要修改和/或附加代码(例如,调整价格计算、使用ML模型未提供的附加数据等)。然后,软件开发者可以通过编辑该函数和/或创建调用该函数的新代码来利用IDE 200的功能,同时有利地获取键入时的实时语法检查、自动完成、检测参数列表中的名称或类型错误等有益效果。
OOP语言编译器260从ML模型代码生成编译的ML模型代码(504)和/或OOP语言编译器260生成由软件开发者提供的任何附加代码(例如,以调用与ML模型提供的操作对应的函数)。在示例中,OOP语言编译器260提供编译的目标代码(例如,.o文件)和/或二进制文件(例如,可执行的机器代码)。
链接器/封装器270将包括编译的ML模型和/或由软件开发者提供的任何附加代码的包发送到目标设备(或用户的桌面)上的运行环境以供执行(506)。在示例中,可以对应于相应的目标设备(例如,智能手机、可穿戴设备、流媒体设备等)发送不同的变体。又如,链接器/封装器270可以将编译的ML模型发送到归档或包中,然后将其发送到云(例如,应用商店或应用服务器、云计算服务等)以进行部署和/或执行。ML模型可以包括关于将为其构建模型的设备类型的信息(例如,目标运行环境)。又如,用户可以在IDE 200中选择目标设备,使得OOP语言编译器260和/或链接器/封装器270可进一步优化编译的ML模型。例如,当目标设备上存在此类GPU时,OOP语言编译器260可优化代码的编译以使用目标设备的GPU。又如,OOP语言编译器260可优化用于在云计算服务上执行的编译,云计算服务可以利用网络(例如,网络106)中提供的服务器(例如,服务器120)来提供用于部署和执行编译的代码的服务。
图6示出了根据一个或多个具体实施的现有ML模型610和变换的ML模型630的数据的示例结构。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件、或更少的部件。
如上面图1-4中所示,可以将现有ML模型变换为符合特定模型规范的变换的模型。如图所示,ML模型610表示与特定模型规范不同格式的现有模型。ML模型610包括ML原语612、ML数据的ML数据格式614(例如,ML数据集用于训练、验证、测试等目的),以及一组硬件和/或处理要求616。ML原语612可以包括由ML模型610使用的诸如实体、属性、矩阵和矩阵处理步骤的原语。ML数据格式614可以指示ML数据是在存储器中串行编码的格式,或者一些其他数据格式等。该组硬件和/或处理要求616可以包括指示ML模型610需要使用GPU和/或CPU和/或云计算服务用于特定操作的信息。
变换的ML模型630包括代码接口640。代码接口640包括函数642、thunk 644和数据类型646。函数642可以包括将函数调用映射到输入数据类型的信息(例如,输入矢量、矩阵或ML模型610所需的任何内容)。数据类型646(例如,NSArrays、数组的数组,诸如数组的Swift数组,或者新定义的N维矩阵)可以对应于ML数据格式614,并且使得变换的ML模型630能够访问ML数据格式614中的ML数据。为了有助于访问此类ML数据,thunk 644为所使用的函数642提供子例程。变换的ML模型630进一步包括编译的ML模型代码650,其可以是与目标设备对应的目标代码格式。任选地,变换的ML模型630包括一个或多个所需的软件库660,这取决于ML模型610的该组硬件和/或处理要求616(例如,GPU处理、云计算等)。
图7示出了电子系统700,利用该电子系统700可以实现本主题技术的一个或多个具体实施。电子系统700可为图1所示的电子设备110和/或服务器120和/或可为其一部分。电子系统700可包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统700包括总线708、一个或多个处理单元712、系统存储器704(和/或缓存)、ROM 710、永久性存储设备702、输入设备接口714、输出设备接口706以及一个或多个网络接口716,或其子集及变体形式。
总线708共同表示通信地连接电子系统700的许多内部设备的所有系统、外围设备和芯片组总线。在一个或多个具体实施中,总线708将一个或多个处理单元712与ROM 710、系统存储器704和永久性存储设备702通信地连接。一个或多个处理单元712从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行本主题公开的过程。在不同的具体实施中,一个或多个处理单元712可为单个处理器或者多核处理器。
ROM 710存储一个或多个处理单元712和电子系统700的其他模块所需的静态数据和指令。另一方面,永久性存储设备702可为读写存储器设备。永久性存储设备702可为即使在电子系统700关闭时也存储指令和数据的非易失性存储器单元。在一个或多个具体实施中,海量存储设备(诸如,磁盘或光盘及其相应盘驱动器)可被用作永久性存储设备702。
在一个或多个具体实施中,可移除存储设备(诸如软盘、闪存驱动器及其对应的磁盘驱动器)可以用作永久性存储设备702。与永久性存储设备702一样,系统存储器704可为读写存储器设备。然而,与永久性存储设备702不同,系统存储器704可为易失性读写存储器,诸如随机存取存储器。系统存储器704可存储一个或多个处理单元712在运行时可能需要的指令和数据中的任何指令和数据。在一个或多个具体实施中,本主题公开的过程被存储在系统存储器704、永久性存储设备702和/或ROM 710中。一个或多个处理单元712从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行一个或多个具体实施的过程。
总线708还连接至输入设备接口714和输出设备接口706。输入设备接口714使得用户能够向电子系统700传达信息以及选择命令。可与输入设备接口714一起使用的输入设备可包括例如字母数字键盘和指向设备(也称为“光标控制设备”)。输出设备接口706可例如使得能够显示电子系统700所生成的图像。可与输出设备接口706一起使用的输出设备可包括例如打印机和显示设备,诸如液晶显示器(LCD)、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、柔性显示器、平板显示器、固态显示器、投影仪或用于输出信息的任何其他设备。一个或多个具体实施可包括既充当输入设备又充当输出设备的设备,诸如触摸屏。在这些具体实施中,提供给用户的反馈可以是任何形式的感官反馈,诸如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。
最后,如图7所示,总线708还通过一个或多个网络接口716将电子系统700耦接到一个或多个网络和/或一个或多个网络节点,诸如图1中所示的电子设备110和/或电子设备115。以此方式,电子系统700可为计算机的网络(诸如LAN、广域网(“WAN”)或内联网)的一部分,或者可为网络的网络(诸如互联网)的一部分。电子系统700的任何或所有部件可与本主题公开一起使用。
可使用编码一个或多个指令的有形计算机可读存储介质(或一种或多种类型的多个有形计算机可读存储介质)来部分或全部地实现本公开范围内的具体实施。有形计算机可读存储介质实质上也可以是非暂态的。
计算机可读存储介质可为能够由通用或专用计算设备读取、写入或以其他方式访问的任何存储介质,包括能够执行指令的任何处理电子器件和/或处理电路。例如,非限制地,计算机可读介质可包括任何易失性半导体存储器,诸如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第六段的规定,不需要解释任何权利要求元素,除非使用短语“用于……的装置”明确陈述了该元素,或者就方法权利要求而言,使用短语“用于……的步骤”陈述了该元素。
提供先前的描述是为了使所属领域的技术人员能够实践本文所描述的各个方面。这些方面的各种修改对本领域的技术人员而言是显而易见的,并且本文所限定的通用原则可应用于其他方面。因此,本权利要求书并非旨在受限于本文所示的方面,而是旨在使得全部范围与语言权利要求书一致,其中对奇异值中的元素的引用并非旨在意味着“仅仅一个”,而是指“一个或多个”,除非被具体指出。除非另外特别说明,否则术语“一些”是指一个或多个。男性的代名词(例如,他的)包括女性和中性(例如,她的和它的),并且反之亦然。标题和子标题(如果有的话)仅为了方便起见而使用并且不限制本主题公开。
Claims (20)
1.一种系统,包括:
处理器;
存储器设备,所述存储器设备包含指令,所述指令在由所述处理器执行时使得所述处理器:
从机器学习(ML)文档文件生成ML模型代码,所述ML文档文件为第一数据格式,所述ML文档文件被转换为不同于所述第一数据格式的面向对象的编程语言的代码;
接收调用由所述ML模型代码提供的函数的附加代码;
编译所述ML模型代码和所述附加代码,所述编译的ML模型代码包括对应于所述编译的ML模型代码的目标代码并且所述编译的附加代码包括对应于所述附加代码的目标代码;
生成包括所述编译的ML模型代码和所述编译的附加代码的包;以及
将所述包发送到目标设备上的运行环境以供执行。
2.根据权利要求1所述的系统,其中编译所述ML模型代码基于对所述目标设备的选择。
3.根据权利要求1所述的系统,其中所述目标设备为云计算平台。
4.根据权利要求1所述的系统,其中所述存储器设备进一步包含指令,所述指令在由所述处理器执行时进一步使得所述处理器:
针对多个目标设备生成相应的编译的ML模型代码,所述多个目标设备中的每一个为不同的设备。
5.根据权利要求1所述的系统,其中所述编译的ML模型包括适用于应用商店的归档。
6.根据权利要求1所述的系统,其中所述存储器设备进一步包含指令,所述指令在由所述处理器执行时进一步使得所述处理器:
接收变换的ML模型文件,所述变换的ML模型文件符合特定模型规范并包括以特定的面向对象的编程语言编写的代码,其中所述变换的ML模型文件对应于特定数据格式的ML模型;
提供包括所述变换的ML模型文件的图形视图的用户界面,所述图形视图包括对与所述变换的ML模型文件对应的对象的显示;以及
在所述用户界面内提供与所述变换的ML模型文件相关联的代码列表。
7.根据权利要求6所述的系统,其中所述图形视图进一步显示
具有不同属性的对象的分层视图和相关联文件的列表。
8.根据权利要求7所述的系统,其中所述对象包括
所述变换的ML模型文件的代码表示,所述代码表示对应于所述特定的面向对象的编程语言。
9.根据权利要求6所述的系统,其中所述代码列表包括用于
以所述面向对象的编程语言实现所述变换的ML模型文件的代码。
10.一种方法,包括:
从机器学习(ML)文档文件生成ML模型代码,所述ML文档文件为第一数据格式,所述ML文档文件被转换为不同于所述第一数据格式的面向对象的编程语言的代码;
接收调用由所述ML模型代码提供的函数的附加代码;
编译所述ML模型代码和所述附加代码,所述编译的ML模型代码包括对应于所述编译的ML模型代码的目标代码并且所述编译的附加代码包括对应于所述附加代码的目标代码;
生成包括所述编译的ML模型代码和所述编译的附加代码的包;以及
将所述包发送到目标设备上的运行环境以供执行。
11.根据权利要求10所述的方法,其中编译所述ML模型代码基于对所述目标设备的选择。
12.根据权利要求10所述的方法,其中所述目标设备为云计算平台。
13.根据权利要求10所述的方法,还包括:
针对多个目标设备生成相应的编译的ML模型代码,所述多个目标设备中的每一个是不同的设备。
14.根据权利要求10所述的方法,其中所述编译的ML模型包括适用于应用商店的归档。
15.根据权利要求10所述的方法,还包括:
接收变换的ML模型文件,所述变换的ML模型文件符合特定模型规范并包括以特定的面向对象的编程语言编写的代码,其中所述变换的ML模型文件对应于特定数据格式的ML模型;
提供包括所述变换的ML模型文件的图形视图的用户界面,所述图形视图包括对与所述变换的ML模型文件对应的对象的显示;以及
在所述用户界面内提供与所述变换的ML模型文件相关联的代码列表。
16.根据权利要求15所述的方法,其中所述图形视图进一步显示具有不同属性的对象的分层视图和相关联文件的列表。
17.根据权利要求16所述的方法,其中所述对象包括所述变换的ML模型文件的代码表示,所述代码表示对应于所述特定的面向对象的编程语言。
18.根据权利要求15所述的方法,其中所述代码列表包括用于以所述面向对象的编程语言实现所述变换的ML模型文件的代码。
19.一种非暂态计算机可读介质,所述非暂态计算机可读介质包括指令,所述指令在由计算设备执行时使得所述计算设备执行包括以下的操作:
从机器学习(ML)文档文件生成ML模型代码,所述ML文档文件为第一数据格式,所述ML文档文件被转换为不同于所述第一数据格式的面向对象的编程语言的代码;
接收调用由所述ML模型代码提供的函数的附加代码;
编译所述ML模型代码和所述附加代码,所述编译的ML模型代码包括对应于所述编译的ML模型代码的目标代码并且所述编译的附加代码包括对应于所述附加代码的目标代码;
生成包括所述编译的ML模型代码和所述编译的附加代码的包;以及
将所述包发送到目标设备上的运行环境以供执行。
20.根据权利要求19所述的非暂态计算机可读介质,其中编译所述ML模型代码基于对所述目标设备的选择。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762514780P | 2017-06-03 | 2017-06-03 | |
US62/514,780 | 2017-06-03 | ||
US15/721,701 | 2017-09-29 | ||
US15/721,701 US10606566B2 (en) | 2017-06-03 | 2017-09-29 | Integration of learning models into a software development system |
PCT/US2018/028416 WO2018222290A1 (en) | 2017-06-03 | 2018-04-19 | Integration of learning models into a software development system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110603520A true CN110603520A (zh) | 2019-12-20 |
CN110603520B CN110603520B (zh) | 2023-11-10 |
Family
ID=62116637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880029892.4A Active CN110603520B (zh) | 2017-06-03 | 2018-04-19 | 将学习模型集成到软件开发系统中 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10606566B2 (zh) |
CN (1) | CN110603520B (zh) |
WO (1) | WO2018222290A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708520A (zh) * | 2020-06-16 | 2020-09-25 | 北京百度网讯科技有限公司 | 应用构建方法、装置、电子设备及存储介质 |
CN111897574A (zh) * | 2020-07-10 | 2020-11-06 | 福州大学 | Dnn程序文档自动生成方法 |
CN112579095A (zh) * | 2020-12-16 | 2021-03-30 | 北京明略昭辉科技有限公司 | 辅助改善编码方法、系统、计算机设备及存储介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11410044B2 (en) | 2017-05-20 | 2022-08-09 | Google Llc | Application development platform and software development kits that provide comprehensive machine learning services |
US10310821B2 (en) * | 2017-06-03 | 2019-06-04 | Apple Inc. | Integration of learning models into a software development system |
US10824401B2 (en) * | 2018-04-30 | 2020-11-03 | MphasiS Limited | Method and system for automated creation of graphical user interfaces |
CN109669701A (zh) * | 2018-12-17 | 2019-04-23 | 深圳魔数智擎科技有限公司 | 对机器学习模型进行编译处理的方法、编译器及服务器 |
WO2020141433A1 (en) * | 2018-12-31 | 2020-07-09 | L&T Technology Services Limited | Method and device for identifying machine learning models for detecting entities |
CN111832736B (zh) * | 2019-04-19 | 2024-04-12 | 伊姆西Ip控股有限责任公司 | 用于处理机器学习模型的方法、设备和计算机可读存储介质 |
CN112183712A (zh) * | 2019-07-03 | 2021-01-05 | 安徽寒武纪信息科技有限公司 | 深度学习算法的编译方法、装置及相关产品 |
CN110515626B (zh) * | 2019-08-20 | 2023-04-18 | Oppo广东移动通信有限公司 | 深度学习计算框架的代码编译方法及相关产品 |
CN111142871B (zh) * | 2019-12-24 | 2023-06-06 | 杭州安恒信息技术股份有限公司 | 一种前端页面开发系统、方法、设备、介质 |
US11657069B1 (en) * | 2020-11-25 | 2023-05-23 | Amazon Technologies, Inc. | Dynamic compilation of machine learning models based on hardware configurations |
US11340871B1 (en) * | 2021-01-05 | 2022-05-24 | Red Hat, Inc. | Software-development tool with feedback notifications for improving software specifications |
US11481202B2 (en) | 2021-02-16 | 2022-10-25 | X Development Llc | Transformation templates to automate aspects of computer programming |
CN113297085B (zh) * | 2021-05-31 | 2023-08-08 | 北京经纬恒润科技股份有限公司 | 一种基于soc平台的算法验证方法及装置 |
CN114968329B (zh) * | 2022-04-22 | 2022-12-20 | 深圳市魔数智擎人工智能有限公司 | 一种自定义模型全流程管理方法 |
US11727084B1 (en) * | 2022-05-23 | 2023-08-15 | Salesforce, Inc. | Techniques for automatically configuring web components |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060293934A1 (en) * | 2005-04-22 | 2006-12-28 | Igor Tsyganskiy | Methods and systems for providing an integrated business application configuration environment |
CN102696012A (zh) * | 2010-01-06 | 2012-09-26 | 微软公司 | 从代码使用中创建所推断的符号 |
CN103677835A (zh) * | 2013-12-16 | 2014-03-26 | 北京经纬恒润科技有限公司 | 软件集成方法及系统 |
WO2017024242A1 (en) * | 2015-08-05 | 2017-02-09 | Equifax Inc. | Model integration tool |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875331A (en) | 1994-09-30 | 1999-02-23 | International Business Machines Corp. | System and method for generating target language code utilizing an object oriented code generator |
US6549918B1 (en) * | 1998-09-21 | 2003-04-15 | Microsoft Corporation | Dynamic information format conversion |
US9026997B2 (en) | 2008-12-16 | 2015-05-05 | Sap Ag | Systems and methods for executing object-oriented programming code invoking pre-existing objects |
US9418183B2 (en) | 2013-06-10 | 2016-08-16 | Abb Research Ltd. | Model development environment for assisting user in developing model describing condition of industrial asset |
US20160001235A1 (en) * | 2014-07-07 | 2016-01-07 | E I Du Pont De Nemours And Company | Filtration membranes |
US10026041B2 (en) * | 2014-07-12 | 2018-07-17 | Microsoft Technology Licensing, Llc | Interoperable machine learning platform |
US9483240B1 (en) * | 2015-05-27 | 2016-11-01 | Google Inc. | Data binding dependency analysis |
US11100398B2 (en) | 2016-06-30 | 2021-08-24 | Cogniac, Corp. | Operating machine-learning models on different platforms |
US20180293462A1 (en) | 2017-03-31 | 2018-10-11 | H2O.Ai Inc. | Embedded predictive machine learning models |
US20180314975A1 (en) | 2017-04-27 | 2018-11-01 | Futurewei Technologies, Inc. | Ensemble transfer learning |
-
2017
- 2017-09-29 US US15/721,701 patent/US10606566B2/en active Active
-
2018
- 2018-04-19 WO PCT/US2018/028416 patent/WO2018222290A1/en active Application Filing
- 2018-04-19 CN CN201880029892.4A patent/CN110603520B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060293934A1 (en) * | 2005-04-22 | 2006-12-28 | Igor Tsyganskiy | Methods and systems for providing an integrated business application configuration environment |
CN102696012A (zh) * | 2010-01-06 | 2012-09-26 | 微软公司 | 从代码使用中创建所推断的符号 |
CN103677835A (zh) * | 2013-12-16 | 2014-03-26 | 北京经纬恒润科技有限公司 | 软件集成方法及系统 |
WO2017024242A1 (en) * | 2015-08-05 | 2017-02-09 | Equifax Inc. | Model integration tool |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708520A (zh) * | 2020-06-16 | 2020-09-25 | 北京百度网讯科技有限公司 | 应用构建方法、装置、电子设备及存储介质 |
CN111708520B (zh) * | 2020-06-16 | 2023-08-29 | 北京百度网讯科技有限公司 | 应用构建方法、装置、电子设备及存储介质 |
CN111897574A (zh) * | 2020-07-10 | 2020-11-06 | 福州大学 | Dnn程序文档自动生成方法 |
CN112579095A (zh) * | 2020-12-16 | 2021-03-30 | 北京明略昭辉科技有限公司 | 辅助改善编码方法、系统、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10606566B2 (en) | 2020-03-31 |
US20180349109A1 (en) | 2018-12-06 |
WO2018222290A1 (en) | 2018-12-06 |
CN110603520B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11614922B2 (en) | Integration of learning models into a software development system | |
CN110603520B (zh) | 将学习模型集成到软件开发系统中 | |
US11537368B2 (en) | Integrating machine learning models into an interpreted software development environment | |
US11687830B2 (en) | Integration of learning models into a software development system | |
US10656920B2 (en) | Dynamically adaptable tool for graphical development of user interfaces | |
US8200710B2 (en) | System and method for runtime rendering of web-based user interfaces for master data management | |
ES2804506T3 (es) | Compartición de objetos de primera clase a través de múltiples lenguajes de programación interpretados | |
US10809981B2 (en) | Code generation and simulation for graphical programming | |
Sambasivan et al. | Generic framework for mobile application development | |
EP3008585B1 (en) | Automatic source code generation | |
EP3143504A2 (en) | Using an element in a first model to call a portion of a second model | |
US20170052764A1 (en) | Pluggable components for runtime-image generation | |
Ozik et al. | The ReLogo agent-based modeling language | |
CN113821207A (zh) | 机器学习模型编译器 | |
US11216431B2 (en) | Providing a compact representation of tree structures | |
CN102193802A (zh) | 具有同基类结构模型子集的模型转换方法 | |
Perkins et al. | beginning C# 6 programming with visual studio 2015 | |
US9135027B1 (en) | Code generation and execution for dynamic programming languages | |
Smyth | IOS 8 App Development Essentials | |
CN112016668A (zh) | 机器学习模型在运行时期间的可变参数 | |
Wells et al. | A tuple space web service for distributed programming-Simplifying distributed web services applications | |
Smyth | iOS 12 App Development Essentials: Learn to Develop iOS 12 Apps with Xcode 10 and Swift 4 | |
Robbins | A Java execution simulator | |
Jackson et al. | Android Screen Design: Writing to the Display Using Activity and View | |
Gaikwad | GIS tool for learning about Ottoman Empire |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |