CN111813533A - 模型实例化的动态管理方法和装置及存储介质 - Google Patents
模型实例化的动态管理方法和装置及存储介质 Download PDFInfo
- Publication number
- CN111813533A CN111813533A CN202010950669.2A CN202010950669A CN111813533A CN 111813533 A CN111813533 A CN 111813533A CN 202010950669 A CN202010950669 A CN 202010950669A CN 111813533 A CN111813533 A CN 111813533A
- Authority
- CN
- China
- Prior art keywords
- model
- thread
- instance
- time
- exists
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种人工智能场景下的模型实例化的动态管理方法和装置及存储介质,具体的,还涉及机械学习中的深度学习等技术。其中,该方法包括:在通过第一线程和第二线程第一次判断出不存在第一模型的实例,对第一模型设置第一对象锁;通过第一线程第二次判断是否存在第一模型的实例,在通过第一线程第二次判断不存在第一模型的实例的情况下,通过第一线程创建第一模型的第一实例;通过第二线程第二次判断是否存在第一模型的实例,在通过第二线程第二次判断存在第一实例的情况下,通过第二线程获取第一实例。本发明解决了模型实例化的动态管理效率较低的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种模型实例化的动态管理方法和装置及存储介质。
背景技术
近年深度学习的飞速发展,引发了对更加合理的实例化方法的强烈需求。近年来深度学习在多种场景下获得了引人注目的成就,比如图像识别、自然语言处理、推荐***。随着应用的广泛,工业界和学术界的深度学习模型出现两大趋势,模型种类越来越多,模型参数越来越多。
那么如此多,如此大的模型,要怎么实例化,然后在线提供服务呢。现有的普遍方法是单例(Singleton Pattern)。单例确实是一种简单直观的实例化方法,常用于实例化某种创建开销比较大的对象,如连接数据库的客户端等。但是单例的问题也很尖锐,尤其是应用于深度学习的在线服务时,面对短时间内产生的大量服务请求,进而导致多种相同模型建立多个单例,即浪费了***的存储空间,又拉低了模型实例化的动态管理效率。因此,存在模型实例化的动态管理效率较低的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种模型实例化的动态管理方法和装置及存储介质,以至少解决模型实例化的动态管理效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种模型实例化的动态管理方法,包括:获取第一服务请求和第二服务请求,其中,上述第一服务请求和上述第二服务请求用于请求在线提供的目标服务;响应于上述第一服务请求,使用第一线程请求调用第一模型,响应于上述第二服务请求,使用第二线程请求调用上述第一模型,其中,上述第一模型为在线提供上述目标服务的模型;在通过上述第一线程和上述第二线程第一次判断出不存在上述第一模型的实例,对上述第一模型设置第一对象锁,其中上述第一对象锁用于将上述第一线程和上述第二线程设置为串行工作,在上述串行工作下上述第一线程优先于上述第二线程工作;通过上述第一线程第二次判断是否存在上述第一模型的实例,在通过上述第一线程第二次判断不存在上述第一模型的实例的情况下,通过上述第一线程创建上述第一模型的第一实例;通过上述第二线程第二次判断是否存在上述第一模型的实例,在通过上述第二线程第二次判断存在上述第一实例的情况下,通过上述第二线程获取上述第一实例。
根据本发明实施例的另一方面,还提供了一种模型实例化的动态管理装置,包括:第一获取单元,用于获取第一服务请求和第二服务请求,其中,上述第一服务请求和上述第二服务请求用于请求在线提供的目标服务;响应单元,用于响应于上述第一服务请求,使用第一线程请求调用第一模型,响应于上述第二服务请求,使用第二线程请求调用上述第一模型,其中,上述第一模型为在线提供上述目标服务的模型;第一判断单元,用于在通过上述第一线程和上述第二线程第一次判断出不存在上述第一模型的实例,对上述第一模型设置第一对象锁,其中上述第一对象锁用于将上述第一线程和上述第二线程设置为串行工作,在上述串行工作下上述第一线程优先于上述第二线程工作;第二判断单元,用于通过上述第一线程第二次判断是否存在上述第一模型的实例,在通过上述第一线程第二次判断不存在上述第一模型的实例的情况下,通过上述第一线程创建上述第一模型的第一实例;第二获取单元,用于通过上述第二线程第二次判断是否存在上述第一模型的实例,在通过上述第二线程第二次判断存在上述第一实例的情况下,通过上述第二线程获取上述第一实例。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述模型实例化的动态管理方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的模型实例化的动态管理方法。
在本发明实施例中,获取第一服务请求和第二服务请求,其中,上述第一服务请求和上述第二服务请求用于请求在线提供的目标服务;响应于上述第一服务请求,使用第一线程请求调用第一模型,响应于上述第二服务请求,使用第二线程请求调用上述第一模型,其中,上述第一模型为在线提供上述目标服务的模型;在通过上述第一线程和上述第二线程第一次判断出不存在上述第一模型的实例,对上述第一模型设置第一对象锁,其中上述第一对象锁用于将上述第一线程和上述第二线程设置为串行工作,在上述串行工作下上述第一线程优先于上述第二线程工作;通过上述第一线程第二次判断是否存在上述第一模型的实例,在通过上述第一线程第二次判断不存在上述第一模型的实例的情况下,通过上述第一线程创建上述第一模型的第一实例;通过上述第二线程第二次判断是否存在上述第一模型的实例,在通过上述第二线程第二次判断存在上述第一实例的情况下,通过上述第二线程获取上述第一实例,通过在第一线程和第二线程均请求调用第一模型情况下,利用串行工作的方式,以使得第一线程和第二线程在请求调用同一模型的情况下,不会重复创建第一模型的实例,进而达到了减少模型实例化的动态管理过程中实例的重复创建的目的,从而实现了提高模型实例化的动态管理效率的技术效果,进而解决了模型实例化的动态管理效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的模型实例化的动态管理方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的模型实例化的动态管理方法的流程图的示意图;
图3是根据本发明实施例的一种可选的模型实例化的动态管理方法的示意图;
图4是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图5是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图6是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图7是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图8是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图9是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图10是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图11是根据本发明实施例的另一种可选的模型实例化的动态管理方法的示意图;
图12是根据本发明实施例的一种可选的模型实例化的动态管理装置的示意图;
图13是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
人工智能(Artificial Intelligence,简称AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
机器学习(Machine Learning,简称ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
深度学习(deep learning):是机器学习的分支,是一种以人工神经网络为架构,对数据表征进行学习的技术。
GBDT:梯度提升树,是一种用于回归和分类问题的机器学习技术,可用于推荐***中的点击率预估。
LR:逻辑回归,是一种主要用于分类问题的机器学习技术,可用于推荐***中的点击率预估。
GBDT+LR:将梯度提升树和逻辑回归有机结合,结合逻辑回归的快速更新,和梯度提升树的准确性,提升实际效果,常用于推荐***中的点击率预估。
FM(Factorization Machine):一种常用于推荐***点击率预估的算法,主要解决了数据稀疏的情况下,特征组合的问题。
DeepFM:兼顾特征组合和精确预测的模型,主要用于推荐***点击率预估,其实就是FM算法和人工神经网络技术的结合,模型分两部分,FM部分和FM算法一致,Deep部分则主要是多个全连接层构成的神经网络。
DeepCrossing:和DeepFM类似,也是兼顾特征组合和精确预测的模型,主要用于推荐***点击率预估,不同的是Deep Crossing并没有采用显式交叉特征的方式,而是利用残差网络结构挖掘特征间的关系。
模型实例化:读取模型的配置和模型文件,创建模型对象,然后提供模型的预测能力。是模型提供在线服务的比较步骤。
根据本发明实施例的一个方面,提供了一种模型实例化的动态管理方法,可选地,作为一种可选的实施方式,上述模型实例化的动态管理方法可以但不限于应用于如图1所示的环境中。其中,可以但不限于包括用户设备102-1用户设备102-2、网络110及服务器112,其中,该用户设备102-1上可以但不限于包括显示器108-1、处理器106-1及存储器104-1,显示器108-1可以但不限用于显示图1所示文字“请选择输入第一模型的文件”所在的界面,上述文字“请选择输入第一模型的文件”所在的界面可以但不限用于表示“深度学习模型在线服务”的选择界面,通过上述选择界面,可以但不限于选择输入深度学习模型(第一模型)的文件(例如文件C),其中,深度学习模型可以但不限于有多种,第一模型可以但不限于在其他界面中以同样的方式被选择的模型,该有用户设备102-1与用户设备102-1同理,在此不做多余阐述。
具体过程可如下步骤:
步骤S102-1、步骤S102-2,在短时间内,用户设备102-1与用户设备102-2在相同网址(例如图中所示的“www.abc.com”)的页面上分别获取第一服务请求和第二服务请求,其中第一服务请求用于表示请求在线提供待输入的第一模型(图中未示出),以及待输入第一模型的输入数据为文件C,第二服务请求用于表示请求在线提供待输入的第一模型(图中未示出),以及待输入第一模型的输入数据为文件F;
步骤S104-S106,用户设备102通过网络110将第一服务请求以及第二服务请求发送给服务器112,可选的,第一服务请求以及第二服务请求也可以但不限于通过两个网络分别发送,在此不做限定;
步骤S108,服务器112通过处理引擎116将根据第一服务请求调用第一线程,以及根据第二服务请求调用第二线程,并在通过第一线程第一次判断出不存在第一模型的实例、且通过第二线程第一次判断出不存在第一模型的实例的情况下,对第一模型设置第一对象锁,其中,第一对象锁用于将第一线程和第二线程设置为串行工作,在串行工作下第一线程优先于第二线程工作;
步骤S110,服务器112通过第一线程第二次判断是否存在第一模型的实例,在通过第一线程第二次判断不存在第一模型的实例的情况下,通过第一线程创建第一模型的第一实例;
步骤S112,服务器112通过第二线程第二次判断是否存在第一模型的实例,在通过第二线程第二次判断存在第一实例的情况下,通过第二线程获取第一实例;
步骤S114,服务器112通过处理引擎116根据第一服务请求以及第一实例获取第一输出结果,以及根据第二服务请求以及第一实例获取第二输出结果;
步骤S116-S118,服务器112通过网络110将第一输出结果以及第二输出结果分别发送给用户设备102,用户设备102-1中的处理器106-1将第一输出结果显示在显示器108-1中,并将第一输出结果存储在存储器104中,用户设备102-2同理。可选的,第一输出结果以及第二输出结果也可以但不限于通过两个网络分别发送,在此不做限定。
可选地,作为一种可选的实施方式,如图2所示,模型实例化的动态管理方法包括:
S202,获取第一服务请求和第二服务请求,其中,第一服务请求和第二服务请求用于请求在线提供的目标服务;
S204,响应于第一服务请求,使用第一线程请求调用第一模型,响应于第二服务请求,使用第二线程请求调用第一模型,其中,第一模型为在线提供目标服务的模型;
S206,在通过第一线程和第二线程第一次判断出不存在第一模型的实例,对第一模型设置第一对象锁,其中第一对象锁用于将第一线程和第二线程设置为串行工作,在串行工作下第一线程优先于第二线程工作;
S208,通过第一线程第二次判断是否存在第一模型的实例,在通过第一线程第二次判断不存在第一模型的实例的情况下,通过第一线程创建第一模型的第一实例;
S210,通过第二线程第二次判断是否存在第一模型的实例,在通过第二线程第二次判断存在第一实例的情况下,通过第二线程获取第一实例。
可选的,模型实例化的动态管理方法可以但不限应用在深度学习在线服务或模型提供在线服务的应用场景下。线程可以但不限于为操作***能够进行运算调度的最小单位,被包含在进程中,是进程中的实际运作单元,可选的,一条线程指的是进程中一个单一顺序的控制流。模型可以但不限于为多种应用场景下的深度学习模型,例如应用在搜索技术、数据挖掘、机械学习、机械翻译、自然语言处理、图像识别、多媒体学习、语音识别、推荐***和个性化技术等场景下的深度学习模型。设置为串行工作可以但不限用于表示设置为按执行优先级顺序执行工作,其中,串行工作中的执行优先级可以但不限于依据线程的调用时间,还可以但不限于人工设置。对象锁可以但不限用于表示请求调用第一模型的皆被设置为串行工作。
需要说明的是,获取第一服务请求和第二服务请求,其中,第一服务请求和第二服务请求用于请求在线提供的目标服务;响应于第一服务请求,使用第一线程请求调用第一模型,响应于第二服务请求,使用第二线程请求调用第一模型,其中,第一模型为在线提供目标服务的模型;在通过第一线程和第二线程第一次判断出不存在第一模型的实例,对第一模型设置第一对象锁,其中第一对象锁用于将第一线程和第二线程设置为串行工作,在串行工作下第一线程优先于第二线程工作;通过第一线程第二次判断是否存在第一模型的实例,在通过第一线程第二次判断不存在第一模型的实例的情况下,通过第一线程创建第一模型的第一实例;通过第二线程第二次判断是否存在第一模型的实例,在通过第二线程第二次判断存在第一实例的情况下,通过第二线程获取第一实例。
进一步举例说明,可选的例如图3所示,包括同一目标网址302下但在不同客户端上显示的第一页面304以及第二页面306,其中,第一页面304以及第二页面306都用于确定导入第一模型的文件,在第一页面304上获取导入第一模型的文件为“文件C”以及在第二页面306上获取导入第一模型的文件为“文件F”之后的具体步骤如下:
步骤S302-1,第一线程调用第一模型;
步骤S302-2,第二线程执行的调用第一模型;
步骤S304-1,第一线程判断第一模型的实例是否存在,在是的情况下,执行步骤S316,是否的情况下,执行步骤S306
步骤S304-2,第二线程判断第一模型的实例是否存在,在是的情况下,执行步骤S314,是否的情况下,执行步骤S306;
步骤S306,对第一模型设置第一对象锁;
可选的,利用设置在第一模型上的第一对象锁,将第一线程和第二线程创建或获取第一模型的实例的工作设置为串行工作,例如先执行步骤S308,第一线程判断第一模型的实例是否存在,在是的情况下,执行步骤S316,在否的情况下,执行步骤S310;
步骤S310,第一线程创建第一模型的实例;
再执行步骤S312,第二线程判断第一模型的实例是否存在,在是的情况下,执行步骤S314,此外,因可能发生非正常时间,以使得在步骤S310建立的实例丢失,则通过在否的情况下,执行步骤S310,以重新建立实例;
步骤S314,因第一线程已创建第一模型的实例,进而第一模型的实例存在,在此情况下,第二线程302无需再次创建第一模型的实例,仅需获取第一模型的实例;
步骤S316,第一线程获取已存在的第一模型的实例。
通过本申请提供的实施例,获取第一服务请求和第二服务请求,其中,第一服务请求和第二服务请求用于请求在线提供的目标服务;响应于第一服务请求,使用第一线程请求调用第一模型,响应于第二服务请求,使用第二线程请求调用第一模型,其中,第一模型为在线提供目标服务的模型;在通过第一线程和第二线程第一次判断出不存在第一模型的实例,对第一模型设置第一对象锁,其中第一对象锁用于将第一线程和第二线程设置为串行工作,在串行工作下第一线程优先于第二线程工作;通过第一线程第二次判断是否存在第一模型的实例,在通过第一线程第二次判断不存在第一模型的实例的情况下,通过第一线程创建第一模型的第一实例;通过第二线程第二次判断是否存在第一模型的实例,在通过第二线程第二次判断存在第一实例的情况下,通过第二线程获取第一实例,通过在第一线程和第二线程均请求调用第一模型情况下,利用串行工作的方式,以使得第一线程和第二线程在请求调用同一模型的情况下,不会重复创建第一模型的实例,进而达到了减少模型实例化的动态管理过程中实例的重复创建的目的,从而实现了提高模型实例化的动态管理效率的技术效果。
作为一种可选的方案,方法还包括:
在第一线程和第二线程被设置为串行工作、第三线程请求调用第二模型的情况下,通过第三线程第一次判断是否存在第二模型的实例,其中,第二模型为在线提供服务的模型,第三线程被设置为与第一线程和第二线程并行工作。
需要说明的是,第一线程和第二线程被设置为串行工作、第三线程请求调用第二模型的情况下,通过第三线程第一次判断是否存在第二模型的实例,其中,第二模型为在线提供服务的模型,第三线程被设置为与第一线程和第二线程并行工作。
进一步举例说明,可选的例如图4所示,包括第一线程402、第二线程404以及第三线程406,其中,第一线程402以及第二线程404用于请求调用第一模型408,第三线程402用于请求调用第二模型410,在第一模型被设置对象锁412的情况下,用于请求调用第一模型408的第一线程402以及第二线程404将串行工作,而用于请求调用第二模型410的第三线程402则不受影响,与串行工作的第一线程402以及第二线程404呈现并行工作的关系。
通过本申请提供的实施例,第一线程和第二线程被设置为串行工作、第三线程请求调用第二模型的情况下,通过第三线程第一次判断是否存在第二模型的实例,其中,第二模型为在线提供服务的模型,第三线程被设置为与第一线程和第二线程并行工作,通过在多个不同模型同时被调用的场景下,无需相互等待,达到了加快模型实例的创建速度的目的,实现了提高用于***的运行速度的效果。
作为一种可选的方案,方法包括:
S1,在第三线程和第四线程均请求调用第二模型的情况下,通过第四线程第一次判断是否存在第二模型的实例,其中,第四线程被设置为与第一线程和第二线程并行工作;
S2,在通过第三线程第一次判断出不存在第二模型的实例、且通过第四线程第一次判断出不存在第二模型的实例的情况下,对第二模型设置第二对象锁,其中,第二对象锁用于将第三线程和第四线程设置为串行工作,在串行工作下第三线程优先于第四线程工作;
S3,通过第三线程第二次判断是否存在第二模型的实例,在通过第三线程第二次判断不存在第二模型的实例的情况下,通过第三线程创建第二模型的第二实例;
S4,通过第四线程第二次判断是否存在第二模型的实例,在通过第四线程第二次判断存在第二实例的情况下,通过第四线程获取第二实例。
需要说明的是,在第三线程和第四线程均请求调用第二模型的情况下,通过第四线程第一次判断是否存在第二模型的实例,其中,第四线程被设置为与第一线程和第二线程并行工作;在通过第三线程第一次判断出不存在第二模型的实例、且通过第四线程第一次判断出不存在第二模型的实例的情况下,对第二模型设置第二对象锁,其中,第二对象锁用于将第三线程和第四线程设置为串行工作,在串行工作下第三线程优先于第四线程工作;通过第三线程第二次判断是否存在第二模型的实例,在通过第三线程第二次判断不存在第二模型的实例的情况下,通过第三线程创建第二模型的第二实例;通过第四线程第二次判断是否存在第二模型的实例,在通过第四线程第二次判断存在第二实例的情况下,通过第四线程获取第二实例。
进一步举例说明,可选的例如图5所示,包括第四线程502,其中,第四线程502用于请求调用第二模型410,在第二模型410被设置对象锁504的情况下,第四线程502与第三线程402将串行工作。
通过本申请提供的实施例,在第三线程和第四线程均请求调用第二模型的情况下,通过第四线程第一次判断是否存在第二模型的实例,其中,第四线程被设置为与第一线程和第二线程并行工作;在通过第三线程第一次判断出不存在第二模型的实例、且通过第四线程第一次判断出不存在第二模型的实例的情况下,对第二模型设置第二对象锁,其中,第二对象锁用于将第三线程和第四线程设置为串行工作,在串行工作下第三线程优先于第四线程工作;通过第三线程第二次判断是否存在第二模型的实例,在通过第三线程第二次判断不存在第二模型的实例的情况下,通过第三线程创建第二模型的第二实例;通过第四线程第二次判断是否存在第二模型的实例,在通过第四线程第二次判断存在第二实例的情况下,通过第四线程获取第二实例,利用为不同的模型设置不同的对象锁的方式,达到了用于请求相同和/或不同类型模型实例的线程同时工作的目的,实现了提高线程请求调用模型的效率的效果。
作为一种可选的方案,在响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型之前,方法还包括:
获取第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一实例。
需要说明的是,获取第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一实例。可选的,配置信息可以但不限于为建立模型实例的必要配置,例如模型文件的路径。
进一步举例说明,可选的例如图6所示,包括第一模型的第一配置信息602和第一模型的第一模型文件604,其中,第一配置信息602与第一模型文件604皆在根据第一模型创建第一实例606之前获取。
通过本申请提供的实施例,获取第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一实例,达到了在即将创建模型实例的情况下,就准备好了创建所需的配置的目的,实现了提高模型实例创建的效率的效果。
作为一种可选的方案,方法还包括:
S1,定时检测第一模型的配置信息和模型文件是否发生更新;
S2,在检测到第一模型的配置信息发生更新的情况下,获取第一模型的第二配置信息,其中,第一模型的最新配置信息由第一配置信息替换为第二配置信息;
S3,在检测到第一模型的模型文件发生更新的情况下,获取第一模型的第二模型文件,其中,第一模型的最新模型文件由第一模型文件替换为第二模型文件;
S4,在第一模型的配置信息或第一模型的模型文件发生更新的情况下,删除第一实例。
需要说明的是,定时检测第一模型的配置信息和模型文件是否发生更新;在检测到第一模型的配置信息发生更新的情况下,获取第一模型的第二配置信息,其中,第一模型的最新配置信息由第一配置信息替换为第二配置信息;在检测到第一模型的模型文件发生更新的情况下,获取第一模型的第二模型文件,其中,第一模型的最新模型文件由第一模型文件替换为第二模型文件;在第一模型的配置信息或第一模型的模型文件发生更新的情况下,删除第一实例。
进一步举例说明,可选的例如图7所示,包括第一模型702,其中,第一模型702中的配置信息与模型文件皆发生更新,进而将第一模型702中的第一配置信息704以及第一模型文件706分别更新(双向箭头)为第二配置信息710以及第二模型文件708,并删除(×表示删除)当时根据第一配置信息704以及第一模型文件706的第一模型702建立的第一实例712(虚线箭头表示非当前操作)。
通过本申请提供的实施例,定时检测第一模型的配置信息和模型文件是否发生更新;在检测到第一模型的配置信息发生更新的情况下,获取第一模型的第二配置信息,其中,第一模型的最新配置信息由第一配置信息替换为第二配置信息;在检测到第一模型的模型文件发生更新的情况下,获取第一模型的第二模型文件,其中,第一模型的最新模型文件由第一模型文件替换为第二模型文件;在第一模型的配置信息或第一模型的模型文件发生更新的情况下,删除第一实例,达到了及时更新模型的配置信息以及模型文件,并删除根据陈旧配置信息以及模型文件建立的实例的目的,实现了提高模型更新的及时性以及减少***存储压力的效果。
作为一种可选的方案,在删除第一实例之后,方法还包括:
S1,在第五线程和第六线程均请求调用第一模型的情况下,通过第五线程第一次判断是否存在第一模型的实例,并通过第六线程第一次判断是否存在第一模型的实例;
S2,在通过第五线程第一次判断出不存在第一模型的实例、且通过第六线程第一次判断出不存在第一模型的实例的情况下,对第一模型设置第一对象锁,其中,第一对象锁用于将第五线程和第六线程设置为串行工作,在串行工作下第五线程优先于第六线程工作;
S3,通过第五线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断不存在第一模型的实例的情况下,通过第五线程根据第一模型的最新配置信息和最新模型文件创建第一模型的第三实例;
S4,通过第六线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断存在第三实例的情况下,通过第六线程获取第三实例。
需要说明的是,在第五线程和第六线程均请求调用第一模型的情况下,通过第五线程第一次判断是否存在第一模型的实例,并通过第六线程第一次判断是否存在第一模型的实例;在通过第五线程第一次判断出不存在第一模型的实例、且通过第六线程第一次判断出不存在第一模型的实例的情况下,对第一模型设置第一对象锁,其中,第一对象锁用于将第五线程和第六线程设置为串行工作,在串行工作下第五线程优先于第六线程工作;通过第五线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断不存在第一模型的实例的情况下,通过第五线程根据第一模型的最新配置信息和最新模型文件创建第一模型的第三实例;通过第六线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断存在第三实例的情况下,通过第六线程获取第三实例。
进一步举例说明,可选的例如图8所示,包括第五线程802以及第六线程804,其中,第五线程802以及第六线程804皆用于请求调用第一模型702;进一步,因第五线程802以及第六线程804皆用于请求调用第一模型702,为第一模型702设置对象锁806,其中,对象锁806用于将第五线程802以及第六线程804设置为串行工作,具体的,第五线程802先执行建立或获取第一模型702的实例的工作,第六线程804在此之后;进一步,因已删除了当时根据第一配置信息704以及第一模型文件706的第一模型702建立的第一实例712,进而第一模型702不存在的已有实例,从而第五线程802无法直接获取第一模型702不存在的已有实例;进一步,第五线程802根据第一模型702当前的第二配置信息710以及第二模型文件708创建第一模型702的第二实例808;进一步,在第六线程804执行建立或获取的工作时,已有第五线程802根据第一模型702当前的第二配置信息710以及第二模型文件708创建第一模型702的第二实例808,进而第六线程804直接获取第二实例808。
通过本申请提供的实施例,在第五线程和第六线程均请求调用第一模型的情况下,通过第五线程第一次判断是否存在第一模型的实例,并通过第六线程第一次判断是否存在第一模型的实例;在通过第五线程第一次判断出不存在第一模型的实例、且通过第六线程第一次判断出不存在第一模型的实例的情况下,对第一模型设置第一对象锁,其中,第一对象锁用于将第五线程和第六线程设置为串行工作,在串行工作下第五线程优先于第六线程工作;通过第五线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断不存在第一模型的实例的情况下,通过第五线程根据第一模型的最新配置信息和最新模型文件创建第一模型的第三实例;通过第六线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断存在第三实例的情况下,通过第六线程获取第三实例,达到了在相对复杂的场景下,仍能顺利根据最新的配置信息以及模型文件创建或获取模型实例的目的,实现了模型实例化的动态管理效率的效果。
作为一种可选的方案,方法还包括:
S1,每隔预定的检测周期检测在刚结束的检测周期内第一模型是否被请求调用;
S2,在刚结束的检测周期内第一模型未被请求调用的情况下,删除第一实例。
需要说明的是,每隔预定的检测周期检测在刚结束的检测周期内第一模型是否被请求调用;在刚结束的检测周期内第一模型未被请求调用的情况下,删除第一实例。
进一步举例说明,可选的例如,查询第一模型在t0-t1周期内的调用记录,若该调用记录中并未记录第一模型在t0-t1周期内被调用,或被调用的频率小于预设阈值的情况下,删除根据第一实例,其中,第一实例为根据最近一次调用第一模型时,根据当时第一模型的配置信息以及模型文件建立的实例。
通过本申请提供的实施例,每隔预定的检测周期检测在刚结束的检测周期内第一模型是否被请求调用;在刚结束的检测周期内第一模型未被请求调用的情况下,删除第一实例,通过及时删除根据陈旧配置信息以及模型文件建立的且不常被调用的实例,达到了及时清理***的存储空间的目的,实现了降低***的存储空间压力的效果。
作为一种可选的方案,方法还包括:
在刚结束的检测周期内第一模型未被请求调用的情况下,保留预先获取的第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一模型的实例。
需要说明的是,在刚结束的检测周期内第一模型未被请求调用的情况下,保留预先获取的第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一模型的实例。
进一步举例说明,可选的例如,在刚结束的检测周期内第一模型未被请求调用的情况下,虽然删除了根据第一模型的第一配置信息和第一模型的第一模型文件建立的第一实例,但保留预先获取的第一模型的第一配置信息和第一模型的第一模型文件,以在还需第一实例的情况下,能够以最快的速度基于第一模型的第一配置信息和第一模型的第一模型文件回复第一实例。
通过本申请提供的实施例,在刚结束的检测周期内第一模型未被请求调用的情况下,保留预先获取的第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一模型的实例,达到了在还需第一实例的情况下,能够以最快的速度基于第一模型的第一配置信息和第一模型的第一模型文件回复第一实例的目的,实现了提高模型实例化的动态管理全面性的效果。
作为一种可选的方案,为了方便理解,下面以具体的在线服务推荐***场景下的实施例说明:
进一步举例说明,可选的例如图9所示,包括在线服务推荐***902,其中,在线服务推荐***902包括动态创建模型实例模块904、热加载模型模块906以及定时清理模型实例模块908,具体步骤如下:
步骤S902,输入特征向量至在线服务推荐***902,例如在推荐***场景下,输入特征为用户和物品的相关特征向量;
步骤S904,并行运行动态创建模型实例模块904、热加载模型模块906以及定时清理模型实例模块908,换言之,分别执行步骤S906、步骤S910、S912;
步骤S906,动态创建模型实例模块904在预设时间(例如模型被调用时)读取模型文件,以生成模型实例,具体的,动态创建模型实例模块904首先检测模型实例是否存在,如果模型实例存在,则直接调用模型实例输出模型预测结果,如果模型实例不存在,则执行步骤S908;
步骤S908,建立模型实例,然后调用模型实例输出模型预测结果;
步骤S910,定时清理模型实例模块908首先依次检测模型列表中的模型在上一时间周期内是否有调用,如果有调用,直接退出当前模块,如果没有调用,则在内存中清理模型实例,删除模型文件,之后退出当前模块;
步骤S912,热加载模型模块906在模型新上线,或者是服务刚启动时,准备好模型在调用前所需要的配置和模型文件,结合动态创建模型实例模块904,就能做到模型修改、更新、上线等操作,整个***无需任何改动;具体的,热加载模型模块906首先检测模型是否更新,如果没更新,直接退出当前模块,如果更新了,或者是新模型,就读取模型的配置(比如模型文件的路径、模型的参数),并下载模型文件,之后退出当前模块。
进一步举例说明,可选的例如图9所示的动态创建模型实例模块904,其中,动态创建模型实例模块904可以但不限于包括预读取模型列表,例如类统一建模语言(UnifiedModeling Language,简称UML),包括模型列表(modelMap),其中,模型列表(modelMap)记录的数据是静态变量,一直持有在内存中,例如线上有3个模型在提供服务,比如DeepFM、DeepCrossing、DNN,模型列表中存放的就是1->DeepFM,2-> DeepCrossing,3-> DNN,这时模型列表中的Model变量只包含模型的配置,并且下载相应的文件,并不会创建实例,不会占用内存;
类ModelManager只对外提供一个函数getModelByModelId,当线上调用某个模型时,传入模型id,获取对应的Model变量,值得注意的是,Model对象中不一定有模型实例,但是一定提前通过getModelConfig函数读取好了模型配置,下载好了模型文件;
内部方法getModelConfig主要用于获取模型的配置,下载模型文件,在服务启动时,会开辟一个线程,每过一个时间周期,就会读取重新读取一次配置,保证新模型上线后,过一段时间就能准备好模型的配置和模型文件。
私有变量modelConfig就是在预加载模型列表时获取的模型配置,当预加载模型列表时,模型实例 modelInstance 是null,并没有实例化。
Model类只对外提供了一个函数,predict 当通过模型id获取到Model对象,开始调用predict函数时,会在Model对象内部调用getModelInstance 函数,实例化当前对象的私有变量 modelInstance,然后再提供预测结果。
实例化函数getModelInstance有以下两个关键点:
1、两次判断this.modelInstance == null 确保模型只会被创建一次;
2、对Model对象的this指针加同步锁,即保证了线程安全,又保证了各种不同的模型之间互相隔离。
进一步,为助于理解以上两个关键点的体现,具体的,ModelInstance的volatile属性,确保了模型实例创建之后理解就进入共享内存,避免别的线程再次共享内存。
而双重验证,则是在第一次判断后,多个线程同时获取同一个锁的时候,一旦某一个线程首先创建了实例,后续的线程通过判断,就避免了再次创建实例。
对象锁相对的是类锁,如果synchronized 修饰的是Model.class,那么所有的模型在创建实例时,都是用的同一个锁,需要互相等待,比如DeepFM模型要等到DeepCrossing模型创建完实例,才能开始读取模型创建实例,在模型多达数十个,模型文件较大的时候,等待的时间很长。而对象锁,只有同一个对象之间才使用的是同一个锁,在本模块中,同一个Model对象,对应的是同一个modelId的模型,比如模型1是DeepFM,模型2是DeepCrossing,那么这两个模型是不会互相等待的,并行创建实例,从而大大加快模型实例的创建,提升***的总体速度。
进一步举例说明,可选的例如图9所示的热加载模型模块906,其中,热加载模型模块906可以但不限于用于解决以下问题:
1、新模型上线,服务自动读取配置,下载模型文件,当模型有请求时,快速实例化;
2、当模型的配置更新时,重新读取配置,并且销毁旧的Model对象;
3、当模型文件更新时,重新下载模型文件,并且销毁旧的Model对象。
进一步举例说明,可选的例如图10所示的热加载模型模块的算法执行逻辑如下:
步骤S1002,当程序启动时,启动检测线程;
步骤S1004,检测线程定时循环触发步骤S1006;
步骤S1006,通过配置更新的flag,检测配置是否更新(比如mysql中,可以用update_time),若更新,进入步骤S1008,如果没更新,进入步骤S1010;
步骤S1008,重新读取模型配置,进入步骤S1010;
步骤S1010,若本次循环中,重新读取过模型配置,或者重新下载过模型文件,都要销毁模型(Model)对象,并进入步骤S1004,等待触发下一次检测。
可选的,在上述步骤S1010中,销毁Model对象时,模型实例也一并被销毁了,这时,如果持续有模型的调用,会再触发一次动态创建模型实例模块,获取新的模型实例,对于调用方是无感知的,因此实现了模型的热加载,在模型配置、文件有改动,或者上线新模型时,程序能够自动准备好相应的Model对象,等待调用。
进一步举例说明,可选的例如在图9所示的定时清理模型实例模块908中,检测线程会定时检测模型在上一周期内是否有调用,比如周期是1小时,检测线程每1小时会检测一下模型是否有调用,如果在上1小时,某个模型没有被调用,那么就会清理该modelInstance,但是会保留模型配置和模型文件。清理模型实例之后,再有调用的话,就重新触发动态创建模型实例模块904,获取新的模型实例。可以说,动态创建模型实例模块904的设计,有效简化了热加载模型模块908和定时清理模型实例模块906的实现。
进一步举例说明,可选的例如图11所示,包括在程序执行过程中,可选的为不同的客户端调用的线程A1102以及线程B1104,其中,线程A1102以及线程B1104可以但不限都用于调用模型A,具体步骤如下:
S1102,在目标网址的页面触发程序的启动,其中,程序可以但不限用于调用或创建模型实例;
需要说明的是,在图11所示的场景下,线程A1102与线程B1104几乎是同时以并行方式进行,为阐述清楚,下面分别基于线程A11022与线程B1104进行说明,首先,基于线程A11022执行以下步骤:
S1104-1,调用模型A;
S1106-1,判断实例是否存在,若不存在,则执行步骤S1108-1(因在图11所示的场景下,假设实例是不存在,为减少冗余阐述,此处不再说明实例存在的执行步骤);
S1108-1,获取对象锁;
同时,基于线程B1104执行以下步骤:
S1104-2,调用模型A;
S1106-2,判断实例是否存在,若不存在,则执行步骤S1108-2(因在图11所示的场景下,假设实例是不存在,为减少冗余阐述,此处不再说明实例存在的执行步骤);
S1108-2,获取对象锁;
其中,需要说明的是,以上获取的对象锁为相同对象锁,可选的对象锁相对的是类锁,如果synchronized 修饰的是Model.class,那么所有的模型在创建实例时,都是用的同一个锁,需要互相等待,比如DeepFM模型要等到DeepCrossing模型创建完实例,才能开始读取模型创建实例,在模型多达数十个,模型文件较大的时候,等待的时间很长。而对象锁,只有同一个对象之间才使用的是同一个锁,在本场景下,同一个Model对象,对应的是同一个modelId的模型,比如模型A是DeepFM,模型B是DeepCrossing,那么这两个模型是不会互相等待的,并行创建实例,从而大大加快模型实例的创建,提升***的总体速度;
进一步,以下步骤以串行方式执行:
S1110,判断实例是否存在,若存在,则执行步骤S1114,若不存在,则执行步骤S1112;
S1112,创建实例;
S1114,释放对象锁,其中,释放对象锁的前提在于实例存在并共享,具体的,由于模型A的volatile 属性,确保了模型实例创建之后立即就进入共享内存,进而避免别的线程再次共享内存;
S1116,判断实例是否存在,若存在,则执行步骤S1118(因在步骤S1114中,释放对象锁的前提就是存在实例,进而在步骤S1116中,若不考虑其他非正常因素,实例是必然存在的,为避免冗余阐述,在此不考虑实例不存在的步骤);
S1118,释放对象锁;
S1120,获得实例,其中,因实例在前一个线程A1102创建了,后续的线程B1104仅需通过判断,就避免了再次创建实例的冗余步骤,从而大大加快模型实例的创建,提升***的总体速度。
通过本申请提供的实施例,既能避免重复创建模型实例,又能及时销毁模型实例,且实例是唯一的,也会在模型被下线时自动销毁,实现了实例的动态扩展,既能每个实例都是唯一的,又可以创建多种不同的模型实例,此外,还提出一种双重锁定的对象锁模式,既保证了同一类型的模型的线程安全,又保证了不同类型的模型可以并行实例化,兼顾了单一性和隔离性,基于动态创建模型实例模块,还实现了模型的热加载和模型实例的定时清理,在新模型上线、旧模型下线,或者是修改了模型配置,或者是更新了模型文件时,在线程序都能自动的创建或者销毁实例,不需要额外的工作,使得在线服务推荐***场景下的程序稳定易用。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述模型实例化的动态管理方法的模型实例化的动态管理装置。如图12所示,该装置包括:
第一获取单元1202,用于获取第一服务请求和第二服务请求,其中,所述第一服务请求和所述第二服务请求用于请求在线提供的目标服务;
响应单元1204,用于响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型,其中,所述第一模型为在线提供所述目标服务的模型;
第一判断单元1206,用于在通过所述第一线程和所述第二线程第一次判断出不存在所述第一模型的实例,对所述第一模型设置第一对象锁,其中所述第一对象锁用于将所述第一线程和所述第二线程设置为串行工作,在所述串行工作下所述第一线程优先于所述第二线程工作;
第二判断单元1208,用于通过所述第一线程第二次判断是否存在所述第一模型的实例,在通过所述第一线程第二次判断不存在所述第一模型的实例的情况下,通过所述第一线程创建所述第一模型的第一实例;
第二获取单元1210,用于通过所述第二线程第二次判断是否存在所述第一模型的实例,在通过所述第二线程第二次判断存在所述第一实例的情况下,通过所述第二线程获取所述第一实例。
可选的,模型实例化的动态管理装置可以但不限应用在深度学习在线服务或模型提供在线服务的应用场景下。线程可以但不限于为操作***能够进行运算调度的最小单位,被包含在进程中,是进程中的实际运作单元,可选的,一条线程指的是进程中一个单一顺序的控制流。模型可以但不限于为多种应用场景下的深度学习模型,例如应用在搜索技术、数据挖掘、机械学习、机械翻译、自然语言处理、图像识别、多媒体学习、语音识别、推荐***和个性化技术等场景下的深度学习模型。设置为串行工作可以但不限用于表示设置为按执行优先级顺序执行工作,其中,串行工作中的执行优先级可以但不限于依据线程的调用时间,还可以但不限于人工设置。对象锁可以但不限用于表示请求调用第一模型的皆被设置为串行工作。
需要说明的是,获取第一服务请求和第二服务请求,其中,第一服务请求和第二服务请求用于请求在线提供的目标服务;响应于第一服务请求,使用第一线程请求调用第一模型,响应于第二服务请求,使用第二线程请求调用第一模型,其中,第一模型为在线提供目标服务的模型;在通过第一线程和第二线程第一次判断出不存在第一模型的实例,对第一模型设置第一对象锁,其中第一对象锁用于将第一线程和第二线程设置为串行工作,在串行工作下第一线程优先于第二线程工作;通过第一线程第二次判断是否存在第一模型的实例,在通过第一线程第二次判断不存在第一模型的实例的情况下,通过第一线程创建第一模型的第一实例;通过第二线程第二次判断是否存在第一模型的实例,在通过第二线程第二次判断存在第一实例的情况下,通过第二线程获取第一实例。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
通过本申请提供的实施例,获取第一服务请求和第二服务请求,其中,第一服务请求和第二服务请求用于请求在线提供的目标服务;响应于第一服务请求,使用第一线程请求调用第一模型,响应于第二服务请求,使用第二线程请求调用第一模型,其中,第一模型为在线提供目标服务的模型;在通过第一线程和第二线程第一次判断出不存在第一模型的实例,对第一模型设置第一对象锁,其中第一对象锁用于将第一线程和第二线程设置为串行工作,在串行工作下第一线程优先于第二线程工作;通过第一线程第二次判断是否存在第一模型的实例,在通过第一线程第二次判断不存在第一模型的实例的情况下,通过第一线程创建第一模型的第一实例;通过第二线程第二次判断是否存在第一模型的实例,在通过第二线程第二次判断存在第一实例的情况下,通过第二线程获取第一实例,通过在第一线程和第二线程均请求调用第一模型情况下,利用串行工作的方式,以使得第一线程和第二线程在请求调用同一模型的情况下,不会重复创建第一模型的实例,进而达到了减少模型实例化的动态管理过程中实例的重复创建的目的,从而实现了提高模型实例化的动态管理效率的技术效果。
作为一种可选的方案,装置还包括:
第三判断单元,用于在第一线程和第二线程被设置为串行工作、第三线程请求调用第二模型的情况下,通过第三线程第一次判断是否存在第二模型的实例,其中,第二模型为在线提供服务的模型,第三线程被设置为与第一线程和第二线程并行工作。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置包括:
第四判断单元,用于在第三线程和第四线程均请求调用第二模型的情况下,通过第四线程第一次判断是否存在第二模型的实例,其中,第四线程被设置为与第一线程和第二线程并行工作;
第五判断单元,用于在通过第三线程第一次判断出不存在第二模型的实例、且通过第四线程第一次判断出不存在第二模型的实例的情况下,对第二模型设置第二对象锁,其中,第二对象锁用于将第三线程和第四线程设置为串行工作,在串行工作下第三线程优先于第四线程工作;
第六判断单元,用于通过第三线程第二次判断是否存在第二模型的实例,在通过第三线程第二次判断不存在第二模型的实例的情况下,通过第三线程创建第二模型的第二实例;
第七判断单元,用于通过第四线程第二次判断是否存在第二模型的实例,在通过第四线程第二次判断存在第二实例的情况下,通过第四线程获取第二实例。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
第三获取单元,用于在响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型之前,获取第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一实例。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
第一检测单元,用于定时检测第一模型的配置信息和模型文件是否发生更新;
第四获取单元,用于在检测到第一模型的配置信息发生更新的情况下,获取第一模型的第二配置信息,其中,第一模型的最新配置信息由第一配置信息替换为第二配置信息;
第五获取单元,用于在检测到第一模型的模型文件发生更新的情况下,获取第一模型的第二模型文件,其中,第一模型的最新模型文件由第一模型文件替换为第二模型文件;
第一删除单元,用于在第一模型的配置信息或第一模型的模型文件发生更新的情况下,删除第一实例。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
第八判断单元,用于在删除第一实例之后,在第五线程和第六线程均请求调用第一模型的情况下,通过第五线程第一次判断是否存在第一模型的实例,并通过第六线程第一次判断是否存在第一模型的实例;
设置单元,用于在删除第一实例之后,在通过第五线程第一次判断出不存在第一模型的实例、且通过第六线程第一次判断出不存在第一模型的实例的情况下,对第一模型设置第一对象锁,其中,第一对象锁用于将第五线程和第六线程设置为串行工作,在串行工作下第五线程优先于第六线程工作;
创建单元,用于在删除第一实例之后,通过第五线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断不存在第一模型的实例的情况下,通过第五线程根据第一模型的最新配置信息和最新模型文件创建第一模型的第三实例;
第五获取单元,用于在删除第一实例之后,通过第六线程第二次判断是否存在第一模型的实例,在通过第六线程第二次判断存在第三实例的情况下,通过第六线程获取第三实例。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
第二检测单元,用于每隔预定的检测周期检测在刚结束的检测周期内第一模型是否被请求调用;
第二删除单元,用于在刚结束的检测周期内第一模型未被请求调用的情况下,删除第一实例。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
第六获取单元,用于在刚结束的检测周期内第一模型未被请求调用的情况下,保留预先获取的第一模型的第一配置信息和第一模型的第一模型文件,其中,第一配置信息和第一模型文件用于创建第一模型的实例。
具体实施例可以参考上述模型实例化的动态管理方法中所示示例,本示例中在此不再赘述。
根据本发明实施例的又一个方面,还提供了一种用于实施上述模型实例化的动态管理方法的电子设备,如图13所示,该电子设备包括存储器1302和处理器1304,该存储器1302中存储有计算机程序,该处理器1304被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取第一服务请求和第二服务请求,其中,所述第一服务请求和所述第二服务请求用于请求在线提供的目标服务;
S2,响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型,其中,所述第一模型为在线提供所述目标服务的模型;
S3,在通过所述第一线程和所述第二线程第一次判断出不存在所述第一模型的实例,对所述第一模型设置第一对象锁,其中所述第一对象锁用于将所述第一线程和所述第二线程设置为串行工作,在所述串行工作下所述第一线程优先于所述第二线程工作;
S4,通过所述第一线程第二次判断是否存在所述第一模型的实例,在通过所述第一线程第二次判断不存在所述第一模型的实例的情况下,通过所述第一线程创建所述第一模型的第一实例;
S5,通过所述第二线程第二次判断是否存在所述第一模型的实例,在通过所述第二线程第二次判断存在所述第一实例的情况下,通过所述第二线程获取所述第一实例。
可选地,本领域普通技术人员可以理解,图13所示的结构仅为示意,电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图13其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图13中所示更多或者更少的组件(如网络接口等),或者具有与图13所示不同的配置。
其中,存储器1302可用于存储软件程序以及模块,如本发明实施例中的模型实例化的动态管理方法和装置对应的程序指令/模块,处理器1304通过运行存储在存储器1302内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的模型实例化的动态管理方法。存储器1302可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1302可进一步包括相对于处理器1304远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1302具体可以但不限于用于存储第一服务请求、第二服务请求、第一线程、第二线程、第一模型以及第一实例等信息。作为一种示例,如图13所示,上述存储器1302中可以但不限于包括上述模型实例化的动态管理装置中的第一获取单元1202、响应单元1204、第一判断单元1206、第二判断单元1208及第二获取单元1210。此外,还可以包括但不限于上述模型实例化的动态管理装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1306用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1306包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1306为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1308,用于显示上述第一服务请求、第二服务请求、第一线程、第二线程、第一模型以及第一实例等信息;和连接总线1310,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式***中的一个节点,其中,该分布式***可以为区块链***,该区块链***可以是由该多个节点通过网络通信的形式连接形成的分布式***。其中,节点之间可以组成点对点(Peer To Peer,简称P2P)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链***中的一个节点。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述在线服务模块实例方面或者多线程并行方面的各种可选实现方式中提供的方法。其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取第一服务请求和第二服务请求,其中,所述第一服务请求和所述第二服务请求用于请求在线提供的目标服务;
S2,响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型,其中,所述第一模型为在线提供所述目标服务的模型;
S3,在通过所述第一线程和所述第二线程第一次判断出不存在所述第一模型的实例,对所述第一模型设置第一对象锁,其中所述第一对象锁用于将所述第一线程和所述第二线程设置为串行工作,在所述串行工作下所述第一线程优先于所述第二线程工作;
S4,通过所述第一线程第二次判断是否存在所述第一模型的实例,在通过所述第一线程第二次判断不存在所述第一模型的实例的情况下,通过所述第一线程创建所述第一模型的第一实例;
S5,通过所述第二线程第二次判断是否存在所述第一模型的实例,在通过所述第二线程第二次判断存在所述第一实例的情况下,通过所述第二线程获取所述第一实例。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种模型实例化的动态管理方法,其特征在于,包括:
获取第一服务请求和第二服务请求,其中,所述第一服务请求和所述第二服务请求用于请求在线提供的目标服务;
响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型,其中,所述第一模型为在线提供所述目标服务的模型;
在通过所述第一线程和所述第二线程第一次判断出不存在所述第一模型的实例,对所述第一模型设置第一对象锁,其中所述第一对象锁用于将所述第一线程和所述第二线程设置为串行工作,在所述串行工作下所述第一线程优先于所述第二线程工作;
通过所述第一线程第二次判断是否存在所述第一模型的实例,在通过所述第一线程第二次判断不存在所述第一模型的实例的情况下,通过所述第一线程创建所述第一模型的第一实例;
通过所述第二线程第二次判断是否存在所述第一模型的实例,在通过所述第二线程第二次判断存在所述第一实例的情况下,通过所述第二线程获取所述第一实例。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一线程和所述第二线程被设置为串行工作、第三线程请求调用第二模型的情况下,通过所述第三线程第一次判断是否存在所述第二模型的实例,其中,所述第二模型为在线提供服务的模型,所述第三线程被设置为与所述第一线程和所述第二线程并行工作。
3.根据权利要求2所述的方法,其特征在于,所述方法包括:
在所述第三线程和第四线程均请求调用所述第二模型的情况下,通过所述第四线程第一次判断是否存在所述第二模型的实例,其中,所述第四线程被设置为与所述第一线程和所述第二线程并行工作;
在通过所述第三线程第一次判断出不存在所述第二模型的实例、且通过所述第四线程第一次判断出不存在所述第二模型的实例的情况下,对所述第二模型设置第二对象锁,其中,所述第二对象锁用于将所述第三线程和所述第四线程设置为串行工作,在所述串行工作下所述第三线程优先于所述第四线程工作;
通过所述第三线程第二次判断是否存在所述第二模型的实例,在通过所述第三线程第二次判断不存在所述第二模型的实例的情况下,通过所述第三线程创建所述第二模型的第二实例;
通过所述第四线程第二次判断是否存在所述第二模型的实例,在通过所述第四线程第二次判断存在所述第二实例的情况下,通过所述第四线程获取所述第二实例。
4.根据权利要求1所述的方法,其特征在于,在响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型之前,所述方法还包括:
获取所述第一模型的第一配置信息和所述第一模型的第一模型文件,其中,所述第一配置信息和所述第一模型文件用于创建所述第一实例。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
定时检测所述第一模型的配置信息和模型文件是否发生更新;
在检测到所述第一模型的配置信息发生更新的情况下,获取所述第一模型的第二配置信息,其中,所述第一模型的最新配置信息由所述第一配置信息替换为所述第二配置信息;
在检测到所述第一模型的模型文件发生更新的情况下,获取所述第一模型的第二模型文件,其中,所述第一模型的最新模型文件由所述第一模型文件替换为所述第二模型文件;
在所述第一模型的配置信息或所述第一模型的模型文件发生更新的情况下,删除所述第一实例。
6.根据权利要求5所述的方法,其特征在于,在所述删除所述第一实例之后,所述方法还包括:
在第五线程和第六线程均请求调用所述第一模型的情况下,通过所述第五线程第一次判断是否存在所述第一模型的实例,并通过所述第六线程第一次判断是否存在所述第一模型的实例;
在通过所述第五线程第一次判断出不存在所述第一模型的实例、且通过所述第六线程第一次判断出不存在所述第一模型的实例的情况下,对所述第一模型设置所述第一对象锁,其中,所述第一对象锁用于将所述第五线程和所述第六线程设置为串行工作,在所述串行工作下所述第五线程优先于所述第六线程工作;
通过所述第五线程第二次判断是否存在所述第一模型的实例,在通过所述第六线程第二次判断不存在所述第一模型的实例的情况下,通过所述第五线程根据所述第一模型的最新配置信息和最新模型文件创建所述第一模型的第三实例;
通过所述第六线程第二次判断是否存在所述第一模型的实例,在通过所述第六线程第二次判断存在所述第三实例的情况下,通过所述第六线程获取所述第三实例。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
每隔预定的检测周期检测在刚结束的所述检测周期内所述第一模型是否被请求调用;
在刚结束的所述检测周期内所述第一模型未被请求调用的情况下,删除所述第一实例。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在刚结束的所述检测周期内所述第一模型未被请求调用的情况下,保留预先获取的所述第一模型的第一配置信息和所述第一模型的第一模型文件,其中,所述第一配置信息和所述第一模型文件用于创建所述第一模型的实例。
9.一种模型实例化的动态管理装置,其特征在于,包括:
第一获取单元,用于获取第一服务请求和第二服务请求,其中,所述第一服务请求和所述第二服务请求用于请求在线提供的目标服务;
响应单元,用于响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型,其中,所述第一模型为在线提供所述目标服务的模型;
第一判断单元,用于在通过所述第一线程和所述第二线程第一次判断出不存在所述第一模型的实例,对所述第一模型设置第一对象锁,其中所述第一对象锁用于将所述第一线程和所述第二线程设置为串行工作,在所述串行工作下所述第一线程优先于所述第二线程工作;
第二判断单元,用于通过所述第一线程第二次判断是否存在所述第一模型的实例,在通过所述第一线程第二次判断不存在所述第一模型的实例的情况下,通过所述第一线程创建所述第一模型的第一实例;
第二获取单元,用于通过所述第二线程第二次判断是否存在所述第一模型的实例,在通过所述第二线程第二次判断存在所述第一实例的情况下,通过所述第二线程获取所述第一实例。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第三判断单元,用于在所述第一线程和所述第二线程被设置为串行工作、第三线程请求调用第二模型的情况下,通过所述第三线程第一次判断是否存在所述第二模型的实例,其中,所述第二模型为在线提供服务的模型,所述第三线程被设置为与所述第一线程和所述第二线程并行工作。
11.根据权利要求10所述的装置,其特征在于,所述装置包括:
第四判断单元,用于在所述第三线程和第四线程均请求调用所述第二模型的情况下,通过所述第四线程第一次判断是否存在所述第二模型的实例,其中,所述第四线程被设置为与所述第一线程和所述第二线程并行工作;
第五判断单元,用于在通过所述第三线程第一次判断出不存在所述第二模型的实例、且通过所述第四线程第一次判断出不存在所述第二模型的实例的情况下,对所述第二模型设置第二对象锁,其中,所述第二对象锁用于将所述第三线程和所述第四线程设置为串行工作,在所述串行工作下所述第三线程优先于所述第四线程工作;
第六判断单元,用于通过所述第三线程第二次判断是否存在所述第二模型的实例,在通过所述第三线程第二次判断不存在所述第二模型的实例的情况下,通过所述第三线程创建所述第二模型的第二实例;
第七判断单元,用于通过所述第四线程第二次判断是否存在所述第二模型的实例,在通过所述第四线程第二次判断存在所述第二实例的情况下,通过所述第四线程获取所述第二实例。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第三获取单元,用于在响应于所述第一服务请求,使用第一线程请求调用第一模型,响应于所述第二服务请求,使用第二线程请求调用所述第一模型之前,获取所述第一模型的第一配置信息和所述第一模型的第一模型文件,其中,所述第一配置信息和所述第一模型文件用于创建所述第一实例。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第一检测单元,用于定时检测所述第一模型的配置信息和模型文件是否发生更新;
第四获取单元,用于在检测到所述第一模型的配置信息发生更新的情况下,获取所述第一模型的第二配置信息,其中,所述第一模型的最新配置信息由所述第一配置信息替换为所述第二配置信息;
第五获取单元,用于在检测到所述第一模型的模型文件发生更新的情况下,获取所述第一模型的第二模型文件,其中,所述第一模型的最新模型文件由所述第一模型文件替换为所述第二模型文件;
第一删除单元,用于在所述第一模型的配置信息或所述第一模型的模型文件发生更新的情况下,删除所述第一实例。
14.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至8任一项中所述的方法。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至8任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010950669.2A CN111813533B (zh) | 2020-09-11 | 2020-09-11 | 模型实例化的动态管理方法和装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010950669.2A CN111813533B (zh) | 2020-09-11 | 2020-09-11 | 模型实例化的动态管理方法和装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813533A true CN111813533A (zh) | 2020-10-23 |
CN111813533B CN111813533B (zh) | 2020-12-11 |
Family
ID=72859288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010950669.2A Active CN111813533B (zh) | 2020-09-11 | 2020-09-11 | 模型实例化的动态管理方法和装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813533B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101438243A (zh) * | 2004-11-08 | 2009-05-20 | 尤尼西斯公司 | 适于KStore数据结构的多流实时数据仿真 |
CN103765469A (zh) * | 2011-07-14 | 2014-04-30 | 株式会社东芝 | 动态设备管理*** |
US9355161B1 (en) * | 2005-08-26 | 2016-05-31 | Open Invention Network, Llc | System and method for event-driven live migration of multi-process applications |
CN107784400A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 一种业务模型的执行方法和装置 |
CN109478138A (zh) * | 2016-05-12 | 2019-03-15 | 基底核公司 | 具有隐式并发控制的高性能服务的编程模型和解释运行时环境 |
CN111124702A (zh) * | 2019-11-22 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
CN111459588A (zh) * | 2020-03-27 | 2020-07-28 | 深圳融安网络科技有限公司 | 大数据模型设置方法、终端设备及计算机可读存储介质 |
-
2020
- 2020-09-11 CN CN202010950669.2A patent/CN111813533B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101438243A (zh) * | 2004-11-08 | 2009-05-20 | 尤尼西斯公司 | 适于KStore数据结构的多流实时数据仿真 |
US9355161B1 (en) * | 2005-08-26 | 2016-05-31 | Open Invention Network, Llc | System and method for event-driven live migration of multi-process applications |
CN103765469A (zh) * | 2011-07-14 | 2014-04-30 | 株式会社东芝 | 动态设备管理*** |
CN109478138A (zh) * | 2016-05-12 | 2019-03-15 | 基底核公司 | 具有隐式并发控制的高性能服务的编程模型和解释运行时环境 |
CN107784400A (zh) * | 2016-08-24 | 2018-03-09 | 北京京东尚科信息技术有限公司 | 一种业务模型的执行方法和装置 |
CN111124702A (zh) * | 2019-11-22 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
CN111459588A (zh) * | 2020-03-27 | 2020-07-28 | 深圳融安网络科技有限公司 | 大数据模型设置方法、终端设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111813533B (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2017253672B2 (en) | Automatically updating a hybrid application | |
CN105468702B (zh) | 一种大规模rdf数据关联路径发现方法 | |
CN106022007B (zh) | 面向生物组学大数据计算的云平台***及方法 | |
CN106164866A (zh) | 客户端侧web状态的高效迁移 | |
CN103473696A (zh) | 一种收集、分析和分发网络商业信息的方法和*** | |
CN106506703A (zh) | 基于共享内存的服务发现方法、装置及***、服务器 | |
CN105302920A (zh) | 一种云存储数据的优化管理方法和*** | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN105468707A (zh) | 一种基于缓存的数据处理方法及装置 | |
CN114791846B (zh) | 一种针对云原生混沌工程实验实现可观测性的方法 | |
CN110659261A (zh) | 一种数据挖掘模型发布方法及模型和模型服务管理方法 | |
CN113760453B (zh) | 容器镜像分发***及容器镜像推送、拉取和删除方法 | |
CN112948450A (zh) | 用于实时推荐的Flink流式处理引擎方法、装置及计算机设备 | |
CN114327857A (zh) | 操作数据处理方法、装置、计算机设备和存储介质 | |
CN111340404A (zh) | 构建指标体系的方法、装置及计算机存储介质 | |
CN111752723A (zh) | 一种可视化的多源服务管理***及其实现方法 | |
CN114493185A (zh) | 审批处理方法、装置、***、电子设备、存储介质及产品 | |
CN103077186B (zh) | 一种断层数据处理装置和方法 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
CN112035466B (zh) | 一种区块链查询外置索引开发框架 | |
CN111813533B (zh) | 模型实例化的动态管理方法和装置及存储介质 | |
CN109063059A (zh) | 行为日志处理方法、装置及电子设备 | |
CN115203172B (zh) | 模型构建及模型数据订阅方法、装置、电子设备和介质 | |
CN116974465A (zh) | 数据加载方法、装置、设备及计算机存储介质 | |
CN115455006A (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40030686 Country of ref document: HK |