CN112148282A - 用于推荐指令适配以改善计算性能的方法和装置 - Google Patents
用于推荐指令适配以改善计算性能的方法和装置 Download PDFInfo
- Publication number
- CN112148282A CN112148282A CN202010227504.2A CN202010227504A CN112148282A CN 112148282 A CN112148282 A CN 112148282A CN 202010227504 A CN202010227504 A CN 202010227504A CN 112148282 A CN112148282 A CN 112148282A
- Authority
- CN
- China
- Prior art keywords
- instruction
- adaptation
- model
- code
- execution
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- 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
- 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/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及用于推荐指令适配以改善计算性能的方法和装置。公开了用于推荐指令适配以改善计算性能的方法、设备、系统和制品。一种示例设备包括模式检测器,该模式检测器用于从由服务器提供的执行简档(与存储在指令储存库中的指令相关联的执行简档)检测执行模式。适配标识器,该适配标识器用于标识可应用于指令的与执行模式相关联的可能的指令适配。模型处理器,该模型处理器用于执行机器学习模型以预测适配的预期的性能改善。结果比较器,该结果比较器用于确定预期的性能改善是否满足阈值。指令编辑器,该指令编辑器用于响应于结果比较器确定预期的性能改善满足阈值,将可能的指令适配应用于指令储存库中的指令。
Description
技术领域
本公开总体上涉及推荐指令适配,并且更具体地涉及用于推荐指令适配以改善计算性能的方法和装置。
技术背景
功能即服务(FaaS)、微服务、平台即服务(PaaS)、和/或其他类似的云计算服务是允许开发、执行、和/或管理应用和/或程序的平台。此类应用和/或程序包括指令(例如,代码)块和/或函数,该指令块和/或函数本质上可以是模块化的和/或可以重新用于其他类似应用和/或程序。
附图说明
图1是示例功能即服务(FaaS)环境的框图。
图2是图1的示例适配控制器的框图。
图3是表示可以被执行以实现图1和/或图2的示例适配控制器的机器可读指令的流程图。
图4是表示可以被执行以实现图1和/或2的示例适配控制器以训练机器学习模型的机器可读指令的流程图。
图5是表示示例函数的执行简档的示图。
图6是表示由图1和/或图2的适配控制器基于推荐来修改的示例函数执行简档的示图。
图7表示可由图1和/或图2的示例适配控制器推荐的示例代码优化。
图8是被构造用于执行图3和/或图4中的指令以实现图1和/或图2中的示例适配控制器的示例处理平台的框图。
这些图不是按比例的。一般来说,在整个附图和所附书面描述中将使用相同的附图标记来指代相同或相似的组件。
当标识可分开地引用的多个要素或组件时,在本文中使用描述符“第一”、“第二”、“第三”等。除非以其他方式指定或基于它们的使用上下文来理解,否则此类描述符不旨在归于优先级、物理次序或列表中的布置、或者时间上的排序的任何含义,而是为了便于理解所公开的示例而仅仅用作用于分开地引用多个要素或组件的标签。在一些示例中,在具体实施方式中可使用描述符“第一”来引用要素,而同一要素在权利要求中可利用诸如“第二”或“第三”之类的不同的描述符来引用。在此类情况下,应当理解,此类描述符仅用于易于引用多个要素或组件。
具体实施方式
随着越来越多地使用功能即服务(FaaS)/无服务器、微服务、平台即服务(PaaS)或类似方法,该趋势指示指令将变得越来越通用。实际的开发者与将实际执行该开发者提供的指令(例如,代码、脚本等)的平台分开。在一些示例中,甚至实际执行平台(例如,云)的特征也可能对开发者隐藏(例如,用于执行指令的处理器架构和/或硬件的类型)。这导致了通用的、非平台特定的(例如,未优化的)指令。在一些示例中,代码可能已经针对开发环境中的执行进行了优化,但是尚未针对生产(例如FaaS)环境中的执行进行了优化。
基于程序/函数的集合的执行追踪/简档,本文所公开的示例方法利用机器学习模型来标识将从改变和/或(多个)平台差异特征中最大受益的程序/算法的片段。通过代码注释和/或适配控制器,对函数和/或底层代码作出/建议代码修改,以使函数受益于各种代码增强。此类方法使开发者能够编写通用代码、程序、和/或算法,这些代码、程序、和/或算法可以自动地(例如,在服务器侧)适应执行平台中的改变。如果程序/算法在平台之间移动,或者新的平台特征可用,则可以即时修改底层代码。例如,在一些示例中,可以通过添加来自持久性存储器开发套件(PMDK)库的代码来增强密钥-值(key-value)存储。在一些示例中,可并行化循环可以利用指令/编译指示来注释,以利用如开放媒体库(OpenML)、开放计算语言(OpenCL)等之类的库。
包括机器学习(ML)、深度学习(DL)和/或其他人工机器驱动逻辑的人工智能(AI)使机器(例如,计算机、逻辑电路等)能够使用模型来处理输入数据以基于先前经由训练过程学习的模式和/或关联来生成输出。例如,可以利用数据来训练模型以识别模式和/或关联,并且在处理输入数据时遵循这样的模式和/或关联,使得(多个)其他输入产生与所识别的模式和/或关联一致的(多个)输出。
存在许多不同类型的机器学习模型和/或机器学习架构。在本文所公开的示例中,使用回归神经网络(RNN)模型。使用RNN模型能够创建预测分数(例如,估计的性能度量)。通常,适用于本文所公开的示例方法中的机器学习模型/架构将能够创建表示性能度量(例如,完成操作的估计时间量)的输出值。然而,可以附加地或替代地使用其他类型的机器学习模型,诸如例如卷积神经网络(CNN)、支持向量机(SVM)、长期短期记忆(LSTM)架构等。
图1是示例功能即服务(FaaS)环境100的框图。图1的所图示示例的示例环境100包括由开发者提交到指令储存库110的代码105。连续集成/连续部署(CI/CD)框架120访问储存库110中的代码并将代码部署到服务器130以供执行。适配控制器140监测在服务器130处的函数的执行,并对存储在指令储存库110中的代码提出修改和/或适配以改善服务器130处的代码的执行。
图1所图示示例的示例代码105表示由开发者创建的经编码的指令。代码105可以使用任何过去的、现在的和/或将来的编程语言、语法等来表示。例如,可使用下列语言中的任何语言来表示代码105:C、C++、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、Swift等。在一些示例中,编程者可以开发代码以用于在开发环境中执行。最终,代码可以在不同于开发环境的生产环境中执行。由此,生产环境可能具有可用的不同硬件特征、可用的不同库等,当所述可用的不同硬件特征、可用的不同库等被使用时可能会导致提高的性能。开发者可能不知道这些特性和/或库和/或它们在生产环境中使用的可用性。本文所公开的示例方法使开发者能够在生产环境中执行时知道此类特征、库等,并改善代码105的执行。
图1所图示的示例中的示例指令储存库110由用于存储数据的任何存储器、存储设备和/或存储盘(诸如例如闪存、磁介质、光学介质、固态存储器、(多个)硬盘驱动器、(多个)拇指驱动器等)实现。此外,示例指令储存库110中所存储的数据可采用任何数据格式,诸如例如,二进制数据、逗号分隔的数据、制表符分隔的数据、结构化查询语言(SQL)结构等。虽然在所图示示例中示例指令储存库110被图示为单个设备,但本文所描述的示例指令储存库110和/或任何其他数据存储设备可以由任何数量和/或类型的存储器实现。在图1所图示的示例中,指令存储库110存储由开发者提供的代码105。在一些示例中,存储在指令储存库110中的代码105可以由示例适配控制器140修改。
图1所图示示例的示例CI/CD框架120监测指令储存库110中存在的代码,并且一旦对代码作出改变,就触发引起代码部署的CI/CD流水线的执行。CI/CD表示周期性地和/或周期性地捕获开发者产生的代码,并将代码部署到可用状态的过程。图1所图示示例的示例CI/CD框架包括构建器145、测试器150、部署器155、和释放器160。示例构建器145监测储存库中的代码,并周期性地(例如,每小时、每天、每周)和/或周期性地(例如,按需)构建代码。构建代码产生可执行文件和/或其他中间文件(例如,脚本文件、动态链接的库等),服务器130可以将所述可执行文件和/或其他中间文件作为函数来执行和/或解释。虽然本文所公开的示例将部署的函数称为可执行文件,但是可以以任何方式实现该函数,使得可以按客户端设备的请求来执行该函数。例如,此类函数可以由容器、脚本、库、虚拟机、插件等来实现。示例测试器150执行一个或多个测试以确认所构建的可执行文件的操作。如果测试器150确认可执行文件操作正确,则示例部署器155将可执行文件部署到(例如,在服务器130的文件系统上的)暂存区(staging area)。然后,释放器160释放所部署的可执行文件,从而使得服务器130能够执行该函数。
图1所图示示例的示例服务器130由云计算服务器实现,并且包括响应于在客户端接口170处接收到的请求而被执行的(多个)函数165。函数165的执行由资源管理器175控制。(多个)示例函数165表示由CI/CD框架120提供以供服务器130执行的可执行代码。示例客户端接口170实现网关和/或路由器,该网关和/或路由器允许客户端触发函数的执行,并且在某些情况下允许将函数的结果返回给客户端。示例资源管理器175管理服务器130的资源177。在本文所公开的示例中,资源管理器175由诸如例如KUBERNOTES、OPENSTACK、MESOS等之类的资源管理平台实现。此类资源管理器175实现函数的执行,并将用于函数的执行的简档和/或栈追踪(stack trace)提供给适配引擎140。在本文所公开的示例中,服务器130包括受资源管理器175控制的硬件资源177。此类硬件资源177可以是异构的(例如,各种CPU版本具有类似FPGA、GPU等的邻接),可以表示大规模的硬件(例如,计算集群)、和/或可以表示分布式硬件(例如,在云中、边缘、或本地)。
图2是图1的适配控制器140的示例实现方式的框图。示例适配控制器140访问(例如,监测)由服务器130的资源管理器175提供的简档和/或栈追踪,分析这些简档和/或栈追踪,并提供可以改善(多个)底层函数的性能的代码适配的推荐。图2所图示示例的示例适配控制器140包括简档访问器210、模式检测器220、适配标识器225、模型处理器230、模型数据存储240、结果比较器250、仪表板260、指令编辑器270、和模型训练器280。
图2所图示示例中的示例简档访问器210由诸如例如(例如,基于半导体的)硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)、(多个)现场可编程逻辑器件(FPLD)、(多个)数字信号处理器(DSP)等。示例简档访问器210从服务器130访问函数的简档和/或踪迹。在本文所公开的示例中,简档访问器210周期性地(例如,每小时、每天、每周等)访问来自服务器130的简档和/或轨迹。然而,在一些示例中,简档访问器210可以周期性地访问来自服务器130的简档和/或轨迹(例如,一旦在服务器130上执行对应的函数、一旦用户经由仪表板260进行请求等)。在一些示例中,简档访问器210(例如,经由函数标签、函数名称等)附加地标识与简档和/或踪迹相关联的函数。
图2所图示示例中的示例模式检测器220由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP等。示例模式检测器220从配置文件和/或轨迹检测模式。在本文所公开的示例中,该模式可以包括,例如,对可并行化的优化阻挡环路的检测、对网络、存储器、和/或输入/输出(I/O)的具有类似模式的重复访问、调用硬件特征可用的函数(例如,高级加密标准新指令(AESNI)函数)等。可以使用任何模式匹配和/或检测技术来检测模式。在一些示例中,基于函数调用的名称(例如,子例程)和/或函数的执行中使用的库来检测模式。
图2所图示示例中的示例适配标识器225由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP等。使用存储在示例模型数据存储240中的模型,示例适配标识器225标识对代码的可能的适配。示例适配标识器225基于存储在模型数据存储中的适配定义(有时称为(多个)配方)来标识可能的适配。在本文所公开的示例中,适配(例如,配方)表示可以被添加以增加代码的执行性能的所插入的代码段。然而,任何其他代码修改可以附加地或可替代地通过(多个)适配来实现,例如,包括专用库的使用(例如,如果检测到最好由非易失性存储器(NVM)处理的访问模式,则代码块/函数可以被适配以利用绕过文件系统的库并允许更好的性能;如果检测到要利用CPU和GPU上的多核架构的访问模式,则可以将某些内核引入代码中;等等。)、带有编译指示语句的注释(例如,指示将以并行方式执行“for循环”的编译指示语句等)
图2所图示示例中的示例模型处理器230由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP等。示例模型处理器230执行机器学习模型以预测那些可能的适配的性能影响。在本文所公开的示例中,以函数的总执行时间(例如,以秒为单位)来测量性能影响,因为函数的总执行时间是FaaS系统的终端用户最可见的执行参数。然而,在一些示例中,可以附加地或替代地使用其他执行参数,诸如例如,处理器周期、存储器使用、磁盘访问、网络访问等。在一些示例中,示例模型处理器230确定(多个)所计算的性能影响的预测置信度。在一些示例中,预测置信度是与模型相关联的参数和/或元数据(例如,模型准确度)。然而,在一些示例中,预测置信度可以表示模型的执行的附加输出。
图2所图示的示例中的示例模型数据存储240由用于存储数据的任何存储器、存储设备和/或存储盘(诸如例如闪存、磁介质、光学介质、固态存储器、(多个)硬驱动器、(多个)拇指驱动器等)实现。此外,存储在示例模型数据存储240中的数据可以是任何数据格式,诸如例如二进制数据、逗号分隔数据、制表符分隔数据、结构化查询语言(SQL)结构等。虽然在所图示的示例中,模型数据存储240被图示为单个装置,但本文所描述的示例模型数据存储240和/或任何其他数据存储设备可以由任何数量和/或类型的存储器实现。在图2所图示的示例中,示例模型数据存储240存储与将代码与性能度量相关联的各种执行模式相对应的模型。示例模型数据储存240还存储可用于适配代码的适配策略(例如,配方)。
图2所图示示例中的示例结果比较器250由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP等。使用由模型处理器230提供的信息,示例结果比较器250基于性能影响和/或预测置信度来选择可能的适配。在本文所公开的示例中,选择具有最高性能影响的可能的适配。但是,在一些示例中,可以附加地或替代地使用其他参数来选择可能的适配(例如,预测的置信度、预测的置信度和性能影响的组合等)。
图2所图示示例的示例仪表板260是由Web服务器界面(例如,超文本传输协议(HTTP)服务器)实现,该Web服务器界面允许用户(例如,开发者)访问由适配控制器提供的推荐。在一些示例中,示例仪表板260可以由诸如硬件处理器之类的逻辑电路来实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP等来提供用户界面。在一些示例中,仪表板260可以使用经由显示器显示的图形用户界面来实现,并且该图形用户界面经由例如键盘和/或鼠标来接受用户输入。
图2所图示示例中的示例指令编辑器270由诸如例如硬件处理器之类的逻辑电路来实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP等。示例指令编辑器270根据所选择的适配来修改代码。在一些示例中,所选择的适配被自动地应用(例如,如果预期的性能和/或预测置信度满足对应的阈值)。在一些示例中,响应于来自开发者的指令(例如,经由仪表板260)来应用所选择的适配。一旦编辑了代码,示例指令编辑器270就将经修改的代码提供给储存库110。
图2所图示示例中的示例模型训练器280由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP等。示例模型训练器280执行对示例模型数据存储240中存储的(多个)模型进行训练。可以基于ML/AI模型的类型和/或预期输出来执行不同类型的训练。例如,有监督训练使用输入(例如,指令样本)和对应的预期输出(例如,性能度量)(有时称为标签)来选择用于ML/AI模型的减少模型误差的参数(例如,通过迭代选择参数的组合)。如本文中所使用,标签是指机器学习模型的预期输出(例如,分类、预期输出值、预期性能度量等)。替代地,无监督式训练(例如,在深度学习、机器学习等的子集中使用)涉及从输入推断模式以选择用于ML/AI模型的参数(例如,不具有预期(标记的)输出的益处)。
示例模型训练器280使示例模型处理器230使用训练数据来评估模型以创建输出。在尚未创建先前模型的示例中,可以在知识库中初始化模型(例如,如果与模式关联的模型先前不存在)。示例模型训练器280确定模型的输出和/或更一般地,模型是否准确。在本文所公开的示例中,使用损失函数(例如,以将生成的输出与期望的输出进行比较)来确定模型的准确度,并将准确度与准确度阈值进行比较。即,执行训练直到实现模型准确度的阈值量(例如,模型准确度大于90%)。然而,在一些示例中,可以附加地或替代地使用其他条件来确定何时结束训练,诸如例如,用于训练模型的时间量、所使用的训练迭代次数等。如本文所公开的示例,使用控制如何执行学习的超参数(例如,学习率、要在机器学习模型中使用的层数等)来执行训练。
虽然图2图示了实现图1的示例适配控制器140的示例方式,但图2所图示的元件、进程和/或设备中的一个或多个可以被组合、被拆分、被重新设置、被省略、被消除和/或以任何方式被实现。进一步地,示例简档访问器210、示例模式检测器220、示例适配标识器225、示例模型处理器230、示例结果比较器250、示例仪表板260、示例指令编辑器270、示例模型训练器280、和/或更一般地,图1和/或图2的示例适配控制器140可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,示例简档访问器210、示例模式检测器220、示例适配标识器225、示例模型处理器230、示例结果比较器250、示例仪表板260、示例指令编辑器270、示例模型训练器280、和/或更一般地,图1和/或图2的示例适配控制器140中的任何一个可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)图形处理单元(GPU)、(多个)数字信号处理器(DSP)、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)和/或(多个)现场可编程逻辑器件(FPLD)来实现。当阅读本专利的任何设备或系统权利要求以涵盖纯粹的软件和/或固件实现时,示例简档访问器210、示例模式检测器220、示例适配标识器225、示例模型处理器230、示例结果比较器250、示例仪表板260、示例指令编辑器270、示例模型训练器280、和/或更一般地,图1和/或图2中的示例适配控制器140中的至少一者由此被明确地限定为包括包含软件和/或固件的非暂态计算机可读存储设备或存储盘,诸如,存储器、数字多功能盘(DVD)、紧凑盘(CD)、蓝光盘,等等。此外,图1和/或图2的示例适配控制器140可包括除图2中所图示的那些之外或作为图2中所图示的那些的替代的一个或多个元件、过程和/或装置,并且/或可包括任何或所有图示出的元件、过程和装置中的一个以上。如本文使用的,短语“通信”包括其各种变体,包含直接通信和/或通过一个或多个中间组件的间接通信,并且不需要直接物理(例如,有线)通信和/或持续通信,而是附加地包括以周期性间隔、预定间隔、非周期性间隔、和/或一次性事件来进行的选择性通信。
在图3和/或图4中示出了表示用于实现图1和/或图2的示例适配控制器140的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是由计算机处理器执行的一个或多个可执行程序或可执行程序的(多个)部分,计算机处理器诸如结合图8在下文中所讨论的示例处理器平台812中示出的处理器800。虽然程序能具体化在存储于与处理器812关联的诸如CD-ROM、软盘、硬驱动器、DVD、蓝光盘或存储器之类的非暂态计算机可读存储介质上的软件中,但是全部程序和/或其部分可替代地由除处理器812之外的设备执行,和/或具体化在固件或专用硬件中。进一步地,虽然参考图3和/或图4所图示的流程图描述了示例程序,但是可替代地使用实现示例适配控制器140的许多其他方法。例如,可改变框的执行次序,和/或可改变、消除或组合所描述的框中的一些框。附加地或替代地,任何或所有框可以由被构造成在不执行软件或固件的情况下执行相应的操作的一个或多个硬件电路(例如,分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现。
本文中描述的机器可读指令可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式等中的一种或多种来存储。本文描述的机器可读指令可以作为可用于创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码表示等)来存储。例如,机器可读指令可以被分段并被存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能要求安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新分配、编译等中的一项或多项,以使得它们可直接由计算设备和/或其他机器读取、解释、和/或执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独压缩、加密并存储在单独的计算设备上,其中,这些部分在解密、解压缩和组合时形成实现如本文所述的程序的一组可执行指令。
在另一示例中,机器可读指令能以它们可由计算机读取的状态被存储,但是要求添加库(例如,动态链接库(DLL))、软件开发工具包(SDK)、应用编程接口(API)等,以便在特定的计算设备或其他设备上执行指令。在另一个示例中,在可整体或部分地执行机器可读指令和/或对应的(多个)程序之前,可能需要配置机器可读指令(例如,存储的设置、数据输入、记录的网络地址等)。因此,所公开的机器可读指令和/或对应的(多个)程序旨在包含此类机器可读指令和/或(多个)程序,而不管机器可读指令和/或(多个)程序在存储时或以其他方式处于静态或在传输中时的特定格式或状态如何。
本文所描述的机器可读指令可以由任何过去、现在或将来的指令语言、脚本语言、编程语言等表示。例如,可使用下列语言中的任何语言来表示机器可读指令:C、C++、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、Swift等。
如上所提及的,可使用存储于非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)实现图3和/或图4的示例过程,非暂态计算机和/或机器可读介质诸如:硬盘驱动器、闪存、只读存储器、压缩盘、数字多功能盘、高速缓存、随机存取存储器和/或在任何时长内(例如,在扩展时间段内、永久地、在简短的实例期间、在临时缓冲和/或信息缓存期间)将信息存储于其内的任何其它存储设备或存储盘。如本文中所使用,术语非暂态计算机可读介质被明确地限定为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。
“包含”和“包括”(及其所有形式和时态)在本文中用作开放式术语。因此,每当权利要求将任何形式的“包含”或“包括”(例如,包括、包含、具有等)用作前言或用于任何种类的权利要求叙述内时,要理解的是,附加的要素、项等可以存在而不超出对应权利要求或叙述的范围。如本文所使用的,当短语“至少”被用作例如与权利要求同步使用的过渡术语时是和术语“包含”和“包括”一样的开放式的。当例如以诸如A、B和/或C之类的形式使用术语“和/或”时,指的是A、B、C的任何组合或子集,诸如(1)单独的A、(2)单独的B、(3)单独的C、(4)A与B、(5)A与C、(6)B与C、以及(7)A与B与C。如本文中在描述结构、组件、项目、对象和/或事物的上下文中所使用,短语“A和B中的至少一者”旨在指代包括以下各项中的任何一项的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,如本文中在描述结构、组件、项目、对象和/或事物的上下文中所使用,短语“A或B中的至少一者”旨在指代包括以下各项中的任何一项的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。如本文中在描述对过程、指令、动作、活动和/或步骤的实行或执行的上下文中所使用,短语“A和B中的至少一者”旨在指代包括以下各项中的任何一项的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,如本文中在描述过程、指令、动作、活动和/或步骤的实行或执行的上下文中所使用,短语“A或B中的至少一者”旨在指代包括以下各项中的任何一项的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。
如本文所用,单数引用(例如,“一个(a)”、“一个(an)”、“第一”、“第二”等)不排除复数。本文所使用的术语“一个(a,an)”实体是指该实体中的一个或多个。术语“一个(a)”(或“一个(an)”)、“一个或多个”和“至少一个”可以在本文中互换使用。此外,虽然单独列出,但多个装置、元件或方法动作可由例如单个单元或处理器来实现。另外,虽然各个特征可以被包括在不同的示例或权利要求中,但是这些特征可以可能被组合,并且在不同的示例或权利要求中的包括并不意味着特征的组合是不可行和/或不利的。
图3是表示可以被执行以实现图1和/或图2的示例适配控制器的机器可读指令的流程图。图3的示例过程300开始于示例简档存取器210从服务器130访问函数的简档和/或踪迹。(框305)。在本文所公开的示例中,简档存取器210周期性地(例如,每小时、每天、每周等)访问来自服务器130的简档和/或轨迹。然而,在一些示例中,简档存取器210可以周期性地访问来自服务器130的简档和/或轨迹(例如,一旦在服务器130上执行对应的函数、一旦用户经由仪表板260进行请求等)。
示例指令编辑器270从指令储存库110访问用于函数的(多个)指令。(框310)。示例模式检测器220从简档和/或轨迹检测模式。(框315)。在本文所公开的示例中,该模式可以包括,例如,对可并行化的优化阻挡环路的检测、对网络、存储器、和/或输入/输出(I/O)的具有类似模式的重复访问、调用硬件特征可用的函数(例如,高级加密标准新指令(AESNI)加密函数)等。
示例模型处理器230确定示例模型数据存储240中是否存在可用以与所标识的模式结合使用的模型。(框320)。在一些示例中,存储在示例模型数据存储240中的模型表示经训练的模型(例如,由模型处理器230和/或模型训练器280训练的模型)。然而,在一些示例中,存储在示例模型数据存储240中的模型可以包括由供应商提供的模型。
如果示例模型处理器230确定不存在可用于与所标识的模式结合使用的模型(例如,框320返回“否”的结果),则示例模型处理器230和/或模型训练器280创建用于在模型数据存储240中存储的模型。(框325)。一般而言,实现ML/AI系统涉及两个阶段:学习/训练阶段和推断阶段。在学习/训练阶段,训练算法被用于训练模型以根据基于例如训练数据的模式和/或关联来操作。结合图4进一步详细描述用于创建和/或训练模型的示例方法。在ML/AI系统的上下文中,图3的其余部分表示推断阶段(例如,使用经训练的模型来创建推断和/或经训练的输出)。
使用存储在示例模型数据存储240中的模型,示例适配标识器225标识对(多个)指令的可能适配。(框330)。示例适配标识器225基于存储在模型数据存储中的适配定义(有时称为(多个)配方)来标识可能的适配。在本文所公开的示例中,适配(例如,配方)表示可以被添加以提高(多个)指令的执行性能的所插入的代码段。然而,任何其他修改可以附加地或替代地通过(多个)适配来实现,包括,例如,专用库的使用(例如,如果检测到访问模式最好由非易失性存储器(NVM)处理,则代码块/函数可以被适配以利用绕过文件系统并允许更好的性能的库;如果检测到访问模式以利用CPU和GPU上的多核架构,则可以将某些内核引入指令中;等等)、带有编译指示语句的注释(例如,指示for循环要以并行方式执行等的编译指示语句)。下面结合图7进一步详细描述示例编译指示语句。
示例模型处理器230预测这些可能的适配对性能的影响。(框335)。在本文所公开的示例中,以函数的总执行时间(例如,以秒为单位)来测量性能影响,因为函数的总执行时间是FaaS系统的终端用户最可见的执行参数。然而,在一些示例中,可以附加地或替代地使用其他执行参数,诸如例如,处理器周期、存储器使用、磁盘访问、网络访问等。
示例模型处理器230确定(多个)所计算的性能影响的预测置信度。(框340)。在一些示例中,预测置信度是模型的参数(例如,模型准确度)。然而,在一些示例中,预测置信度可以表示模型的执行的附加输出。示例结果比较器250基于性能影响和/或预测置信度选择可能的适配。(框345)。在本文所公开的示例中,选择具有最高性能影响的可能的适配。但是,在一些示例中,可以附加地或替代地使用其他参数来选择可能的适配(例如,预测的置信度、预测的置信度和性能影响的组合等)。
然后,示例结果比较器250确定是否根据所选择的适配来自动地适配指令。(框350)。在一些示例中,确定是否自动地适配(多个)指令使得适配控制器140能够修改存储在指令储存库110中的(多个)指令,而不需要用户的干预(例如,批准)。可以基于预测的性能影响和/或预测置信度来确定是否自动地适配(多个)指令。例如,当性能影响大于阈值改善(例如,70%性能中的所估计的改善)时,结果比较器250可以确定要应用适配。在一些示例中,结果比较器250可以附加地或可替代地考虑所预测的性能改善的所估计的置信度是否满足置信度阈值。例如,结果比较器250可以仅在预测的性能影响的置信水平高(例如,大于或等于50%)时选择自动地适配(多个)指令。
在本文所公开的示例中,此类阈值是用户经由仪表板260可配置的。结果,开发者可以利用预测置信度而无需立即参与,并且/或者可以配置系统以降低在没有开发者参与的情况下应用修改的可能性。例如,在安全性关键系统中,开发者可能只期望选择具有高阈值置信水平(例如,阈值置信水平大于或等于90%)的修改。然而,在一些其他系统中,开发者可能会对选择具有降低的置信度水平的预测感兴趣,因为预测的影响很高(例如,当存在10%置信度得分但90%性能影响时,允许选择所提出的修改)。在一些示例中,可以设置阈值,使得不自动地应用(多个)指令适配。
如果示例结果比较器250确定应该自动地适配(多个)指令(例如,框350返回“是”的结果),则示例指令编辑器270根据所选择的适配来修改(多个)指令。(框355)。然后,示例指令编辑器270然后将(多个)经修改的指令提供给指令储存库110。(框360)。一旦将(多个)指令提供给指令储存库110,示例CI/CD框架120就将处理(多个)经修改的指令,并将(多个)经处理的指令释放给服务器130以用于执行。
返回到框350,如果示例结果比较器250确定不应自动地适配(多个)指令(例如,框350返回“否”的结果),则示例仪表板260通知开发者可能的适配、成瘾的性能影响、和/或与此相关的置信度水平。(框365)。在一些示例中,可以经由例如电子邮件、短消息服务(SMS)消息等来提供通知。
然后,示例仪表板260确定是否接收到应用所提出的适配的选择。(框370)。例如,开发者可以指示适配控制器140应用经由仪表板260所提出的(多个)指令修改。如果示例仪表板确定尚未接收到选择(例如,框370返回“否”的结果),则示例简档访问器210确定是否存在要分析的任何附加的函数。(框375)。然后,重复框305-框375的示例过程,直到已经分析了所有函数(例如,直到框375返回“否”的结果)。
返回到框370,一旦接收到选择(例如,框370返回“是”的结果),则控制进行到框355,其中示例指令编辑器270修改(多个)指令(框355)并将经修改的(多个)指令提供给储存库110。(框360)。虽然在图3所图示的示例中对开发者的指令的接收(例如,对是否应用所提出的修改的选择)被图示为串行过程,开发者的指令不需要阻挡和/或禁止图3的指令的其余部分的执行。例如,在通知开发者之后,示例过程可以进行到框375,在框375处,示例简档访问器210确定是否存在要分析的任何附加的函数。可以在稍后的时间接收并相应地处理开发者对是否应用所提出的(多个)指令修改的选择。
图4是表示可以被执行以实现图1和/或2的示例适配控制器以训练机器学习模型的机器可读指令的流程图。如上文所述,实现ML/AI系统涉及两个阶段:学习/训练阶段和推断阶段。图4表示学习/训练阶段,在学习/训练阶段训练算法被用于训练模型以根据基于例如训练数据的模式和/或关联来操作。在此公开的示例中,针对每种模式训练单独的模型。然而,在一些示例中,可以使用单个模型,并且可以供应模式作为训练输入。与考虑所有模式的单个模型相比,对每个对应的模式使用单独的模型导致经训练的模型对执行的计算要求较低(例如,可以更有效地执行)。
图4的示例过程400开始于示例适配标识器225标识与检测到的模式(在框315中检测到)相关联的(多个)可能的适配和用于这些适配的已知性能统计信息(例如,度量)。(框410)。示例模型训练器280在模型数据存储240中将(多个)指令、作为(多个)训练输入的对(多个)指令的(多个)可能的适配、以及作为(多个)训练输出的相应的性能统计信息存储在模型数据存储240中。(框420)。
示例模型训练器280确定是否存在足够的数据用于对与模式有关的模型进行训练。(框430)。在本文所公开的示例中,当与要针对其训练模型的模式有关的训练输入的阈值量(例如,十个或更多个训练输入)时,示例模型训练器280确定存在足够的数据。在一些示例中,当针对模式的知识库中先前存在模型时,示例模型训练器280可以确定存在用于训练模型的足够的数据。在此类示例中,可以使用附加的训练数据来执行训练,以尝试改善先前存储的模型。
可以基于ML/AI模型的类型和/或预期输出来执行不同类型的训练。例如,有监督训练使用输入(例如,代码样本)和对应的期望输出(例如,性能度量)来选择用于ML/AI模型的减少模型误差的参数(例如,通过迭代多个选择参数的组合)。如本文中所使用,标记是指机器学习模型的预期输出(例如,分类、预期输出值、预期性能度量等)。替代地,无监督式训练(例如,在深度学习、机器学习等的子集中使用)涉及从输入推断模式以选择用于ML/AI模型的参数(例如,不具有预期(标记的)输出的益处)。
如果存在用于训练模型的足够数据(例如,框430返回“是”的结果),则与模型处理器230相关的示例模型训练器280评估模型以用于训练目的。(框440)。在尚未创建先前模型的示例中,可以在知识库中初始化模型(例如,如果与模式关联的模型先前不存在)。为了评估模型,示例模型训练器280使模型处理器230执行模型并返回输出。
示例模型训练器280确定模型的输出和/或更一般地模型是否准确。(框450)。在本文所公开的示例中,使用损失函数(例如,以将生成的输出与期望的输出进行比较)来确定模型的准确度,并将准确度与准确度阈值进行比较。即,执行训练直到实现模型准确度的阈值量(例如,模型准确度大于90%)。然而,在一些示例中,可以附加地或替代地使用其他条件来确定何时结束训练,诸如例如,用于训练模型的时间量、所使用的训练迭代次数等。如本文所公开的示例,使用控制如何执行学习的超参数(例如,学习率、要在机器学习模型中使用的层数等)来执行训练。
如果模型不准确(例如,框450返回“否”的结果),则示例模型训练器280调整模型的参数。(框460)。在本文所公开的示例中,使用随机梯度下降来调整ML/AI模型参数。然而,可附加地或替代地使用任何其他训练算法。然后,示例模型训练器280发起对模型的重新评估。(框440)。重复框440到框460的示例过程,直到实现阈值模型准确度(和/或满足其他训练条件)(例如,直到框450返回“是”的结果)。
如上文所述,使用训练数据执行训练。在本文所公开的示例中,训练数据源自与输出性能度量有关的(多个)指令和/或对(多个)指令的所提出的修改。因为使用了有监督训练,所以训练数据被标记。通过将输出性能度量与(多个)指令和/或对(多个)指令的所提出的修改相关联来对训练数据应用标记。在一些示例中,使用例如自然语言处理、语法检测、搜索参数等对训练数据进行预处理,以检测(多个)指令中的特定模式、函数调用、编程结构等。在一些示例中,训练数据被细分为训练集和验证集以允许计算生成的模型的准确度。
一旦训练完成(例如,框450返回“是”的结果),示例模型训练器280就存储与模式有关的模型。(框465)。一旦被存储,就将该模型部署为用作可执行构造,该可执行构造基于模型中定义的节点和连接的网络来处理输入并提供输出。模型被存储在示例模型数据存储240处。然后可以由模型处理器230执行该模型。
示例模型训练器280存储模型的准确度。(框470)。例如,可以通过使用验证数据集评估模型并将模型的结果输出与(与验证集中的输入训练数据相关联的)预期输出进行比较来确定模型的准确度。模型的准确度可以在稍后的推断阶段使用以确定模型的输出的置信度。
一旦被训练,部署的模型可以在推断阶段(例如,在图3的上下文中)中操作以处理数据。在推断阶段,将要分析的数据(例如,实时数据)输入到模型,并且该模型执行以创建输出。该推断阶段可以被认为是AI“思考”以便基于其从训练中学习到的来生成输出(例如,通过执行模型以将所学习的模式和/或关联应用于实时数据)。在一些示例中,输入数据在被用作机器学习模型的输入之前经历预处理。此外,在一些示例中,在由AI模型生成输出数据之后,可以对该输出数据进行后处理,以将输出变换成有用的结果(例如,数据显示、由机器执行的指令,等等)。
在一些示例中,可以捕获所部署模型的输出并将其作为反馈来提供。通过分析该反馈,能够确定所部署模型的准确度。如果反馈指示所部署的模型的准确度低于阈值或其他标准,则可以使用反馈和更新的训练数据集、超参数等来触发对更新的模型的训练,以生成更新的部署模型。
在一些示例中,可以执行重新训练。此类重新训练可响应于例如检测到新模式、自先前训练以来达到的阈值时间量、从用户/开发者接收到的指令等而执行。
图5是表示函数的示例执行简档的图。图5的示例图500示出了用于非优化执行的栈追踪。图5的示例图500包括横轴501和纵轴502。横轴501表示时间。横轴501表示执行主函数调用503的大约5秒的时间。纵轴502表示子函数调用(例如,由于主函数调用而对其他函数的内部调用)。图5中的每个块表示函数调用以及执行函数调用花费了多长时间。从顶部504开始的第4个条指示函数执行在某个例程(在本例中是MandelBrotCalculate例程)中花费了大量时间。在图5所图示的示例中,没有加载优化库(诸如OpenMP)。通过对占用最多时间的例程执行扫描,可以确定存在可以优化的“for循环”。
图6是表示由图1和/或图2的适配控制器基于推荐而修改的函数的示例执行简档的示图。图6的示例示图600示出了用于优化执行的栈追踪。图6的示例图600包括横轴601和纵轴602。横轴601表示时间。横轴601表示执行主函数调用603的大约半秒的时间。纵轴602表示子函数调用(例如,由于主函数调用而对其他函数的内部调用)。图6的框604表示正在执行的MandelBrotCalculate例程(与图5的框504相对应)。
与图5的示例相反,在图5中,发现未被优化的for循环,该for循环可以用编译指示(pragma)进行注释,并得到图6的栈追踪。图7表示可由图1或图2的示例适配控制器推荐的(多个)示例指令优化。图7包括插入的编译指示命令710的(多个)指令的块700。示例编译指示命令710使随后的for循环使用OpenMP库来执行,并且并行地执行。返回到图6,当执行经修改的函数时,该函数的整体运行时间大约减少10倍(例如,大约5秒相对于1/5秒)。
图8是被构造为执行图3和/或图4的指令以实现图2的示例适配控制器140的示例处理器平台800的框图。处理器平台800可以是例如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(PDA)、互联网设备或任何其他类型的计算设备。
所图示示例的处理器平台800包括处理器812。所图示示例的处理器812是硬件。例如,处理器812可以由来自任何所需要的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器实现。硬件处理器可以是基于半导体的(例如,硅基)器件。在此示例中,处理器实现示例简档访问器210、示例模式检测器220、示例适配标识器225、示例模型处理器230、示例结果比较器250、示例仪表板260、示例指令编辑器270、和示例模型训练器280。
所图示示例的处理器812包括本地存储器813(例如,高速缓存)。所图示示例的处理器812经由总线818与包括易失性存储器814和非易失性存储器816的主存储器进行通信。易失性存储器814可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、动态随机存取存储器和/或任何其他类型的随机存取存储器设备实现。非易失性存储器816可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器814、主存储器816的访问。
在所图示的示例中,一个或多个输入设备822被连接至接口电路820。(多个)输入设备822准许用户将数据和/或命令输入至处理器812中。(多个)输入设备可以由例如音频传感器、话筒、相机(静止的或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标和/或语音识别系统实现。
一个或多个输出设备824也被连接至所图示示例的接口电路820。输出设备824可例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、面内切换(IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所图示示例的接口电路820典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所图示的示例的接口电路820还包括诸如发射机、接收机、收发机、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络826与外部机器(例如,任何种类的计算设备)交换数据。通信可经由例如以太网连接、数字订户线路(DSL)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。
所图示示例的处理器平台800还包括用于存储软件和/或数据的一个或多个大容量存储设备828。此类大容量存储设备828的示例包括软盘驱动器、硬驱动器盘、紧凑盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字多功能盘(DVD)驱动器。
图3和/或图4的机器可执行指令832可被存储在大容量存储设备828中、易失性存储器814中、非易失性存储器816中和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
从前述内容可以理解,已经公开了提供实现在功能即服务(FaaS)环境中部署的(多个)指令的适配的推荐的示例方法、设备和制品。所公开的方法、装置和制品通过使得能够向开发者提供关于其(多个)指令在生产环境中的性能的推荐来改善使用计算设备的效率。此类推荐基于预测的性能改善以及(在某些情况下)该预测的置信度来选择。利用这些推荐可在服务器130处得到表现更好的(多个)指令(例如,更快地完成、利用更少的资源等)。所公开的方法、设备和制品相应地涉及计算机功能的一个或多个改善。
尽管本文中已公开了某些示例方法、设备和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖落入本专利权利要求范围内的全部方法、装置和制品。
示例1包括一种用于推荐指令适配以改善计算性能的设备,该设备包括:模式检测器,该模式检测器用于从由服务器提供的执行简档中检测执行模式,该执行简档与存储在指令储存库中的指令相关联;适配标识器,该适配标识器用于标识可应用于指令的与执行模式相关联的可能的指令适配;模型处理器,该模型处理器用于执行机器学习模型以预测适配的预期的性能改善;结果比较器,该结果比较器用于确定预期的性能改善是否满足阈值,以及指令编辑器,该指令编辑器用于响应于结果比较器确定预期的性能改善满足阈值,将可能的指令适配应用于指令储存库中的指令。
示例2包括示例1的设备,进一步包括简档访问器,该简档访问器用于从服务器中访问执行简档。
示例3包括示例2的设备,其中服务器用于在作为服务环境的函数中操作。
示例4包括示例1的设备,其中模型处理器进一步用于确定预期的性能改善的置信度,并且指令编辑器用于响应于结果比较器确定置信度满足置信度阈值而应用可能的指令适配。
示例5包括示例1的设备,进一步包括仪表板,该仪表板输出可能的适配的通知。
示例6包括示例5的设备,其中指令编辑器用于响应于经由仪表板接收的指令来应用可能的指令适配。
示例7包括示例1的设备,其中适配包括将编译指示语句插入到指令中。
示例8包括至少一种非暂态计算机可读存储介质,包括指令,该指令在被执行时使至少一个处理器至少:从与指令储存库中的代码相关联的执行简档中检测执行模式,基于执行模式来标识可应用于代码的可能的适配,执行机器学习模型以预测适配的预期的性能改善,确定预期的性能改善是否满足改善的阈值,响应于确定预期的性能改善满足改善阈值而对代码应用可能的适配。
示例9包括示例8的至少一个计算机可读存储介质,其中从服务器中访问执行模式,该服务器用于在作为服务环境的函数中操作。
示例10包括示例8的至少一种计算机可读存储介质,其中,指令在被执行时使至少一个处理器确定预期的性能改善的预测置信度,并响应于对预测置信度满足置信度阈值的确定而应用可能的适配。
示例11包括示例8的至少一个计算机可读存储介质,其中,指令在被执行时使至少一个处理器用于向与代码相关联的开发者通知可能的适配。
示例12包括示例11的至少一个计算机可读存储介质,其中,在指令被执行时,使至少一个处理器用于响应于来自开发者的指令而应用可能的适配。
示例13包括示例8的至少一个计算机可读存储介质,其中,适配包括将编译指示语句插入代码中。
示例14包括一种用于推荐指令适配以改善计算性能的方法,该方法包括:从由服务器提供的执行简档中检测执行模式,该执行简档与存储在指令储存库中的指令相关联;标识可应用于指令的与执行模式相关联的可能的指令适配;使用机器学习模型预测适配的预期的性能改善;确定预期的性能改善是否满足阈值;以及响应于确定预期的性能改善满足阈值而将可能的指令适配应用于该指令。
示例15包括示例14的方法,其中服务器用于在作为服务环境的函数中操作。
示例16包括示例14的方法,进一步包括确定预期的性能改善的置信度,以及响应于对置信度满足置信阈值的确定,进一步执行应用可能的指令适配。
示例17包括示例14的方法,进一步包括向与指令相关联的开发者通知可能的适配。
示例18包括示例17的方法,其中响应于来自开发者的指令进一步执行应用可能的指令适配。
示例19包括示例14中的方法,其中,适配包括将编译指示语句插入指令中。
示例20包括一种用于推荐代码适配以改善计算性能的设备,该设备包括:用于从由服务器提供的执行简档中检测执行模式的装置,该执行简档与存储在指令储存库中的代码相关联;用于标识可应用于代码的与执行模式相关联的可能的代码适配的装置;用于使用机器学习模型预测适配的预期的性能改善的装置;用于确定预期的性能改善是否满足阈值的装置;用于响应于确定预期的性能改善满足阈值而将可能的代码适配应用于该代码的装置。用于检测的装置由模式检测器220实现。用于标识的装置由适配标识器225实现。用于预测的装置由模型处理器230实现。用于确定的装置由结果比较器250实现。
示例21包括示例20的设备,其中服务器用于在作为服务环境的函数中操作。
示例22包括示例20的设备,其中用于预测的装置进一步用于确定预期的性能改善的置信度,并且用于应用的装置用于响应于对置信度满足置信度阈值的确定而应用适配。
示例23包括示例20的设备,进一步包括用于向与代码相关联的开发者通知可能的适配的装置。用于通知的装置由仪表板260实现。
示例24包括示例23的设备,其中用于应用的装置进一步用于响应于来自开发者的指令而应用代码适配。
示例25包括示例20的设备,其中适配包括将编译指示语句插入到代码中。
所附的权利要求由此通过此种引用而被并入到该具体实施方式中,每一项权利要求本身作为本公开的单独的实施例。
Claims (25)
1.一种用于推荐指令适配以改善计算性能的设备,所述设备包括:
模式检测器,所述模式检测器用于从由服务器提供的执行简档中检测执行模式,所述执行简档与存储在指令储存库中的指令相关联;
适配标识器,所述适配标识器用于标识可应用于所述指令的与所述执行模式相关联的可能的指令适配;
模型处理器,所述模型处理器用于执行机器学习模型以预测适配的预期的性能改善;
结果比较器,所述结果比较器用于确定所述预期的性能改善是否满足阈值;以及
指令编辑器,所述指令编辑器用于响应于所述结果比较器确定所述预期的性能改善满足所述阈值,将所述可能的指令适配应用于所述指令储存库中的所述指令。
2.如权利要求1所述的设备,进一步包括简档访问器,所述简档访问器用于从所述服务器访问所述执行简档。
3.如权利要求2所述的设备,其特征在于,所述服务器用于在作为服务环境的函数中操作。
4.如权利要求1所述的设备,其特征在于,所述模型处理器进一步用于确定预期的性能改善的置信度,并且所述指令编辑器用于响应于所述结果比较器确定所述置信度满足置信度阈值而应用所述可能的指令适配。
5.如权利要求1所述的设备,进一步包括仪表板,所述仪表板输出可能的适配的通知。
6.如权利要求5所述的设备,其特征在于,所述指令编辑器用于响应于经由所述仪表板接收的指令来应用所述可能的指令适配。
7.如权利要求1所述的设备,其特征在于,所述适配包括将编译指示语句插入到所述指令中。
8.至少一种计算机可读存储介质,包括指令,所述指令在被执行时使至少一个处理器至少:
从与指令储存库中的代码相关联的执行简档中检测执行模式;
基于所述执行模式来标识可应用于所述代码的可能的适配;
执行机器学习模型以预测所述适配的预期的性能改善;
确定所述预期的性能改善是否满足改善阈值;
响应于所述确定所述预期的性能改善满足所述改善阈值而对所述代码应用所述可能的适配。
9.如权利要求8的所述的至少一个计算机可读存储介质,其特征在于,从服务器中访问执行模式,所述服务器用于在作为服务环境的函数中操作。
10.如权利要求8所述的至少一个计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器确定所述预期的性能改善的预测置信度,并响应于对所述预测置信度满足置信度阈值的确定而应用所述可能的适配。
11.如权利要求8所述的至少一个计算机可读存储介质,其特征在于,所述指令在被执行时使所述至少一个处理器用于向与所述代码相关联的开发者通知所述可能的适配。
12.如权利要求11所述的至少一个计算机可读存储介质,其特征在于,所述指令被执行时使所述至少一个处理器用于响应于来自所述开发者的指令而应用所述可能的适配。
13.如权利要求8所述的至少一个计算机可读存储介质,其特征在于,所述适配包括将编译指示语句插入所述代码中。
14.一种用于推荐指令适配以改善计算性能的方法,所述方法包括:
从由服务器提供的执行简档中检测执行模式,所述执行简档与存储在指令储存库中的指令相关联;
标识可应用于所述指令的与所述执行模式相关联的可能的指令适配;
使用机器学习模型预测所述适配的预期的性能改善;
确定所述预期的性能改善是否满足阈值;以及
响应于确定所述预期的性能改善满足所述阈值而将所述可能的指令适配应用于所述指令。
15.如权利要求14所述的方法,其特征在于,所述服务器用于在作为服务环境的函数中操作。
16.如权利要求14所述的方法,进一步包括确定所述预期的性能改善的置信度,以及响应于对所述置信度满足置信阈值的确定,进一步执行应用所述可能的指令适配。
17.如权利要求14所述的方法,进一步包括向与所述指令相关联的开发者通知所述可能的适配。
18.如权利要求17所述的方法,其特征在于,响应于来自所述开发者的指令进一步执行应用所述可能的指令适配。
19.如权利要求14所述的方法,其特征在于,所述适配包括将编译指示语句插入到所述指令中。
20.一种用于推荐指令适配以改善计算性能的设备,所述设备包括:
用于从由服务器提供的执行简档中检测执行模式的装置,所述执行简档与存储在指令储存库中的代码相关联;
用于标识可应用于所述代码的与所述执行模式相关联的可能的指令适配的装置;
用于使用机器学习模型预测所述适配的预期的性能改善的装置;
用于确定所述预期的性能改善是否满足阈值的装置;
用于响应于确定所述预期的性能改善满足所述阈值而将所述可能的代码适配应用于所述代码的装置。
21.如权利要求20所述的设备,其特征在于,所述服务器用于在作为服务环境的函数中操作。
22.如权利要求20所述的设备,其特征在于,所述用于预测的装置进一步用于确定所述预期的性能改善的置信度,并且所述用于应用的装置用于响应于对所述置信度满足置信度阈值的确定而应用所述适配。
23.如权利要求20所述的设备,进一步包括用于向与所述指令相关联的开发者通知所述可能的适配的装置。
24.如权利要求23所述的设备,其特征在于,所述用于应用的装置进一步用于响应于来自所述开发者的指令而应用所述代码适配。
25.如权利要求20所述的设备,其特征在于,所述适配包括将编译指示语句插入到所述代码中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/455,259 US11340874B2 (en) | 2019-06-27 | 2019-06-27 | Methods and apparatus to recommend instruction adaptations to improve compute performance |
US16/455,259 | 2019-06-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148282A true CN112148282A (zh) | 2020-12-29 |
Family
ID=68161797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010227504.2A Pending CN112148282A (zh) | 2019-06-27 | 2020-03-27 | 用于推荐指令适配以改善计算性能的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11340874B2 (zh) |
CN (1) | CN112148282A (zh) |
DE (1) | DE102020108281A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11301226B2 (en) * | 2019-11-05 | 2022-04-12 | Dell Products L.P. | Enterprise deployment framework with artificial intelligence/machine learning |
GB2589900B (en) * | 2019-12-12 | 2022-06-01 | Sony Interactive Entertainment Inc | Apparatus and method for source code optimisation |
US20220343770A1 (en) * | 2021-04-27 | 2022-10-27 | Rockwell Collins, Inc. | Machine-learned operating system and processor |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7954094B2 (en) * | 2006-03-27 | 2011-05-31 | International Business Machines Corporation | Method for improving performance of executable code |
US8782613B2 (en) * | 2008-08-12 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | Optimizing applications using source code patterns and performance analysis |
US8918770B2 (en) * | 2011-08-25 | 2014-12-23 | Nec Laboratories America, Inc. | Compiler for X86-based many-core coprocessors |
WO2013115786A1 (en) * | 2012-01-31 | 2013-08-08 | Hewlett-Packard Development Company L.P. | Continuous deployment of code changes |
US9298438B2 (en) * | 2012-06-20 | 2016-03-29 | Microsoft Technology Licensing, Llc | Profiling application code to identify code portions for FPGA implementation |
US10613844B2 (en) * | 2017-11-10 | 2020-04-07 | International Business Machines Corporation | Using comments of a program to provide optimizations |
US10754645B2 (en) * | 2018-03-02 | 2020-08-25 | Microsoft Technology Licensing, Llc | Displaying results of a codebase analysis service |
-
2019
- 2019-06-27 US US16/455,259 patent/US11340874B2/en active Active
-
2020
- 2020-03-25 DE DE102020108281.9A patent/DE102020108281A1/de active Pending
- 2020-03-27 CN CN202010227504.2A patent/CN112148282A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11340874B2 (en) | 2022-05-24 |
DE102020108281A8 (de) | 2021-05-12 |
DE102020108281A1 (de) | 2020-12-31 |
US20190317737A1 (en) | 2019-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230342196A1 (en) | Methods and apparatus to optimize workflows | |
US11941400B2 (en) | Methods and apparatus for intentional programming for heterogeneous systems | |
US11157384B2 (en) | Methods, systems, articles of manufacture and apparatus for code review assistance for dynamically typed languages | |
US20200334544A1 (en) | Method, device and computer program product for processing machine learning model | |
US20190317880A1 (en) | Methods and apparatus to improve runtime performance of software executing on a heterogeneous system | |
US10908884B2 (en) | Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system | |
CN112148282A (zh) | 用于推荐指令适配以改善计算性能的方法和装置 | |
US20090049421A1 (en) | Automatic and transparent memoization | |
US11762649B2 (en) | Intelligent generation and management of estimates for application of updates to a computing device | |
US9430203B2 (en) | Information processing apparatus and compilation method | |
Ogilvie et al. | Fast automatic heuristic construction using active learning | |
US8578355B1 (en) | Scenario based optimization | |
US20230128680A1 (en) | Methods and apparatus to provide machine assisted programming | |
US20190325316A1 (en) | Apparatus and methods for program synthesis using genetic algorithms | |
CN112149117A (zh) | 用于分析计算机系统攻击机制的方法和装置 | |
US11720676B2 (en) | Methods and apparatus to create malware detection rules | |
US20190317734A1 (en) | Methods, systems, articles of manufacture and apparatus to improve code characteristics | |
US20210232969A1 (en) | Methods and apparatus to process a machine learning model in a multi-process web browser environment | |
US11934533B2 (en) | Detection of supply chain-related security threats to software applications | |
US11188324B2 (en) | Methods, systems, and articles of manufacture to perform heterogeneous data structure selection via programmer annotations | |
US20220114136A1 (en) | Methods, systems, and apparatus to reconfigure a computer | |
US20230237384A1 (en) | Methods and apparatus to implement a random forest |
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 |