模型训练方法、装置、电子设备及存储介质制造方法及图纸

技术编号:36813923 阅读:13 留言:0更新日期:2023-03-09 01:01
本公开提供了一种模型训练方法、装置、电子设备及存储介质,该模型训练方法包括:通过宿主机进程获取训练数据,并针对采用主从结构的训练节点集群对训练数据进行划分得到多个子训练数据;训练节点集群包括主节点和多个工作节点,宿主机进程运行于非可信执行环境内,训练节点集群运行于可信执行环境内;通过宿主机进程对每个子训练数据进行加密,并将加密后的子训练数据存储至宿主机进程的共享内存中;控制主节点及各个工作节点分别根据对应的数据存储地址从共享内存中获取对应的加密的子训练数据,并使用各自对应的解密的子训练数据分别对预设模型进行训练,得到训练好的模型。本申请实施例,通过分布式结构及共享内存可以提升模型的训练效率。提升模型的训练效率。提升模型的训练效率。

【技术实现步骤摘要】
模型训练方法、装置、电子设备及存储介质


[0001]本公开涉及人工智能(artificial intelligence,AI)
,具体而言,涉及一种模型训练方法、装置、电子设备和存储介质。

技术介绍

[0002]机器学习(Artificial Intelligence,AI)是利用大量的数据训练,然后将学习得到的结果用到后续的数据的决策/预测中去,目前已广泛应用于各种场景,如计算机视觉、自动驾驶等。
[0003]在实际的AI应用中,为了保证安全性(如模型安全、隐私安全等),需要将训练数据加密后传入可信执行环境(Trusted Execution Environment,TEE),并在TEE中完成模型的训练。然而,目前的训练方法,由于训练数据较大,需要占用较大的可信内存空间,导致TEE的启动和运行效率降低。此外,训练数据加密后传入TEE的过程也较为繁琐,进而影响了模型训练的效率。

技术实现思路

[0004]本公开实施例至少提供一种模型训练方法、装置、电子设备及存储介质,可以在保证训练数据隐私性的前提下,降低数据传输开销,并提升启动效率,进而提高模型的训练效率。
[0005]本公开实施例提供了一种模型训练方法,包括:
[0006]通过宿主机进程获取训练数据,并针对采用主从结构的训练节点集群对所述训练数据进行划分得到多个子训练数据;所述训练节点集群包括主节点和多个工作节点,所述主节点与所述多个工作节点用于协同进行模型训练;其中,所述宿主机进程运行于非可信执行环境内,所述训练节点集群运行于可信执行环境内;
[0007]通过所述宿主机进程对每个子训练数据进行加密,并将加密后的子训练数据存储至宿主机进程的共享内存中;所述宿主机进程的共享内存用于供所述宿主机进程和所述训练节点集群共享;
[0008]通过所述宿主机进程记录每个加密的子训练数据在所述共享内存中的数据存储地址,并将各个数据存储地址分别发送至对应的主节点以及工作节点;其中,每个数据存储地址对应一个训练节点;
[0009]控制所述主节点以及各个所述工作节点分别根据对应的数据存储地址从所述共享内存中获取对应的加密的子训练数据,并对所述加密的子训练数据进行解密后得到解密的子训练数据;
[0010]控制所述主节点以及各个所述工作节点使用各自对应的解密的子训练数据分别对预设模型进行训练,得到训练好的模型;在训练过程中,所述主节点用于向各个所述工作节点发送训练任务,并汇总各个所述工作节点发送的子训练结果。
[0011]本公开实施例中,通过采用分布式的主从结构的训练节点集群对模型进行协同训
练,可以将原本的较大的训练数据划分为多个较小的训练数据,如此,可以提升每个训练节点的启动和运行效率。此外,通过宿主机进程把加密的训练数据存放至共享内存区域内,不同的训练节点可以读写该共享内存区域。也即,每个训练节点可以直接在共享内存上进行解密操作,并解密结果放在训练节点内,进而可以省去原本的加密数据的复制开销和ecall开销,从而可以进一步提升模型的训练效率。
[0012]在一种可能的实施方式中,所述得到与所述训练节点数量对应的多个子训练数据之后,所述方法还包括:
[0013]通过所述宿主机进程启动所述主节点以及各个所述工作节点,并控制所述主节点以及各个所述工作节点分别根据对应的子训练数据的数据量大小,生成与所述数据量匹配的可信内存,所述可信内存用于存储所述子训练数据。
[0014]本公开实施例中,可以根据子训练数据的数据量大小,自适应生成相应的可信内存,进而可以提升每个训练节点的启动效率。
[0015]在一种可能的实施方式中,所述主节点与每个工作节点上分别配置有所述预设模型;所述控制所述主节点以及各个所述工作节点使用各自对应的解密的子训练数据分别对预设模型进行训练,得到训练好的模型,包括:
[0016]控制所述主节点基于各个工作节点分别对应的解密的子训练数据,为所述各个工作节点分配相应的训练任务,并控制所述主节点将各个训练任务发送至对应的工作节点;
[0017]控制每个工作节点根据对应的训练任务以及对应的解密的子训练数据对所述预设模型进行训练,得到对应的子训练结果;
[0018]控制每个工作节点将所述对应的子训练结果发送至所述主节点;
[0019]控制所述主节点将所述主节点的子训练结果以及所述各个工作节点的子训练结果汇总,得到总的训练结果;
[0020]重复上述步骤,直到所述总的训练结果符合预设条件。
[0021]本公开实施例中,由于多个训练节点集群包括主节点和多个工作节点,且主节点在负责整体训练逻辑的前提下同步参与训练,如此,可以在保证训练效率的前提下,提升模型训练的完整性。
[0022]在一种可能的实施方式中,所述方法还包括:
[0023]通过所述宿主机进程基于所述工作节点的数量创建目标数量的队列,所述目标数量为工作节点的数量的两倍;所述目标数量的队列用于所述主节点与所述多个工作节点之间进行双向通信。
[0024]本公开实施例中,由于宿主机进程运行于非可信环境中,因此,通过宿主机进程创建队列,可以提升队列创建的效率。另外,主节点和各个工作节点之间通过队列进行通信,可以提升通信效率。
[0025]在一种可能的实施方式中,所述目标数量的队列中两两队列为一对,每一对所述队列用于所述主节点与其中一个工作节点之间进行双向通信;所述通过所述宿主机进程基于所述工作节点的数量创建目标数量的队列之后,所述方法还包括:
[0026]通过所述宿主机进程将所述目标数量的队列存放于共享内存中,并生成每个队列的队列存储地址;
[0027]通过所述宿主机进程将所述目标数量队列中的每个队列的队列存储地址发送至
所述主节点,并将每对所述队列的队列存储地址发送至对应的工作节点;所述主节点与所述每个工作节点基于对应的队列存储地址进行通信。
[0028]本公开实施例中,通过将队列放入共享内容中,可以省去原本的加密数据的复制开销和ecall开销,从而可以进一步提升数据传输的效率。
[0029]在一种可能的实施方式中,所述每对队列包括第一队列以及第二队列,所述主节点与其中任一个工作节点的通信过程,包括以下:
[0030]控制所述主节点对第一目标数据加密后,将加密的第一目标数据写入所述第一队列的队列存储地址;以及,控制所述工作节点按照所述第一队列的队列存储地址,获取所述加密的第一目标数据;和/或,
[0031]控制所述工作节点对第二目标数据加密后,将加密的第二目标数据写入第二队列的队列存储地址;以及,控制所述主节点按照所述第二队列的队列存储地址,获取所述加密的第二目标数据。
[0032]本公开实施例中,针对主节点与任一工作节点之间的通信,通过加密技术和共享内存,不仅保证了数据的安全性,还提升了数据传输的效率。
[0033]在一种可能的实施方式中,所述方法还包括:
[0034]通过所述宿主机本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模型训练方法,其特征在于,包括:通过宿主机进程获取训练数据,并针对采用主从结构的训练节点集群对所述训练数据进行划分得到多个子训练数据;所述训练节点集群包括主节点和多个工作节点,所述主节点与所述多个工作节点用于协同进行模型训练;其中,所述宿主机进程运行于非可信执行环境内,所述训练节点集群运行于可信执行环境内;通过所述宿主机进程对每个子训练数据进行加密,并将加密后的子训练数据存储至宿主机进程的共享内存中;所述宿主机进程的共享内存用于供所述宿主机进程和所述训练节点集群共享;通过所述宿主机进程记录每个加密的子训练数据在所述共享内存中的数据存储地址,并将各个数据存储地址分别发送至对应的主节点以及工作节点;其中,每个数据存储地址对应一个训练节点;控制所述主节点以及各个所述工作节点分别根据对应的数据存储地址从所述共享内存中获取对应的加密的子训练数据,并对所述加密的子训练数据进行解密后得到解密的子训练数据;控制所述主节点以及各个所述工作节点使用各自对应的解密的子训练数据分别对预设模型进行训练,得到训练好的模型;在训练过程中,所述主节点用于向各个所述工作节点发送训练任务,并汇总各个所述工作节点发送的子训练结果。2.根据权利要求1所述的方法,其特征在于,所述得到与所述训练节点数量对应的多个子训练数据之后,所述方法还包括:通过所述宿主机进程启动所述主节点以及各个所述工作节点,并控制所述主节点以及各个所述工作节点分别根据对应的子训练数据的数据量大小,生成与所述数据量匹配的可信内存,所述可信内存用于存储所述子训练数据。3.根据权利要求1所述的方法,其特征在于,所述主节点与每个工作节点上分别配置有所述预设模型;所述控制所述主节点以及各个所述工作节点使用各自对应的解密的子训练数据分别对预设模型进行训练,得到训练好的模型,包括:控制所述主节点基于各个工作节点分别对应的解密的子训练数据,为所述各个工作节点分配相应的训练任务,并控制所述主节点将各个训练任务发送至对应的工作节点;控制每个工作节点根据对应的训练任务以及对应的解密的子训练数据对所述预设模型进行训练,得到对应的子训练结果;控制每个工作节点将所述对应的子训练结果发送至所述主节点;控制所述主节点将所述主节点的子训练结果以及所述各个工作节点的子训练结果汇总,得到总的训练结果;重复上述步骤,直到所述总的训练结果符合预设条件。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:通过所述宿主机进程基于所述工作节点的数量创建目标数量的队列,所述目标数量为工作节点的数量的两倍;所述目标数量的队列用于所述主节点与所述多个工作节点之间进行双向通信。5.根据权利要求4所述的方法,其特征在于,所述目标数量的队列中两两队列为一对,每一对所述队列用于所述主节点与其中一个工作节点之间进行双向通信;所述通过所述宿
主机进程基于所述工作节点的数量创建目标数量的队列之后,所述方法还包括:通过所述宿主机进程将所述目标数量的队列存放于共享内存中,并生成每个队列的队列存储地址;通过所述宿主机进程将所述目标数量队列中的每个队列的队列存储地址发送至所述主节点,并将每对所述队列的队列存储地址发送至对应的工作节点;所述主节点与所述每个工作节点基于对应的队列存储地址进行通信。6.根据权利要求5所述的方法,其特征在于,所述每对队列包括第一队列以及第二队列,所述主节点与其中任一工作节点的通信过程,包括以下:控制所述主节点对第一目标数据加密后,将加密的第一目标数据写入所述第一队列的队列存储地址;以及,控制所述工作节点按照所述第一队列的队列存储地址,获取所述...

【专利技术属性】
技术研发人员:贺培轩林宇王伟力张尧吴烨
申请(专利权)人:抖音视界有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1