CN117369996A - 数据处理方法、电子设备及计算机可读存储介质 - Google Patents

数据处理方法、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN117369996A
CN117369996A CN202311239030.3A CN202311239030A CN117369996A CN 117369996 A CN117369996 A CN 117369996A CN 202311239030 A CN202311239030 A CN 202311239030A CN 117369996 A CN117369996 A CN 117369996A
Authority
CN
China
Prior art keywords
data
trained
training
subtask
monitoring module
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
Application number
CN202311239030.3A
Other languages
English (en)
Other versions
CN117369996B (zh
Inventor
杨华峰
沈宇辉
丰明顺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Guojiangyun Vocational Education Technology Co ltd
Original Assignee
Shenzhen Guojiangyun Vocational Education Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Guojiangyun Vocational Education Technology Co ltd filed Critical Shenzhen Guojiangyun Vocational Education Technology Co ltd
Priority to CN202311239030.3A priority Critical patent/CN117369996B/zh
Publication of CN117369996A publication Critical patent/CN117369996A/zh
Application granted granted Critical
Publication of CN117369996B publication Critical patent/CN117369996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及计算机技术领域,提供了一种数据处理方法、电子设备及可读存储介质,应用于包括中央处理器CPU和图形处理器GPU的计算机设备,包括:建立第一子任务和第二子任务,第一子任务为运行在CPU上的子任务,第二子任务为运行在GPU上的子任务;使用第一监控模块和第二监控模块轮循缓存数据库,缓存数据库用于存储第一待训练数据,第一待训练数据包括至少一个待训练模型,第一监控模块为第一子任务中的模块,第二监控模块为第二子任务中的模块;若第一监控模块轮循到第一待训练数据,则使用第一子任务进行训练,得到第一训练模型。本申请提供的技术方案能够统一调度计算机设备上的CPU和GPU进行模型训练,降低模型训练所需成本。

Description

数据处理方法、电子设备及计算机可读存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、电子设备及计算机可读存储介质。
背景技术
深度学习算法的应用是人工智能领域发展的有力工具,其目标是让机器能够像人一样具有分析学习的能力,来识别文字、图像和声音数据,可以应用于搜索技术、数据挖掘、机器学习、自动驾驶、机器翻译、自然语言处理、语音识别及合成、游戏领域、多媒体学习、推荐和个性化技术等领域,部分深度学习在任务上的表现甚至已经超越人类专家的水平。
在使用深度学习算法的过程中需要进行大量的计算,现有的计算场所有CPU、GPU和TPU等,由于深度学习算法对硬件环境的依赖较高,深度学习计算框架的出现,屏蔽了大量硬件环境层面的开发代价,能够降低深度学习算法对硬件环境的依赖性,现有的深度学习框架例如TensorFlow、Keras、PyTorch、PyTorch和PyTorch等,能够使CPU或GPU解决复杂的计算问题。
现有的深度学习框架在使用GPU对图形数据进行模型训练时,由于训练过程比较复杂且需要消耗巨大的计算资源,通过增加GPU的数量或者更换性能较高的GPU成为了一种能有效增大模型训练过程中数据处理能力的方式,然而这种方法所需成本很高。
发明内容
本申请实施例提供了一种数据处理方法、电子设备及计算机可读存储介质,能够使得计算机设备上的CPU和GPU同时进行模型训练,提高资源利用率,降低模型训练所需成本。
第一方面,本申请实施例提供了一种数据处理方法,应用于计算机设备,计算机设备包括中央处理器CPU和图形处理器GPU,包括:
建立第一子任务和第二子任务,第一子任务为运行在CPU上的子任务,第二子任务为运行在GPU上的子任务;
使用第一监控模块和第二监控模块轮循缓存数据库,缓存数据库用于存储第一待训练数据,第一待训练数据包括至少一个待训练模型,第一监控模块为第一子任务中的模块,第二监控模块为第二子任务中的模块;
若第一监控模块轮循到第一待训练数据,则使用第一子任务对第一待训练数据进行训练,得到至少一个第一训练模型;
若第二监控模块轮循到第一待训练数据,则使用第二子任务对第一待训练数据进行训练,得到至少一个第二训练模型。
该方法中,计算机设备能够将模型训练任务分为运行在CPU上的第一子任务和运行在GPU上的第二子任务,并通过第一子任务和第二子任务上的监控模块轮询缓存数据库中的数据状态。当缓存数据库中有待训练数据时,则使用轮询到待训练数据的子任务对第一待训练数据进行训练。本申请提供的技术方案能够在有大量待训练数据需要进行训练时,统一调度计算机设备上的CPU和GPU进行模型训练,充分利用了CPU这一闲置资源,提高了资源利用率。该方法避免了增加GPU数量和更换高性能GPU带来的成本的增加,在保证模型训练效率的同时,有效控制了模型训练所需的成本。
在一些实施方式中,上述方法还包括:
若第一监控模块轮训到缓存数据库中的初始待训练数据,确定初始待训练数据的数据量是否小于或等于预设数据量阈值,预设数据量阈值为CPU的时钟频率的X倍,X为小于或等于5的自然数;
若是,确定初始待训练数据为第一待训练数据;
若否,则根据预设数据量阈值从初始待训练数据中划分得到第一待训练数据,第一待训练数据的数据量等于或小于预设数据量阈值。
通过CPU的时钟频率确定第一待训练数据的数据量,可以基于CPU的计算能力,为第一子任务匹配与CPU最大数据处理能力相适应的数据量,避免待处理数据量过多导致数据排队时长过久的问题,与待处理数据量过少导致的CPU计算资源浪费的问题,提高数据训练过程中的数据处理效率。
在一些实施方式中,上述方法还包括:
若第二监控模块轮训到缓存数据库中的初始待训练数据,确定初始待训练数据的数据量是否小于或等于预设数据量阈值,预设数据量阈值为GPU的显存容量的Y倍,Y为小于或等于5的自然数;
若是,确定初始待训练数据为第一待训练数据;
若否,则根据预设数据量阈值从初始待训练数据中划分得到第一待训练数据,第一待训练数据的数据量等于或小于预设数据量阈值。
通过GPU的显存容量确定第一待训练数据的数据量,可以基于GPU的计算能力,为第二子任务匹配与GPU最大数据处理能力相适应的数据量,避免待处理数据量过多导致数据排队时长过久的问题,与待处理数据量过少导致的GPU计算资源浪费的问题,提高数据训练过程中的数据处理效率。
在一些实施方式中,上述方法还包括:
将第一待训练数据与第一子任务进行绑定,并使用第一子任务对第一待训练数据进行训练,得到至少一个第一训练模型;
上述方法还包括:
将关系型数据库中,至少一个待训练模型的状态从启动训练更新为正在训练。
将第一待训练数据与轮循到第一待训练数据的第一子任务进行绑定,可以避免其他子任务对应的监控模块重复查询到第一待训练数据,从而避免重复训练。更新第一待训练数据对应的至少一个待训练模型的状态,可以便于训练人员实时监测和查询待训练模型的状态。
在一些实施方式中,上述方法还包括:
将第一待训练数据与第二子任务进行绑定,并使用第二子任务对第一待训练数据进行训练,得到至少一个第二训练模型;
上述方法还包括:
将关系型数据库中,至少一个待训练模型的状态从启动训练更新为正在训练。
将第一待训练数据与轮循到第一待训练数据的第二子任务进行绑定,可以避免其他子任务对应的监控模块重复查询到第一待训练数据,从而避免重复训练。更新第一待训练数据对应的至少一个待训练模型的状态,可以便于训练人员实时监测和查询待训练模型的状态。
在一些实施方式中,上述方法还包括:
将至少一个第一训练模型的精度信息和测试结果信息存储至关系型数据库;
将关系型数据库中,至少一个第一训练模型的状态从正在训练更新为结束训练;
将第一待训练数据与第一子任务进行解绑。
通过记录和存储第一训练模型的精度信息和测试结果信息,可以便于训练人员在关系型数据库中获取第一训练模型训练数据,将状态信息存储至关系型数据库可以便于训练人员实时监测和查询多个训练模型的训练状态,通过将第一待训练数据与第一子任务进行解绑,可以使得完成训练后的第一子任务对应的监控模块继续轮询缓存数据库中的数据,加快数据训练的速度,提高数据训练的效率。
在一些实施方式中,上述方法还包括:
将至少一个第二训练模型的精度信息和测试结果信息存储至关系型数据库;
将关系型数据库中,至少一个第二训练模型的状态从正在训练更新为结束训练;
将第一待训练数据与第二子任务进行解绑。
通过记录和存储第一训练模型的精度信息和测试结果信息,可以便于训练人员在关系型数据库中获取第一训练模型训练数据,将状态信息存储至关系型数据库可以便于训练人员实时监测和查询多个训练模型的训练状态,通过将第一待训练数据与第二子任务进行解绑,可以使得完成训练后的第二子任务对应的监控模块继续轮询缓存数据库中的数据,加快数据训练的速度,提高数据训练的效率。
在一些实施方式中,上述方法还包括:
在预设周期的起始时刻,使用第一监控模块和第二监控模块轮循缓存数据库。
通过设置轮询缓存型数据库的轮询周期,可以在避免浪费监测资源的前提下,使得监控模块尽早发现缓存数据库中的数据,缩短启动训练所需时长。
第二方面,本申请实施例提供了一种数据处理装置,包括:
建立模块,用于建立第一子任务和第二子任务,第一子任务为运行在CPU上的子任务,第二子任务为运行在GPU上的子任务;
轮询模块,用于使用第一监控模块和第二监控模块轮循缓存数据库,缓存数据库用于存储第一待训练数据,第一待训练数据包括至少一个待训练模型,第一监控模块为第一子任务中的模块,第二监控模块为第二子任务中的模块;
第一训练模块,用于在第一监控模块轮循到第一待训练数据时,使用第一子任务对第一待训练数据进行训练,得到至少一个第一训练模型;
第二训练模块,用于在第二监控模块轮循到第一待训练数据时,使用第二子任务对第一待训练数据进行训练,得到至少一个第二训练模型。
第三方面,本申请实施例提供了一种电子设备,包括处理器和存储器,处理器用于执行存储器中存储的计算机程序以实现如上述第一方面中任一项的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
本申请提供的技术方案,计算机设备能够分别建立运行在CPU上的第一子任务和运行在GPU上的第二子任务,并通过第一子任务和第二子任务上的监控模块轮询缓存数据库中的数据状态。当缓存数据库中有待训练数据时,则使用轮询到待训练数据的子任务对第一待训练数据进行训练。本申请提供的技术方案能够在有大量待训练数据需要进行训练时,统一调度计算机设备上的CPU和GPU进行模型训练,充分利用了GPU这一闲置资源,提高了资源利用率。该方法避免了增加GPU数量和更换高性能GPU带来的成本的增加,在保证模型训练效率的同时,有效控制了模型训练所需的成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理方法的模型训练系统示意图;
图2是本申请实施例提供的一种数据处理方法的软件架构示意图;
图3是本申请实施例提供的一种数据处理方法的流程示意图;
图4是本申请实施例提供的一种数据处理方法的模型训练子任务和处理器的对应关系示意图;
图5是本申请实施例提供的一种数据处理方法的一种训练入口服务的结构示意图;
图6是本申请实施例提供的一种数据处理方法的一种子任务与缓存数据库的交互示意图;
图7是本申请实施例提供的一种数据处理方法的一种单个子任务工作流程示意图;
图8是本申请实施例提供的一种数据处理方法的一种多机多卡数据训练系统示意图;
图9是本申请实施例提供的一种数据处理装置的结构示意图;
图10是本申请实施例提供的一种数据处理设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
目前,人工智能领域蓬勃发展,机器学习是人工智能的重要组成部分,其主要依赖于设有CPU(Central Processing Unit,中央处理器)和/或GPU(Graphics ProcessingUnit,图形处理器)的计算机设备。
在通过计算机设备对模型进行训练时,为了使模型训练结果更精准,往往需要输入大量的待训练数据和特征,计算机设备通过其CPU或GPU来对待训练数据和特征进行训练。在训练过程中,由于计算机设备上的GPU的个数有限,其并行处理数据的数据也会受GPU个数的限制,待训练数据需要串行排队训练,模型训练耗时过长。例如,如图1所示,为现有的技术方案中,通过计算机设备上的GPU对模型进行训练的系统示意图。如图1所示,当待训练数据包含M个训练任务,训练任务1、训练任务2、训练任务3……训练任务M,计算机设备包括多个GPU时,通过计算机设备对M个训练任务进行训练时,M个训练任务需要串行排队来等候训练。
现有的技术方案中,为了解决串行排队等候时长过久的问题,一般有两种解决方案现有的技术方案是通过GPU的数量,或者更换性能更高的GPU来克服串行排队等候时长过久的问题的。然而,这两种方法都会增加模型训练的成本。
本申请实施例提供了一种数据处理方法,应用于设有CPU和GPU的计算机设备。
其中,CPU可以支持并执行AVX(Advanced Vector Extensions,高级矢量扩展)或AVX2指令集,并根据AVX或AVX2指令集来计算和控制计算机设备,AVX或AVX2指令集可以支持向量并行计算,能够提高CPU的模型训练效率;GPU可以为(nVIDIACorporation,英伟达)显卡,用于提高模型训练的效率和速度。
由于CPU和GPU会存在硬件参数和软件驱动上的不同,在CPU和GPU共享待训练数据资源时可能会发生内存交叉的情况,导致训练无法完成或者训练无法启动,为避免这种情况发生,本申请提供的技术方案可以搭建虚拟环境,将模型训练所需的开发环境隔离开来,避免内存交叉。其中,软件虚拟环境可以搭建Virtualenv(virtual environment,虚拟环境)。本申请实施例中,模型训练所需程序可以由Python语言来编辑。主机操作系统环境可以搭建Docker语言。
在通过计算机设备对数据进行训练之前,需要先搭建系统的软件架构,图2为本申请实施例提供的一种软件架构示意图。如图2所示,本申请实施例所用到的系统可以分为展示层、网络层、业务层、数据层和基础设施。
其中,展示层用于接收训练人员的操作指令,并将训练人员的操作指令发送至其他模块,来完成数据训练。如图2所示,展示层可以支持HTM(Hyper Text Markup Language,超文本标记语言)语言创建的网页的表现和展示内容,在模型训练过程中,通过HTM携带的标签能够将文档格式统一,便于在训练过程中自动获取标签的权重。展示层可以基于VUE(Vue.js,用于构建用户界面的JavaScript框架)框架,通过CPU和/或GPU对模型进行训练,VUE用于提供编程模型,帮助开发用户界面。展示层可以支持JavaScript语言编程更新的内容,JavaScript用于在数据训练的过程中提供垮平台的脚本语言,实现多台计算机设备之间的交互。用户可以通过处于展示层的APP(Application,应用程序)实现模型训练过程中的人机交互,用户可以通过操作模型训练APP的界面实现待训练数据的筛选,数据训练的启动、暂停、终止,训练过程的监控。
网络层用于对数据进行传输和把控数据安全。如图2所示,防火墙可以用于检查数据训练过程中通过防火墙的数据包并根据预设的安全策略决定数据包的流向。反向代理可以保护真实的web(World Wide Web,全球广域网)服务器,保护服务器的资产安全。
业务层用于实现数据训练过程中的业务逻辑。如图2所示,业务层可以包括训练接口模块、监控模块、模型训练模块和回调接口模块。训练接口模块用于接收待训练数据,并提供模型训练过程中的启动、终止、查询功能。监控模块用于查询缓存数据库的状态,并根据缓存数据库的状态向模型训练模块发送模型训练指令。回调接口模块用于检测和更新待训练数据的状态,并向数据层发送待训练数据的状态。
数据层用于实现模型训练过程中数据的存储和保持。如图2所示,数据层可以包括关系型数据库Mysql(Structured query language,关系型数据库管理系统)和缓存数据库Redis(Remote Dictionary Server,远程字典服务)。关系型数据库可以用于存储模型训练过程中待训练数据所包含的各个待训练模型的ID(Identity Document,标识号)、状态、精度信息和测试结果信息。缓存数据库用于存储模型训练过程中的待训练数据。
基础设施用于提供模型训练过程中,APP的软件运行环境和多个训练模型的存储,包括Linux系统和文件存储服务。模型训练过程中可以通过Linux系统运行相应的训练程序。文件存储服务中的文件存储模块用于存储训练后的多个训练模型。
本申请实施例提供的数据处理方法可以统一调度计算机设备上的CPU和GPU同时进行模型训练,充分利用了CPU这一闲置资源,在保证模型训练效率的同时,有效控制了模型训练所需的成本。
图3为本申请实施例提供的一种数据处理方法的流程示意图,如图3所示,该方法包括如下步骤:
步骤S310:建立第一子任务和第二子任务,第一子任务为运行在CPU上的子任务,第二子任务为运行在GPU上的子任务。
本申请实施例提供的技术方案中,可以根据用于模型训练的计算机设备所包含的CPU和GPU的数量,部署多套用于模型训练的子任务。每个子任务分别对应一个CPU或GPU。第一子任务为运行在CPU上的子任务,第二子任务为运行在GPU上的子任务,即第一子任务的数量与计算机设备中CPU的数量相等,第二子任务的数量与计算机设备中GPU的数量相等。
图4为本申请实施例提供的一种模型训练子任务和处理器的对应关系示意图。如图4所示,当计算机设备包括4个CPU(CPU1、CPU2、CPU3和CPU4)和2个GPU(GPU1和GPU2)时,若使用该计算机设备进行模型训练,则会部署4个第一子任务(第一子任务A、第一子任务B、第一子任务C和第一子任务D)和2个第二子任务(第二子任务A和第二子任务B),其中,第一子任务A对应CPU1、第一子任务B对应CPU2、第一子任务C对应CPU3……第二子任务B对应GPU2。每个子任务运行在对应的处理器上。
本申请实施例中,每个第一子任务所部署的算法内容和配置参数可以相同,也可以不同,其中,算法内容可以是定义的算法公式,例如MobileNet(EfficientConvolutional Neural Networks)V2,配置参数可以是设置的超参数,例如C参数和gamma参数。每个第二子任务所部署的算法内容和配置参数可以相同,也可以不同,本申请在此不做限定。
例如,如表1所示,为本申请实施例提供的一种网络结构表,当第一子任务所部署的算法内容是MobileNetV2网络,且MobileNetV2网络是基于TensorFlow框架来训练模型时。如表1所示,当输入特征图的大小为2242*3,所用的卷积核为conv2d时,输出通道数c为32,模块重复次数n为1,s(stride,跳跃格数)为2。当输入特征图的大小为1222*32,所用的卷积核为bottleneck时,输入通道的倍增系数(扩张倍数)t为1,输出通道数为c为16,模块重复次数n为1,跳跃格数s为1。当输入特征图的大小为1222*16,所用的卷积核为bottleneck时,输入通道的倍增系数(扩张倍数)t为6,输出通道数为c为16,模块重复次数n为1,跳跃格数s为2……当输入特征图的大小为1*1*16,所用的卷积核为conv2d1*1时,输出通道数为c为16。其余参见表1,此处不再一一赘述。
Input Operator t c n s
2242*3 Conv2d _ 32 1 2
1122*32 bottleneck 1 16 1 1
1122*16 bottleneck 6 24 2 2
562*24 bottleneck 6 32 3 2
282*32 bottleneck 6 64 4 2
142*64 bottleneck 6 96 3 1
142*96 bottleneck 6 160 3 2
72*160 bottleneck 6 320 1 1
72*320 Conv2d1*1 _ 1280 1 1
72*1280 Avgpool7*7 _ _ 1 _
1*1*1280 Conv2d1*1 _ k _ _
表1
步骤S320:使用第一监控模块和第二监控模块轮循缓存数据库,缓存数据库用于存储第一待训练数据,第一待训练数据包括至少一个待训练模型,第一监控模块为第一子任务中的模块,第二监控模块为第二子任务中的模块。
本申请实施例中,在建立第一子任务和第二子任务之后,可以通过修改每个子任务对应的监控模块的配置文件信息,以确保每个子任务对应监控模块的链接地址指向同一个缓存数据库,便于监控模块查询缓存数据库的状态。
例如,可以通过修改每个子任务对应的监控模块的配置文件信息中的文件地址,使得所有子任务对应监控模块的链接地址都指向缓存数据库Redis。
其中,缓存数据库的状态可以为包含待训练数据状态或不包含待训练数据状态。
本申请实施例中,使用第一监控模块和第二监控模块轮循缓存数据库的状态时,可以设置轮循时间间隔,也就是设置预设周期。即在每个预设周期的起始时刻,使用第一监控模块和第二监控模块轮循缓存数据库。
其中,多个监控模块轮询缓存数据库的顺序可以预先设定,也可以不设置轮询顺序随机轮询,本申请在此不做限定。
例如,可以将预设周期设置为1秒,当用于数据训练的计算机设备建立了6个子任务(第一子任务A、第一子任务B、第一子任务C、第一子任务D、第二子任务A和第二子任务B),预设轮询顺序为第一子任务A→第一子任务B→第一子任务C→第一子任务D→第二子任务A→第二子任务B时,则在每一秒的起始时刻,6个子任务所对应的监控模块则会按照各个子任务对应的顺序轮询一次缓存数据库。
步骤S330:若第一监控模块轮循到第一待训练数据,则使用第一子任务对第一待训练数据进行训练,得到至少一个第一训练模型。
本申请实施例中,训练人员在收集了初始待训练数据后,可以将初始待训练数据输入训练入口服务,其中,训练入口服务为训练接口模块中用于接收待训练数据的服务区域。训练入口服务在接收到初始待训练数据后,则会根据初始待训练数据中包括的多个待训练模型,创建与多个待训练模型一一对应的多个模型ID,并将多个待训练模型的状态设置为启动训练状态,同时在关系型数据库中存储多个待训练模型的状态。
本申请实施例中,训练人员可以通过文件存储服务MinIO查询并筛选所需初始待训练数据,也可以通过其他途径获取,本申请在此不做限定。
其中,初始待训练数据可以是文本数据、图像数据、或者图像数据和文本数据的组合,本申请在此不做限定。
示例性的,当初始待训练数据为文本数据时,文本数据的数据信息可以包括:文本信息内容、文本信息类别和重点字段。
例如,当初始待训练数据为文本数据时,文本数据信息内容可以为:“1929年的股市大崩盘之所以影响如此之大,最令人惊讶的不是参与人数的规模,而是投资比赛成为了A国文化的核心内容。当最有钱的那个群体,都围绕着H街,在享受了持续7年的价格持续走高之后,突然迎来了当年10月底呈直线下跌式的大量抛出。”,文本信息类别可以是“金融类”,重点字段可以为:“1929年的股市大动荡”。
示例性的,当初始待训练数据为图像数据时,图像数据的数据信息可以包括:图像数据内容、图像信息标签、图像坐标信息和图像重点区域。
例如,当初始待训练数据为图像数据时,图像数据内容可以是像素亮度数据的整数矩阵,图像信息标签可以是猫,图像坐标信息可以是图像标签在图像数据内容中的坐标矩阵,图像重点区域可以是图像中猫的眼睛区域。
图5为本申请实施例提供的一种训练入口服务的结构示意图。如图5所示,训练入口服务可以包括回调函数接口Callback API、图片样本训练模型接口Image Trining API和文本样本训练模型接口Text Trining API。训练入口服务中回调函数接口Callback API可以响应于用户输入的启动训练指令,将初始待训练数据中多个待训练模型的状态设置为启动训练,并将多个待训练模型的状态保存至关系型数据库。图片样本训练模型接口ImageTrining API可以用于接收初始待训练数据中的图像数据,并将接收到的初始待训练数据存储至缓存型数据库,便于多个子任务对初始待训练数据进行轮询和训练。文本样本训练模型接口Text Trining API可以用于接收初始待训练数据中的文本数据,并将接收到的初始待训练数据存储至缓存型数据库,便于多个子任务对初始待训练数据进行轮询和训练。
本申请实施例中,当缓存数据库中的数据存储量过多或者接近缓存数据库的最大存储量时,训练入口服务可以先将初始待训练数据存储到硬盘。当缓存数据库中的数据存储量回复正常状态后,训练入口服务再将存储在硬盘中的初始待训练数据读取至缓存数据库,避免计算机设备出现故障时的数据丢失,使得缓存数据库具备持久化机制。
本申请书实施例中,多个第一监控模块和第二监控模块按照预设轮询时间间隔轮询缓存数据库时,一旦有监控模块检测到缓存数据库的状态为包含初始待训练数据状态时,则该监控模块对应的子任务会先分配到待训练数据,并对待训练数据进行训练。同时,回调接口模块则将待训练数据包含的待训练模型的状态在关系型数据库中更新为正在训练。需要说明的是,当初始待训练数据的数据量过大时,还需要对初始待训练数据进行划分,划分出至少一个第一待训练数据,并将至少一个第一待训练数据分配给至少一个子任务进行模型训练。其中,第一待训练数据的数据量大小可通过训练入口服务的超参数BatchSize大小来调整。具体的,当检测到缓存数据库的状态为包含初始待训练数据状态的监控模块为第一监控模块时,则可以根据CPU的时钟频率来判断初始待训练数据是否需要划分,以及划分出的第一待训练数据的数据量大小为多少。当检测到缓存数据库的状态为包含初始待训练数据状态的监控模块为第二监控模块时,则可以根据GPU的显存容量来判断初始待训练数据是否需要划分,以及划分出的第一待训练数据的数据量大小为多少。
其中,根据CPU的时钟频率确定第一待训练数据的数据量的具体方法可以包括:
首先,确定缓存数据库中的初始待训练数据的数据量是否小于或等于预设数据量阈值。预设数据量阈值为可以为CPU的时钟频率的X倍,X为小于或等于5的自然数。
例如,当第一子任务对应的CPU为双核,时钟频率(即主频)为3.6GHz,预设数据量阈值为CPU总主频数大小的2倍时,则确定第一子任务对应CPU的预设数据量阈值为3.6*2*2=14.4GB。
若缓存数据库中的初始待训练数据的数据量小于或等于预设数据量阈值,则认为一个CPU能够高效完成初始待训练数据的处理,可以确定初始待训练数据为第一待训练数据,即不对初始待训练数据进行划分。
例如,当预设数据量阈值为14.4GB时,若缓存数据库中的初始待训练数据的数据量为10GB,CPU则确定第一待训练数据的数据量为10GB。
若缓存数据库中的初始待训练数据的数据量大于预设数据量阈值,则认为一个CPU无法高效完成初始待训练数据的处理,可能需要排队处理,花费的时间较多,则可以根据预设数据量阈值将初始待训练数据进行划分,得到第一待训练数据。第一待训练数据的数据量等于或小于预设数据量阈值。
例如,当预设数据量阈值为14.4GB时,若缓存数据库中的初始待训练数据的数据量为20GB,CPU则可以从初始待训练数据中划分出14.4GB的第一待训练数据,第一待训练数据的数据量也可以小于14.4GB,例如14GB。
本申请实施例中,CPU根据CPU总主频数的大小确定预设数据量阈值,并按照预设数据量阈值得到小于或等于预设数据量阈值的第一待训练数据。由于第一待训练数据的数据量能够与对应CPU的计算能力相匹配,提高了模型训练过程中的数据处理的效率。
本申请实施例中,第一子任务获取到第一待训练数据之后,则将第一待训练数据与第一子任务进行绑定,并使用第一子任务对第一待训练数据中待训练模型进行训练。同时,回调接口模块则将关系型数据库中第一待训练数据中的待训练模型的状态从启动训练更新为正在训练。
本申请实施例中,可以将缓存数据库划分为多个不同的区域。在模型训练的过程中,待训练模型在不同的训练阶段可以在不同的区域上完成。例如,多个待训练模型在启动训练阶段可以在抢筹区被多个子任务对应的监控模块抢筹,一旦有待训练模型被子任务抢筹成功后,即被转移到缓存区,进入正在训练阶段。在缓存区的一个或多个待训练模型则会与其对应的子任务进行绑定,不会被其他子任务重复训练或被其他子任务抢筹,可以避免模型训练过程中的数据丢失或数据混淆。
图6为本申请实施例提供的一种子任务与缓存数据库的交互示意图。如图6所示,当训练入口服务在接收到初始待训练数据时,初始待训练数据可以存储在缓存数据库的抢筹区,等待多个监控模块轮询初始待训练数据。一旦有监控模块轮询到初始待训练数据,部分或全部初始待训练数据则会进入缓存区,并与对应子任务进行绑定。需要说明的是,位于缓存区的数据不再参与抢筹,也就不会被其他子任务对应的监控模块检测到。
本申请实施例中,将第一待训练数据与轮循到第一待训练数据的第一子任务进行绑定,可以避免其他子任务对应的监控模块重复查询到第一待训练数据,从而避免重复训练。回调接口模块则更新第一待训练数据对应的至少一个待训练模型的状态为正在训练。当用户想要查询一个或者多个训练模型的训练状态时,可以通过训练入口服务的查询接口选择需要查询的训练模型的ID,训练入口服务响应于用户输入的查询指令查询关系型数据库中用户指令对应训练模型的状态,并将查询到的状态显示在显示屏上,便于用户获取训练状态信息,实现对训练模型实时监测。
其中,回调接口模块除提供查询功能外,还可以提供启动和暂停功能,当用户想要控制一个或者多个训练模型的训练进度时,可以通过训练入口服务的启动或暂停接口选择需要启动或暂停的训练模型的ID,对选中的训练模型的训练过程进行把控。
本申请实施例中,当第一子任务获取到第一待训练数据后,其他子任务对应的监控模块则继续轮询缓存数据库。当有监控模块检测到缓存数据库的状态为包含数据状态时,其他子任务则继续对初始待训练数据进行抢筹。其中,初始待训练数据中不包含第一子任务正在训练的第一待训练数据。
例如,当预设数据量阈值为14.4GB时,若缓存数据库中的初始待训练数据的数据量为100GB,CPU则可以从初始待训练数据中划分出14.4GB的第一待训练数据,缓存数据库中剩余85.6GB待训练数据。当下一个轮询到数据的监控模块为第一监控模块时,CPU则可以从85.6GB初始待训练数据中继续划分出14.4GB的第一待训练数据,缓存数据库中剩余71.2GB待训练数据。
当第一子任务对第一待训练数据进行训练,得到至少一个第一训练模型后,则将训练好的至少一个第一训练模型存储至文件存储服务的存储区域。同时,回调接口模块则将第一训练模型的精度信息和测试结果信息存储至关系型数据库。并将第一待训练数据对应的至少一个训练模型的状态在关系型数据库中由正在训练更新为结束训练。
其中,模型精度信息用于表征模型处理的准确性,例如是对图像识别的准确度。如果输入一个标签为X的图像,识别出为X则说明识别结果为T,如果识别出为Y,则说明识别结果为错。模型精度表征输入多个图像时,识别结果的准确率。
例如,当第一子任务对第一待训练数据进行训练后,得到的第一训练模型中,模型预测为T且实际为T的样本数为190,模型总预测为T的样本数量为200,则第一训练模型的精度为95%。
本申请实施例中,在第一子任务完成对第一待训练数据的训练后,则与第一待训练数据进行解绑,便于训练下一轮数据。
图7为本申请实施例提供的一种第一子任务Q的工作流程示意图。如图7所示,当第一子任务Q的第一监控模块第一个轮询到缓存数据库的状态为包含数据的状态后。第一监控模块对应的第一子任务Q则绑定并获取到第一待训练数据,然后对第一待训练数据进行训练。完成训练后,生成校验模块则将训练后的第一训练模型存储至文件存储服务的文件存储区域。之后,回调接口模块则解除第一子任务Q与第一待训练数据的绑定,使得第一子任务Q能继续训练下一轮数据。
在第一子任务与第一待训练数据解绑后,第一子任务对应的第一监控模块则继续轮询缓存数据库的状态。
例如,当计算机设备建立了4个第一子任务(第一子任务A、第一子任务B、第一子任务C和第一子任务D),和2个第二子任务(第二子任务A和第二子任务B)。当第一子任务A、第一子任务B和第二子任务B为正在训练状态时,若第一子任务A完成了对第一待训练数据的训练,则与第一待训练数据进行解绑,第一子任务A则继续与第二子任务A、第一子任务C和第一子任务D做好承接训练的准备,即其各自对应的监控模块轮询缓存数据库的状态,准备获取下一组第一待训练数据。
步骤S340:若第二监控模块轮循到第一待训练数据,则使用第二子任务对第一待训练数据进行训练,得到至少一个第二训练模型。
本申请实施例中,若第二监控模块轮询到第一待训练数据,则可以根据GPU的显存容量确定第一待训练数据的数据量,并将第一待训练数据与第二子任务进行绑定,通过第二子任务对第一待训练数据进行训练,得到至少一个第二训练模型。具体可以参照步骤S330中第一子任务对第一待训练数据进行训练的过程,不同的是,本步骤是通过GPU对应的第二子任务对第一待训练数据进行训练的。
本申请提供的技术方案,计算机设备能够分别建立并调度运行在CPU上的第一子任务和运行在GPU上的第二子任务,并通过第一子任务和第二子任务上的监控模块轮询缓存数据库中的数据状态。当缓存数据库中有待训练数据时,则使用轮询到待训练数据的监控模块对应的子任务对第一待训练数据进行训练。本申请提供的技术方案能够在有大量待训练数据需要进行训练时,统一调度计算机设备上的CPU和GPU同时进行模型训练,充分利用了CPU这一闲置资源,提高了资源利用率。该方法避免了增加GPU数量和更换高性能GPU带来的成本的增加,在保证模型训练效率的同时,有效控制了模型训练所需的成本。
本申请实施例中,多个第一监控模块和第二监控模块按照预设轮询时间间隔轮询缓存数据库时,当检测到缓存数据库的状态为包含初始待训练数据状态的监控模块为第二监控模块时,则可以根据GPU的显存容量来判断初始待训练数据是否需要划分,以及划分出的第一待训练数据的数据量大小为多少。
其中,根据GPU的显存容量确定第一待训练数据的数据量的具体方法可以包括:
首先,确定缓存数据库中的初始待训练数据的数据量是否小于或等于预设数据量阈值,其中,预设数据量阈值为GPU的显存容量的Y倍,Y为小于或等于5的自然数。
例如,当第二子任务对应的GPU显存大小为8GB,预设数据量阈值为GPU的显存容量的3倍时,则确定第二子任务对应GPU的预设数据量阈值为8G*3=24GB。
若缓存数据库中的初始待训练数据的数据量小于或等于预设数据量阈值,则认为一个GPU能够高效完成初始待训练数据的处理,可以确定初始待训练数据为第一待训练数据,即不对初始待训练数据进行划分。
例如,当预设数据量阈值为24GB时,若缓存数据库中的初始待训练数据的数据量为10GB,则确定第一待训练数据的数据量为10GB。
若缓存数据库中的初始待训练数据的数据量大于预设数据量阈值,则认为一个GPU无法高效完成初始待训练数据的处理,可能需要排队处理,花费的时间较多。GPU则可以根据预设数据量阈值将初始待训练数据进行划分,得到第一待训练数据,第一待训练数据的数据量等于或小于预设数据量阈值。
例如,当预设数据量阈值为24GB时,若缓存数据库中的初始待训练数据的数据量为100GB,则从初始待训练数据中划分出的第一待训练数据可以是24GB,也可以小于24GB,例如23.8GB。
本申请实施例中,GPU根据GPU的显存容量确定预设数据量阈值,并按照预设数据量阈值得到小于或者等于预设数据量阈值的第一待训练数据。由于第一待训练数据的数据量能够与对应GPU的计算能力相匹配,提高了模型训练过程中的数据处理的效率。
本申请实施例中,第二子任务获取到第一待训练数据之后,则将第一待训练数据与第二子任务进行绑定,并使用第二子任务对第一待训练数据中待训练模型进行训练。同时,回调接口模块则将关系型数据库中第一待训练数据中的待训练模型的状态从启动训练更新为正在训练。
本申请实施例中,将第一待训练数据与轮循到第一待训练数据的第二子任务进行绑定,可以避免其他子任务对应的监控模块重复查询到第一待训练数据,从而避免重复训练。回调接口模块则更新第一待训练数据对应的至少一个待训练模型的状态为正在训练。当用户想要查询一个或者多个训练模型的训练状态时,可以通过训练入口服务的查询接口选择需要查询的训练模型的ID,训练入口服务响应于用户输入的查询指令查询关系型数据库中用户指令对应训练模型的状态,并将查询到的状态显示在显示屏上,便于用户获取训练状态信息,实现对训练模型实时监测。
本申请实施例中,当第二子任务获取到第一待训练数据后,其他子任务对应的监控模块则继续轮询缓存数据库,当有监控模块检测到缓存数据库的状态为包含数据状态时,其他子任务则继续对初始待训练数据进行抢筹。其中,初始待训练数据中不包含第二子任务正在训练的第一待训练数据。
例如,当预设数据量阈值为24GB时,若缓存数据库中的初始待训练数据的数据量为100GB,GPU则可以从初始待训练数据中划分出24GB的第一待训练数据,缓存数据库中剩余76GB待训练数据。当下一个轮询到数据的监控模块为第一监控模块时,CPU则可以从76GB初始待训练数据中继续划分出14.4GB的第一待训练数据,缓存数据库中剩余61.6GB待训练数据。
当第二子任务对第一待训练数据进行训练,得到至少一个第一训练模型后,则将训练好的至少一个第一训练模型存储至文件存储服务的存储区域,同时,回调接口模块则将第一训练模型的精度信息和测试结果信息存储至关系型数据库,并将第一待训练数据对应的至少一个训练模型的状态在关系型数据库中由正在训练更新为结束训练。
本申请实施例中,在第二子任务完成对第一待训练数据的训练后,则与第一待训练数据进行解绑,便于训练下一轮数据。在第二子任务与第一待训练数据解绑后,第二子任务对应的第二监控模块则继续轮询缓存数据库的状态。
例如,当计算机设备建立了2个第一子任务(第一子任务A和第一子任务B),和4个第二子任务(第二子任务A、第二子任务B、第二子任务C和第二子任务D)。当第一子任务A、第一子任务B和第二子任务A为正在训练状态时,若第二子任务A完成了对第一待训练数据的训练,则与第一待训练数据进行解绑,第一子任务A则继续与第二子任务B、第二子任务C和第二子任务D做好承接训练的准备,即其各自对应的监控模块轮询缓存数据库的状态,准备获取下一第一待训练数据。
在一些实施例中,本申请技术方案提供的方法可以应用到现有的计算机设备群中。通常,计算机设备群中包括多台计算机设备,每一台计算机设备都设置CPU和/或GPU。该计算机设备群可以称为多机多卡计算机设备。在待训练数据的数据量较大,所需计算资源需求高时,可以通过计算机设备群中多台计算机设备上的CPU和GPU共同用于模型训练。
图8为本申请实施例提供的一种多机多卡的计算机设备进行模型训练的训练系统示意图。如图8所示,多台计算机设备可以包括计算机设备1、计算机设备2、计算机设备3……计算机设备N,N为大于或者等于4的自然数,多台计算机设备组成的计算机设备群可以由其中一个计算机设备控制,控制计算机设备群的计算机设备可以提供控制其他计算机设备的服务,每台计算机设备上的CPU和/或GPU都部署有对应的子任务,用于训练待训练数据,在模型训练过程中,可以将待训练的数据划分为与计算机设备数量对应的多个训练任务(训练任务1、训练任务2、训练任务3……训练任务M),待训练的数据包括多个待训练模型,每个划分出来的训练任务都包括至少一个待训练模型。如图8所示,训练任务1中的待训练模型可以通过计算机设备1中的CPU来训练,训练任务2中的待训练模型可以通过计算机设备2中的CPU和GPU来训练,训练任务3中的待训练模型可以通过计算机设备3中的CPU和GPU来训练……训练任务M中的待训练模型可以通过计算机设备N中的CPU和GPU来训练。
应当理解地,在无逻辑冲突的前提下,上述各个申请实施例之间可以相互组合实施,以适应实际的应用需求。这些组合后得到的具体实施例或实施方案,仍属于本申请的保护范围内。
对应于上述实施例中的路径规划方法,本申请实施例提供了一种数据处理装置,该数据处理装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或全部,用于执行上述实施例中的数据处理方法中的步骤。
图9示出了本申请实施例提供的一种数据处理装置的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图9,该装置90包括建立模块910、轮询模块920、第一训练模块930和第二训练模块940。
建立模块910,用于建立第一子任务和第二子任务,第一子任务为运行在CPU上的子任务,第二子任务为运行在GPU上的子任务;
轮询模块920,用于使用第一监控模块和第二监控模块轮循缓存数据库,缓存数据库用于存储第一待训练数据,第一待训练数据包括至少一个待训练模型,第一监控模块为第一子任务中的模块,第二监控模块为第二子任务中的模块;
第一训练模块930,用于在第一监控模块轮循到第一待训练数据时,使用第一子任务对第一待训练数据进行训练,得到至少一个第一训练模型;
第二训练模块940,用于在第二监控模块轮循到第一待训练数据时,使用第二子任务对第一待训练数据进行训练,得到至少一个第二训练模型。
在一些实施方式中,第一训练模块930还用于:
若第一监控模块轮训到缓存数据库中的初始待训练数据,确定初始待训练数据的数据量是否小于或等于预设数据量阈值,预设数据量阈值为CPU的时钟频率的X倍,X为小于或等于5的自然数;
若是,确定初始待训练数据为第一待训练数据;
若否,则根据预设数据量阈值从初始待训练数据中划分得到第一待训练数据,第一待训练数据的数据量等于或小于预设数据量阈值。
在一些实施方式中,第二训练模块940还用于:
若第二监控模块轮训到缓存数据库中的初始待训练数据,确定初始待训练数据的数据量是否小于或等于预设数据量阈值,预设数据量阈值为GPU的显存容量的Y倍,Y为小于或等于5的自然数;
若是,确定初始待训练数据为第一待训练数据;
若否,则根据预设数据量阈值从初始待训练数据中划分得到第一待训练数据,第一待训练数据的数据量等于或小于预设数据量阈值。
在一些实施方式中,第一训练模块930还用于:
将第一待训练数据与第一子任务进行绑定,并使用第一子任务对第一待训练数据进行训练,得到至少一个第一训练模型;
将关系型数据库中,至少一个待训练模型的状态从启动训练更新为正在训练。
在一些实施方式中,第二训练模块940还用于:
将第一待训练数据与第二子任务进行绑定,并使用第二子任务对第一待训练数据进行训练,得到至少一个第二训练模型;
将关系型数据库中,至少一个待训练模型的状态从启动训练更新为正在训练。
在一些实施方式中,第一训练模块930还用于:
将至少一个第一训练模型的精度信息和测试结果信息存储至关系型数据库;
将关系型数据库中,至少一个第一训练模型的状态更新为结束训练;
将第一待训练数据与第一子任务进行解绑。
在一些实施方式中,第二训练模块940还用于:
将至少一个第二训练模型的精度信息和测试结果信息存储至关系型数据库;
将关系型数据库中,至少一个第二训练模型的状态更新为结束训练;
将第一待训练数据与第二子任务进行解绑。
在一些实施方式中,轮询模块920包括:
在预设周期的起始时刻,使用第一监控模块和第二监控模块轮循缓存数据库。
本申请中,装置90能够分别建立并调度运行在CPU上的第一子任务和运行在GPU上的第二子任务,并通过第一子任务和第二子任务上的监控模块轮询缓存数据库中的数据状态。当缓存数据库中有待训练数据时,则使用轮询到待训练数据的监控模块对应的子任务对第一待训练数据进行训练。本申请提供的装置90能够在有大量待训练数据需要进行训练时,统一调度计算机设备上的CPU和GPU同时进行模型训练,充分利用了CPU这一闲置资源,提高了资源利用率。该方法避免了增加GPU数量和更换高性能GPU带来的成本的增加,在保证模型训练效率的同时,有效控制了模型训练所需的成本。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
基于同一发明构思,本申请实施例还提供了一种电子设备。图10是本申请一实施例提供的电子设备的结构示意图。如图10所示,该实施例的电子设备10包括:至少一个处理器1010(图10中仅示出一个)、存储器1020、以及通信模块1040,存储器1020中存储有可能在处理器1010上运行的计算机程序1030。处理器1010执行计算机程序1030时实现上述数据处理方法实施例中的步骤,例如图3所示的310至步骤340。或者,处理器1010执行计算机程序1030时实现上述各装置实施例中各模块/单元的功能,例如图9所示模块910至模块940的功能,通信模块1040可以为单独为通信单元,用于与外部服务器或者终端设备进行通信。
电子设备10可包括,但不仅限于:处理器1010、存储器1020。本领域技术人员可以理解,图10仅仅是电子设备10的示例,并不构成对电子设备10的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子设备10还可以包括输入发送设备、网络接入设备、总线等。
处理器1010可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器1020在一些实施例中可以是电子设备10的内部存储单元,例如电子设备10的硬盘或内存。存储器1020也可以是电子设备10的外部存储设备,例如电子设备10上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。存储器1020还可以既包括电子设备10的内部存储单元,也包括外部存储设备。存储器1020用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如计算机程序1030的程序代码等。存储器1020还可以用于暂时的存储已经发送或者将要发送的数据。
另外,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行上述各个方法实施例中的步骤。
本申请实施例提供了一种芯片,芯片包括处理器和存储器,存储器中存储有计算机程序,所述计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述各个方法实施例中的步骤。
应理解,本申请实施例中提及的处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件,或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其他的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到大屏设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种数据处理方法,应用于计算机设备,所述计算机设备包括中央处理器CPU和图形处理器GPU,其特征在于,包括:
建立第一子任务和第二子任务,所述第一子任务为运行在所述CPU上的子任务,所述第二子任务为运行在所述GPU上的子任务;
使用第一监控模块和第二监控模块轮循缓存数据库,所述缓存数据库用于存储第一待训练数据,所述第一待训练数据包括至少一个待训练模型,所述第一监控模块为所述第一子任务中的模块,所述第二监控模块为所述第二子任务中的模块;
若所述第一监控模块轮循到所述第一待训练数据,则使用所述第一子任务对所述第一待训练数据进行训练,得到至少一个第一训练模型;
若所述第二监控模块轮循到所述第一待训练数据,则使用所述第二子任务对所述第一待训练数据进行训练,得到至少一个第二训练模型。
2.根据权利要求1所述的方法,其特征在于,所述若所述第一监控模块轮循到所述第一待训练数据,包括:
若所述第一监控模块轮训到所述缓存数据库中的初始待训练数据,确定所述初始待训练数据的数据量是否小于或等于预设数据量阈值,所述预设数据量阈值为所述CPU的时钟频率的X倍,X为小于或等于5的自然数;
若是,确定所述初始待训练数据为所述第一待训练数据;
若否,则根据所述预设数据量阈值从所述初始待训练数据中划分得到所述第一待训练数据,所述第一待训练数据的数据量等于或小于所述预设数据量阈值。
3.根据权利要求1所述的方法,其特征在于,所述若所述第二监控模块轮循到所述第一待训练数据,包括:
若所述第二监控模块轮训到所述缓存数据库中的初始待训练数据,确定所述初始待训练数据的数据量是否小于或等于预设数据量阈值,所述预设数据量阈值为所述GPU的显存容量的Y倍,Y为小于或等于5的自然数;
若是,确定所述初始待训练数据为所述第一待训练数据;
若否,则根据所述预设数据量阈值从所述初始待训练数据中划分得到所述第一待训练数据,所述第一待训练数据的数据量等于或小于所述预设数据量阈值。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述使用所述第一子任务对所述第一待训练数据进行训练,得到至少一个第一训练模型,包括:
将所述第一待训练数据与所述第一子任务进行绑定,并使用所述第一子任务对所述第一待训练数据进行训练,得到所述至少一个第一训练模型;
所述方法还包括:
将关系型数据库中,所述至少一个待训练模型的状态从启动训练更新为正在训练。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述使用所述第二子任务对所述第一待训练数据进行训练,得到至少一个第二训练模型包括:
将所述第一待训练数据与所述第二子任务进行绑定,并使用所述第二子任务对所述第一待训练数据进行训练,得到所述至少一个第二训练模型;
所述方法还包括:
将关系型数据库中,所述至少一个待训练模型的状态从启动训练更新为正在训练。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
将所述至少一个第一训练模型的精度信息和测试结果信息存储至所述关系型数据库;
将关系型数据库中,所述至少一个第一训练模型的状态更新为结束训练;
将所述第一待训练数据与所述第一子任务进行解绑。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述至少一个第二训练模型的精度信息和测试结果信息存储至所述关系型数据库;
将关系型数据库中,所述至少一个第二训练模型的状态更新为结束训练;
将所述第一待训练数据与所述第二子任务进行解绑。
8.根据权利要求1所述的方法,其特征在于,所述使用第一监控模块和第二监控模块轮循缓存数据库,包括:
在预设周期的起始时刻,使用所述第一监控模块和所述第二监控模块轮循所述缓存数据库。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序以实现如上述权利要求1-8中任一项中所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述权利要求1-8中任一项中所述的方法。
CN202311239030.3A 2023-09-25 2023-09-25 数据处理方法、电子设备及计算机可读存储介质 Active CN117369996B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311239030.3A CN117369996B (zh) 2023-09-25 2023-09-25 数据处理方法、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311239030.3A CN117369996B (zh) 2023-09-25 2023-09-25 数据处理方法、电子设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN117369996A true CN117369996A (zh) 2024-01-09
CN117369996B CN117369996B (zh) 2024-06-14

Family

ID=89406848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311239030.3A Active CN117369996B (zh) 2023-09-25 2023-09-25 数据处理方法、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117369996B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170178027A1 (en) * 2015-12-16 2017-06-22 Accenture Global Solutions Limited Machine for development and deployment of analytical models
CN112416368A (zh) * 2020-11-25 2021-02-26 中国科学技术大学先进技术研究院 缓存部署与任务调度方法、终端和计算机可读存储介质
CN112541513A (zh) * 2019-09-20 2021-03-23 百度在线网络技术(北京)有限公司 一种模型训练方法、装置、设备及存储介质
US20210158147A1 (en) * 2019-11-26 2021-05-27 International Business Machines Corporation Training approach determination for large deep learning models
CN113010376A (zh) * 2021-03-01 2021-06-22 北京聚云科技有限公司 一种对存储训练数据的云存储系统的监测方法及装置
CN113791889A (zh) * 2021-11-18 2021-12-14 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN113806624A (zh) * 2020-06-15 2021-12-17 阿里巴巴集团控股有限公司 数据处理方法以及装置
CN114564302A (zh) * 2022-01-29 2022-05-31 苏州浪潮智能科技有限公司 一种gpu资源分配方法、系统、设备以及介质
CN114612749A (zh) * 2022-04-20 2022-06-10 北京百度网讯科技有限公司 神经网络模型训练方法及装置、电子设备和介质
CN114741483A (zh) * 2022-06-09 2022-07-12 浙江香侬慧语科技有限责任公司 数据识别的方法和装置
CN114943885A (zh) * 2022-05-20 2022-08-26 武汉光庭信息技术股份有限公司 一种基于训练任务的同步缓存加速方法及系统
CN115118614A (zh) * 2022-06-27 2022-09-27 平安银行股份有限公司 作业异常检测方法、装置、电子设备及存储介质
CN115309517A (zh) * 2021-05-08 2022-11-08 中国移动通信集团浙江有限公司 任务调度训练方法、装置、设备及计算机可读存储介质
CN116452920A (zh) * 2023-05-06 2023-07-18 之江实验室 一种图像处理方法、装置、存储介质及电子设备

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170178027A1 (en) * 2015-12-16 2017-06-22 Accenture Global Solutions Limited Machine for development and deployment of analytical models
CN112541513A (zh) * 2019-09-20 2021-03-23 百度在线网络技术(北京)有限公司 一种模型训练方法、装置、设备及存储介质
US20210158147A1 (en) * 2019-11-26 2021-05-27 International Business Machines Corporation Training approach determination for large deep learning models
CN113806624A (zh) * 2020-06-15 2021-12-17 阿里巴巴集团控股有限公司 数据处理方法以及装置
CN112416368A (zh) * 2020-11-25 2021-02-26 中国科学技术大学先进技术研究院 缓存部署与任务调度方法、终端和计算机可读存储介质
CN113010376A (zh) * 2021-03-01 2021-06-22 北京聚云科技有限公司 一种对存储训练数据的云存储系统的监测方法及装置
CN115309517A (zh) * 2021-05-08 2022-11-08 中国移动通信集团浙江有限公司 任务调度训练方法、装置、设备及计算机可读存储介质
CN113791889A (zh) * 2021-11-18 2021-12-14 中国科学院成都文献情报中心 一种基于多级轮询队列控制器部署学习模型的方法
CN114564302A (zh) * 2022-01-29 2022-05-31 苏州浪潮智能科技有限公司 一种gpu资源分配方法、系统、设备以及介质
CN114612749A (zh) * 2022-04-20 2022-06-10 北京百度网讯科技有限公司 神经网络模型训练方法及装置、电子设备和介质
CN114943885A (zh) * 2022-05-20 2022-08-26 武汉光庭信息技术股份有限公司 一种基于训练任务的同步缓存加速方法及系统
CN114741483A (zh) * 2022-06-09 2022-07-12 浙江香侬慧语科技有限责任公司 数据识别的方法和装置
CN115118614A (zh) * 2022-06-27 2022-09-27 平安银行股份有限公司 作业异常检测方法、装置、电子设备及存储介质
CN116452920A (zh) * 2023-05-06 2023-07-18 之江实验室 一种图像处理方法、装置、存储介质及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
党宏杰 等: "基于预留缓存的并发访问及多任务并行支撑技术研究", 计算机测量与控制, vol. 31, no. 5, 25 May 2023 (2023-05-25), pages 255 - 259 *

Also Published As

Publication number Publication date
CN117369996B (zh) 2024-06-14

Similar Documents

Publication Publication Date Title
CN107977268B (zh) 人工智能的异构硬件的任务调度方法、装置及可读介质
US11327814B2 (en) Semaphores for serverless computing
CN107885762A (zh) 智能大数据系统、提供智能大数据服务的方法和设备
CN111104210A (zh) 一种任务处理方法、装置及计算机系统
CN106991073B (zh) 用于向量运算的数据读写调度器及保留站
KR20200109819A (ko) 전자 장치 및 이의 제어 방법
EP3951605B1 (en) Data transmission device and method, and readable storage medium
CN111143039B (zh) 一种虚拟机的调度方法、装置及计算机存储介质
CN112764893B (zh) 数据处理方法和数据处理系统
CN112988383A (zh) 一种资源分配方法、装置、设备以及存储介质
CN114327894A (zh) 资源分配方法、装置、电子设备及存储介质
CN113760242B (zh) 一种数据处理方法、装置、服务器和介质
CN111813541B (zh) 一种任务调度方法、装置、介质和设备
CN106095417A (zh) 一种前景应用程序界面刷新同步方法及系统
CN117707737A (zh) 一种任务调度优化方法、装置、设备及其存储介质
CN117369996B (zh) 数据处理方法、电子设备及计算机可读存储介质
CN110825502B (zh) 神经网络处理器和用于神经网络处理器的任务调度方法
CN116795492A (zh) 云平台的资源调度方法、装置、设备及可读存储介质
CN111752716A (zh) 模型使用方法、数据处理方法及装置
CN116303320A (zh) 基于日志文件的实时任务管理方法、装置、设备及介质
CN115564635A (zh) 一种gpu资源调度方法、装置、电子设备及存储介质
CN115562662A (zh) 应用页面的创建方法、装置、计算机设备及存储介质
CN105912394B (zh) 线程处理方法和系统
CN111309468B (zh) 资源调度方法、装置及存储介质
CN111444430A (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