语音识别模型训练方法、装置、设备及存储介质与流程



1.本技术实施例涉及人工智能技术领域,尤其涉及一种语音识别模型训练方法、装置、设备及存储介质。


背景技术:



2.自动语音识别(automatic speech recognition,asr),即就是将麦克风采集的音频转换为文字的过程。在asr任务中,端到端的语音识别是当前研究热点。基于pytorch的端到端语音处理工具箱(end-to-end speech processing toolkit,espnet2)是业界的一种主要的语音工具箱,其集成了语音识别和语音合成(tts)等训练场景。
3.目前,espnet2实现asr任务训练的具体流程包括:数据准备、特征提取、转换数据格式、语言模型的训练、语音识别模型的训练以及识别与打分,其中,语音识别模型的训练是使用字典、训练集和测试集,基于连接时序分类(connectionist temporal classification,ctc)模型、注意力机制(attention)模型的架构和并行计算的特征提取器(transformer)的解码器进行声学部分的训练,所基于的ctc+transformer这种复杂的模型结构往往需要大量的数据进行分布式训练。
4.现有技术中,语音识别模型的训练是使用一种基于数据并行的分布式训练方法,该方法采用多进程训练的分布式启动方式将语音识别模型的训练拆分为n个进程(n为gpu的数量),n个进程并行开始训练,最后使用其中一个进程对训练的模型存储,训练流程复杂,训练速度较慢。


技术实现要素:



5.本技术提供一种语音识别模型训练方法、装置、设备及存储介质,可简化语音识别模型的训练流程,提高训练速度。
6.第一方面,本技术提供一种语音识别模型训练方法,包括:
7.获取训练数据和分布式并行训练待使用的设备数量n,所述n为正整数;
8.使用深度学习训练优化库启动器对语音识别模型训练任务进行封装;
9.对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,所述多进程信息包括分布式并行训练的进程数,所述分布式并行训练的进程数为所述n;
10.根据所述训练数据和所述多进程信息,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练;
11.将任意一个进程的语音识别模型确定为训练得到的语音识别模型。
12.第二方面,本技术提供一种语音识别模型训练装置,包括:
13.获取模块,用于获取训练数据和分布式并行训练待使用的设备数量n,所述n为正整数;
14.处理模块,用于使用深度学习训练优化库启动器对语音识别模型训练任务进行封装;
15.加载模块,用于对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,所述多进程信息包括分布式并行训练的进程数,所述分布式并行训练的进程数为所述n;
16.训练模块,用于根据所述训练数据和所述多进程信息,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练;
17.确定模块,用于将任意一个进程的语音识别模型确定为训练得到的语音识别模型。
18.第三方面,本技术提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,以执行第一方面的方法。
19.第四方面,本技术提供一种计算机可读存储介质,包括指令,当其在计算机程序上运行时,使得所述计算机执行第一方面的方法。
20.第五方面,本技术提供一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得所述计算机执行第一方面的方法。
21.综上,在本技术中,通过获取训练数据和分布式并行训练待使用的设备数量n,使用深度学习训练优化库启动器对语音识别模型训练任务进行封装,对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,根据训练数据和多进程信息,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,最后将任意一个进程的语音识别模型确定为训练得到的语音识别模型。通过使用分布式训练启动器初始化后,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,使得可以按照单进程逻辑实现多个进程的模型训练流程,简化了冗余的训练代码,代码清晰,提高了训练速度。
22.进一步地,在本技术中,通过在分布式并行训练时,每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练,可将整个模型的状态信息进行切分,分配到并行训练的各个设备中,因此降低了内存的消耗,进而可通过调整一次训练的样本数目(batch size)提高训练速度。从而,更进一步提高了训练速度。
附图说明
23.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1为本技术实施例提供的一种语音识别模型训练方法的应用场景示意图;
25.图2为本技术实施例提供的一种语音识别模型训练方法的流程图;
26.图3为本技术实施例提供的一种语音识别模型训练方法的流程图;
27.图4为本技术实施例提供的一种内存消耗对比示意图;
28.图5为本技术实施例提供的一种语音识别模型训练装置的结构示意图;
29.图6是本技术实施例提供的电子设备700的示意性框图。
具体实施方式
30.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
31.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
32.在介绍本技术技术方案之前,下面先对本技术相关知识进行介绍:
33.1、人工智能(artificial intelligence,ai),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
34.2、机器学习(machine learning,ml):是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
35.3、深度学习(deep learning,dl):是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。深度学习是学习训练样本数据的内在规律和表示层次,这些学习过程中获得的信息对文字、图像和声音等数据的解释有很大的帮助。深度学习的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。
36.4、语音技术(speech technology)的关键技术有自动语音识别技术(asr)和语音合成技术(tts)以及声纹识别技术。让计算机能看、能听、能说、能感觉,是未来人机交互的发展方向。
37.5、espnet2,是基于pytorch的端到端语音处理工具箱,集成了语音识别和语音合成(tts)等训练场景。
38.6、deepspeed,是一个开源深度学习训练优化库框架,是基于pytorch的轻量级框架,用于超大型模型的分布式训练工具。
39.本技术实施例提供的技术方案主要涉及人工智能技术中的语音处理技术和深度学习等技术,具体例如涉及asr技术。具体可以通过下述实施例进行说明。
40.现有技术中,语音识别模型的训练是使用一种基于数据并行的分布式训练方法,该方法训练流程复杂,训练速度较慢,且内存冗余消耗会限制语音识别模型的训练速度,两方面的因素均导致语音识别模型的训练速度较慢。为了解决这一技术问题,本技术实施例通过获取训练数据和分布式并行训练待使用的设备数量n,使用深度学习训练优化库启动器对语音识别模型训练任务进行封装,对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,根据训练数据和多进程信息,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,最后将任意一个进程的语音识别模型确定为训练得到的语音识别模型。通过使用分布式训练启动器初始化后,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,使得可以按照单进程逻辑实现多个进程的模型训练流程,相比较现有技术中使用的手写定义的多进程,减少了进程内的条件判断,简化了冗余的训练代码,代码清晰,可简化语音识别模型的训练流程,提高了训练速度。
41.现有技术中,该方法在数据并行过程中,复制整个语音识别模型的状态信息至并行训练的n个gpu上,占用每个gpu的内存,会导致大量的内存冗余消耗。随着模型复杂度和数据集的增加,内存冗余消耗会限制语音识别模型的训练速度,会导致语音识别模型的训练速度较慢。
42.为解决这一问题,本技术实施例中通过在分布式并行训练时,每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练,可将整个语音识别模型的状态信息进行切分,分配到并行训练的各个设备中,因此降低了内存的消耗,进而可通过调整一次训练的样本数目(batch size)提高训练速度。从而,更进一步提高了训练速度。
43.示例性的,图1为本技术实施例提供的一种语音识别模型训练方法的应用场景示意图,如图1所示,本技术实施例的实施场景涉及服务器1和终端设备2,终端设备2可以通过通信网络与服务器1进行数据通信。
44.其中,在一些可实现方式中,终端设备2是指一类具备丰富人机交互方式、拥有接入互联网能力、通常搭载各种操作系统、具有较强处理能力的设备。终端设备可以是智能手机、平板电脑、便携式笔记本电脑、台式电脑等终端设备或电话手表等,但不限于此。可选的,本技术实施例中,终端设备2中安装有语音识别软件的客户端,用户通过该客户端可以输入相应的待识别语音信息。
45.其中,在一些可实现方式中,终端设备2包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。示例性地,智能语音交互设备可以是智能音箱、智能电视盒子、在线语音交互系统、智能语音助手、车载智能语音设备和具备同声传译功能或安装有语音输入法等的智能语音设备等等。
46.图1中的服务器1可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集或者分布式系统,还可以是提供云计算服务的云服务器。本技术对此不做限制。
47.示例性地,服务器1用于布设语音识别模型并对语音识别模型进行训练,并将经过训练的语音识别模型部署在相应的终端设备中,并通过终端设备(例如终端设备2)利用所
部署的语音识别模型对使用环境中的语音信息进行处理,如进行语音识别。
48.可以理解的是,在通过语音识别模型对使用环境中的语音信息进行处理之前,还需对语音识别模型进行训练,具体可以采用本技术实施例提供的语音识别模型训练方法。本技术实施例提供的语音识别模型训练方法,有助于语音识别模型的加速训练,减少语音识别模型训练的整体时间,提高训练速度。
49.在一些可实现方式中,图1示例性地示出了一个终端设备、一台服务器,实际上可以包括其他数量的终端设备和服务器,本技术对此不做限制。
50.在一些可实现方式中,本技术实施例提供的语音识别模型训练方法可应用于基于espnet2开发的asr训练任务中,有助于语音识别模型的加速训练,减少语音识别模型训练的整体时间,提高训练速度。
51.在一些可实现方式中,基于espnet2实现asr训练任务的具体流程可以包括:
52.1.数据准备,具体为下载数据与解压缩数据。
53.2.特征提取,使用kaldi(kaldi也是个开源asr工具)来提取语音特征。
54.3.转换数据格式,将中间数据转化为json格式。
55.4.训练语言模型。
56.5.训练语音识别模型,具体可以是使用字典、训练集和测试集,基于ctc模型、attention的架构和transformer的解码器进行声学部分的训练。
57.6.识别与打分,联合transformer模型、ctc模型和rnn语言模型进行打分。
58.可选的,本技术实施例提供的语音识别模型训练方法可应用于上述流程中的第5个流程,即训练语音识别模型。可提高语音识别模型的训练速度,因此可提高整体asr训练任务的训练速度。
59.可选的,本技术实施例提供的语音识别模型训练方法还可以单独进行训练使用。
60.下面结合附图,对本技术实施例提供的语音识别模型训练方法进行详细说明。
61.图2为本技术实施例提供的一种语音识别模型训练方法的流程图,该方法的执行主体可以是有运行语音识别模型训练装置的各种电子设备,例如可以是如带有语音识别功能的终端设备、带有语音识别模型训练功能的服务器或者服务器集。如图2所示,本实施例的方法可以包括:
62.s101、获取训练数据和分布式并行训练待使用的设备数量n,n为正整数。
63.具体来说,获取训练数据和分布式并行训练待使用的设备数量n,可以是接收输入的训练数据和分布式并行训练待使用的设备数量n。其中,待使用的设备可以是图形处理器(graphics processing unit,gpu)。分布式并行训练的进程数等于待使用的设备数量n。
64.s102、使用深度学习训练优化库启动器对语音识别模型训练任务进行封装。
65.具体地,获取到训练数据和分布式并行训练待使用的设备数量n后,即要开启一个语音识别模型训练任务。使用深度学习训练优化库启动器(deepspeed.lauch)对语音识别模型训练任务进行封装,可以使得后面的分布式并行训练可以使用深度学习训练优化库中的部分功能。
66.作为一种可实施的方式,使用深度学习训练优化库启动器对语音识别模型训练任务进行封装,可以为:
67.使用深度学习训练优化库启动器对语音识别模型训练任务的训练入口进行改写。
68.s103、对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,多进程信息包括分布式并行训练的进程数,分布式并行训练的进程数为n。
69.具体来说,现有流程中采用的多进程管理启动器(torch.multiprocessing)开始分布式并行训练,多进程管理启动器需要用户手动控制进程的基础信息,并提交到整个任务流程中,代码采用多线并行的实现方式,代码较多,速度较慢。本技术实施例中采用分布式训练启动器(torch.distributed.launch)开始分布式并行训练,用户可以按照单进程逻辑实现训练过程,代码清晰、速度较快,且分布式训练启动器为标准化流程,可降低维护成本。
70.对分布式训练启动器(torch.distributed.launch)进行初始化,加载用于进行分布式并行训练的多进程信息,多进程信息包括分布式并行训练的进程数,分布式并行训练的进程数为n,可选的,多进程信息还可以包括n个进程中每个进程的标识、n个设备中每个设备的标识以及每个进程的标识与每个设备的标识的关联关系中的至少一项。可选的,n个进程中每个进程的标识、n个设备中每个设备的标识以及每个进程的标识与每个设备的标识的关联关系可以是s101之后接收用户输入的,还可以是在s101之后根据设备数量n设置的。
71.可选的,本实施例中分布式训练启动器的参数需要修改以适配asr训练任务数据长度差异大的训练特征。经过多次实验验证,需要修改在进行子状态信息汇总时对模型大小的内存限制,需要修改的参数可以包括:减少桶的尺寸(reduce_bucket_size)和收集桶的尺寸(allgather_bucket_size)。
72.s104、根据训练数据和多进程信息,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练。
73.具体来说,对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息之后,即可开始分布式并行训练,即开始n个进程的语音识别模型的分布式并行训练,本技术实施例中,对每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练。
74.作为一种可实施的方式,根据训练数据和多进程信息,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,具体可以为:
75.s1041、使用预设的切分算法将训练数据分为n份子训练数据。
76.其中,训练数据为语音训练数据,由于语音训练数据的长度的变化的,此处将训练数据分为n份子训练数据,并不是长度等分,因此n份子训练数据中,子训练数据的长度可以相等也可以不相等。
77.具体地,因为deepspeed框架中默认开启训练数据等分的操作,对于语音训练数据不适合等分的处理,因此需要修改代码,在代码修改时,需要对deepspeed框架中数据读取的步骤进行注释,修改为预设的切分算法对应的代码,此处预设的切分算法可以自定义。
78.s1042、基于n份子训练数据,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,其中,一份子训练数据用于一个进程的语音识别模型的训练。
79.具体地,使用深度学习训练优化库,根据n份子训练数据进行n个进程的语音识别模型的分布式并行训练,n个进程同时进行,一份子训练数据用于一个进程的语音识别模型的训练。
80.进一步地,作为一种可实施的方式,n个进程中每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练。本实施例中,通过采用基于数据并行的零冗余优化器(zero redundancy optimizer,zero)进行模型训练,可将整个语音识别模型的状态信息进行切分,分配到并行训练的各个设备中,因此降低了内存的消耗。由于语音识别模型的状态信息包括优化过程信息、梯度信息和参数信息,可选的,本实施例中可以是仅对优化过程信息进行切分,分配到并行训练的各个设备中,此时可以使用基于数据并行的零冗余优化器一阶段(zero redundancy optimizer,zero1)进行模型训练;还可以是对优化过程信息和梯度信息进行切分,分配到并行训练的各个设备中;还可以是对优化过程信息和参数信息进行切分,分配到并行训练的各个设备中;还可以是对优化过程信息、梯度信息和参数信息进行切分,分配到并行训练的各个设备中。
81.进一步地,作为一种可实施的方式,n个进程的语音识别模型中的一个进程的语音识别模型基于n份子训练数据中的一份子训练数据,通过如下方式进行训练得到:
82.s10421、对深度学习训练优化库的引擎的接口进行初始化。
83.s10422、构建语音识别模型、优化器和调度器,加载深度学习训练优化库的引擎,对已构建的语音识别模型、优化器和调度器进行封装,得到封装后的语音识别模型、封装后的优化器和封装后的调度器。
84.s10423、加载预训练模型,并加载一份子训练数据。
85.具体地,加载预训练模型和加载一份子训练数据的具体过程可以和现有的流程中相同,此处不使用深度学习训练优化库的处理逻辑来加载预训练模型和加载一份子训练数据,原因在于语音类训练数据的特性,即语音类训练数据的长度可变(一句话有长短之分)。
86.s10424、加载检查点,分布式存储检查点的第一状态信息,第一状态信息包括封装后的语音识别模型的状态信息。
87.其中,封装后的语音识别模型的状态信息包括优化过程信息,或者,封装后的语音识别模型的状态信息可以包括梯度信息和参数信息中的至少一项以及优化过程信息。即就是,封装后的语音识别模型的状态信息可以包括优化过程信息,或者,封装后的语音识别模型的状态信息可以包括优化过程信息和梯度信息,或者,封装后的语音识别模型的状态信息可以包括优化过程信息和参数信息,或者,封装后的语音识别模型的状态信息可以包括优化过程信息、梯度信息和参数信息。
88.本技术实施例中,分布式存储检查点的第一状态信息或第二状态信息,是指将第一状态信息或第二状态信息切分后分别存储在n个设备上。
89.本技术实施例中,加载检查点后,还需存储检查点的封装后的优化器的状态信息和封装后的调度器的状态信息,该两项信息所占内存较小,可以全部复制并存储在n个设备中的每个设备上。
90.可选的,分布式存储检查点的第一状态信息,可以是将第一状态信息切分为n个相等的子状态信息,将n个子状态信息分别存储在n个设备上。
91.s10425、根据一份子训练数据,用基于数据并行的零冗余优化器对封装后的语音识别模型进行训练迭代,得到训练后的一个进程的语音识别模型和检查点的第二状态信息。
92.具体地,在一种可实施的方式,s10425具体可以为:
93.根据一份子训练数据对封装后的语音识别模型进行训练,在封装后的语音识别模型训练的迭代过程中,分别进行前向传播、反向传播和参数更新,更新并存储设备上存储的一个子状态信息,确定封装后的语音识别模型训练结束,得到训练后的一个进程的语音识别模型,获取其它n-1个设备上分别存储的一个子状态信息,得到n-1个子状态信息,将设备上存储的一个子状态信息和n-1个子状态信息汇总,得到检查点的第二状态信息。可选的,此处的子状态信息汇总使用allgather算法,以进行子状态信息的传递与同步接收。
94.具体来说,将第一状态信息切分为n个相等的子状态信息,将n个子状态信息分别存储在n个设备上,这样在模型并行训练过程中,每个设备只存储和更新第一状态信息的1/n,只更新参数的1/n,在训练结束时,根据每个设备上存储的子状态信息进行汇总,就可获得完整的更新的状态信息和更新的参数。
95.s10426、分布式存储第二状态信息,第二状态信息包括训练后的一个进程的语音识别模型的状态信息。
96.可选的,分布式存储检查点的第二状态信息,可以是将第二状态信息切分为n个相等的子状态信息,将n个子状态信息分别存储在n个设备上。
97.需要说明的是,训练后的一个进程的语音识别模型为封装后的语音识别模型训练后的模型,训练后的一个进程的语音识别模型的状态信息包括的内容类型与封装后的语音识别模型的状态信息包括的内容类型相同,例如,封装后的语音识别模型的状态信息包括优化过程信息,则训练后的一个进程的语音识别模型的状态信息也包括优化过程信息。
98.本技术实施例中,通过使用基于数据并行的零冗余优化器对所述封装后的语音识别模型进行训练迭代,
99.s105、将任意一个进程的语音识别模型确定为训练得到的语音识别模型。
100.本实施例提供的语音识别模型训练方法,通过获取训练数据和分布式并行训练待使用的设备数量n,使用深度学习训练优化库启动器对语音识别模型训练任务进行封装,对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,根据训练数据和多进程信息,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,最后将任意一个进程的语音识别模型确定为训练得到的语音识别模型。通过使用分布式训练启动器初始化后,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,使得可以按照单进程逻辑实现多个进程的模型训练流程,简化了冗余的训练代码,代码清晰,提高了训练速度。
101.下面结合一个具体的实施例,对本技术实施例提供的技术方案进行详细说明。
102.图3为本技术实施例提供的一种语音识别模型训练方法的流程图,该方法的执行主体可以是有运行语音识别模型训练装置的各种电子设备,例如可以是如带有语音识别功能的终端设备、带有语音识别模型训练功能的服务器或者服务器集。如图3所示,本实施例的方法可以包括:
103.s201、获取训练数据和分布式并行训练待使用的设备数量n,n为正整数。
104.具体来说,获取训练数据和分布式并行训练待使用的设备数量n,可以是接收输入的训练数据和分布式并行训练待使用的设备数量n。其中,待使用的设备可以是gpu。分布式并行训练的进程数等于待使用的设备数量n。
105.s202、使用深度学习训练优化库启动器对语音识别模型训练任务进行封装。
106.具体地,获取到训练数据和分布式并行训练待使用的设备数量n后,即要开启一个语音识别模型训练任务。使用深度学习训练优化库启动器(deepspeed.lauch)对语音识别模型训练任务进行封装,可以使得后面的分布式并行训练可以使用深度学习训练优化库的流程进行。
107.s203、对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息。
108.其中,多进程信息可以包括分布式并行训练的进程数(为n)、n个进程中每个进程的标识、n个设备中每个设备的标识以及每个进程的标识与每个设备的标识的关联关系。
109.可选的,n个进程中每个进程的标识、n个设备中每个设备的标识以及每个进程的标识与每个设备的标识的关联关系可以是s101之后接收用户输入的,还可以是在s101之后根据设备数量n设置的。
110.s204、使用预设的切分算法将训练数据分为n份子训练数据,基于n份子训练数据,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,其中,一份子训练数据用于一个进程的语音识别模型的训练。
111.作为一种可实施的方式,s204具体可以包括:
112.s2041、对深度学习训练优化库的引擎的接口进行初始化。
113.具体地,对深度学习训练优化库(deepspeed)的引擎的接口进行初始化(deepspeed.init_distributed),为下一步deepspeed引擎的加载做初始化准备。
114.s2042、构建语音识别模型、优化器和调度器,加载深度学习训练优化库的引擎,对已构建的语音识别模型、优化器和调度器进行封装,得到封装后的语音识别模型、封装后的优化器和封装后的调度器。
115.s2043、加载预训练模型。
116.s2044、加载一份子训练数据。
117.具体地,s2043和s2044可使用espnet2原有数据加载方案,对deepspeed强制加载数据的能力进行了覆盖。
118.s2045、加载检查点,分布式存储检查点的第一状态信息,第一状态信息包括封装后的语音识别模型的状态信息。
119.可选的,封装后的语音识别模型的状态信息可以包括梯度信息、优化过程信息和参数信息。对于训练过程中语音识别模型的状态信息而言,优化过程状态信息消耗内存最多。
120.在一种可实施的方式中,封装后的语音识别模型的状态信息包括优化过程信息,即本实施例中对优化过程信息分布式存储,将梯度信息和参数信息存储在每个设备上。相应地,零冗余优化器可以采用zero1。本实施例中通过将优化过程状态信息分布式存储,可以减少内存消耗。
121.图4为本技术实施例提供的一种内存消耗对比示意图,如图4所示,现有技术中是将语音识别模型的状态信息(包括梯度信息、优化过程信息和参数信息)复制存储在并行训练的n个gpu上(如图gpu0—gpu
n-1
),占用每个gpu的内存。本实施例中将语音识别模型的状态信息中的优化过程信息分布式存储,具体是将优化过程信息分为n个相等的分区后存储在n个gpu上,将梯度信息和参数信息复制存储在并行训练的n个gpu上。使用本实施例的方
法后,优化过程信息分区后的内存消耗从现有的4ψ+kψ减少到4ψ+k/ndψ。
122.在一种可实施的方式中,封装后的语音识别模型的状态信息包括梯度信息和优化过程信息,即本实施例中对梯度信息和优化过程信息分布式存储,将参数信息存储在每个设备上。
123.在一种可实施的方式中,封装后的语音识别模型的状态信息包括参数信息、优化过程信息和梯度信息,即本实施例中对参数信息、优化过程信息和梯度信息分布式存储。
124.可选的,分布式存储检查点的第一状态信息,可以是将第一状态信息切分为n个相等的子状态信息,将n个子状态信息分别存储在n个设备上,一个设备存储一个子状态信息。
125.可选的,第一状态信息还可以包括封装后的优化器的状态信息和封装后的调度器的状态信息中的至少一项,通过将封装后的优化器的状态信息和封装后的调度器的状态信息中的至少一项也进行分布式存储,可进一步降低内存的消耗。
126.本实施例中,通过将检查点的第一状态信息分布式存储,还可一定程度上解决asr任务分布式训练显存不均衡的问题。
127.s2046、根据一份子训练数据,用基于数据并行的零冗余优化器对封装后的语音识别模型进行训练迭代,得到训练后的一个进程的语音识别模型和检查点的第二状态信息。
128.具体地,在一种可实施的方式,s2046具体可以为:
129.根据一份子训练数据对封装后的语音识别模型进行训练,在封装后的语音识别模型训练的迭代过程中,分别进行前向传播、反向传播和参数更新,更新并存储设备上存储的一个子状态信息,确定封装后的语音识别模型训练结束,得到训练后的一个进程的语音识别模型,获取其它n-1个设备上分别存储的一个子状态信息,得到n-1个子状态信息,将设备上存储的一个子状态信息和n-1个子状态信息汇总,得到检查点的第二状态信息。
130.s2047、分布式存储检查点的第二状态信息,第二状态信息包括训练后的一个进程的语音识别模型的状态信息。
131.可选的,分布式存储检查点的第二状态信息,可以是将第二状态信息切分为n个相等的子状态信息,将n个子状态信息分别存储在n个设备上。
132.可选的,第二状态信息还包括训练后的优化器的状态信息和训练后的调度器的状态信息中的至少一项,通过将训练后的优化器的状态信息和训练后的调度器的状态信息中的至少一项也进行分布式存储,可进一步降低内存的消耗。
133.可以理解的是,第二状态信息与第一状态信息包括内容相同。
134.s205、将任意一个进程的语音识别模型确定为训练得到的语音识别模型。
135.通过使用本技术实施例提供的语音模型训练方法,通过使用分布式训练启动器初始化后,使用深度学习训练优化库进行n个进程的语音识别模型的分布式并行训练,使得可以按照单进程逻辑实现多个进程的模型训练流程,可简化语音识别模型的训练流程,提高了训练速度。另外,通过每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练,降低了内存的消耗,进而可通过调整一次训练的样本数目(batch size)提高训练速度。上述两点结合可进一步提高训练速度。
136.在一实施例中,以英文训练数据为例,在单机八卡分布式训并行训练中,加速比可达到1.35,减少了整体训练时间,训练速度提升20%以上,如下表一所示:
137.表一训练时间对比
[0138][0139]
本技术实施例中,通过每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练,在一实施例中,如下表二所示,本技术实施例的语音识别模型训练可以减少400mib以上的显存占用,具体以英文训练为例,单机八卡分布式训并行训练中,相比现有技术的最大显存为10203mib,本技术实施例最大占用显存为9453mib。
[0140][0141]
本实施例提供的方法,在遇到训练意外中断的情况时,对多进程管理更为合理高效,一旦停止训练,所有进程会立刻响应,中断训练,资源得到快速释放,提高易用性。而现有技术常会遇到部分进程等待数据传递,长时间等待到限制时间才会中断的情况,需要用户及时手动清除才能复用。
[0142]
以下为本技术装置实施例,可以用于执行本技术上述方法实施例。对于本技术装置实施例中未披露的细节,可参考本技术上述方法实施例。
[0143]
图5为本技术实施例提供的一种语音识别模型训练装置的结构示意图,如图5所示,本实施例的装置可以包括:获取模块11、处理模块12、加载模块13、训练模块14和确定模块15,其中,
[0144]
获取模块11用于获取训练数据和分布式并行训练待使用的设备数量n,所述n为正整数;
[0145]
处理模块12用于使用深度学习训练优化库启动器对语音识别模型训练任务进行封装;
[0146]
加载模块13用于对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,所述多进程信息包括分布式并行训练的进程数,分布式并行训练的进程数为n;
[0147]
训练模块14用于根据所述训练数据和所述多进程信息,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练;
[0148]
确定模块15用于将任意一个进程的语音识别模型确定为训练得到的语音识别模型。
[0149]
可选的,训练模块14用于:
[0150]
使用预设的切分算法将所述训练数据分为所述n份子训练数据;
[0151]
基于所述n份子训练数据,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练,其中,一份子训练数据用于一个进程的语音识别模型的训练。
[0152]
可选的,所述n个进程中每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练。
[0153]
可选的,所述n个进程的语音识别模型中的一个进程的语音识别模型基于所述n份子训练数据中的一份子训练数据,通过如下方式进行训练得到:
[0154]
对所述深度学习训练优化库的引擎的接口进行初始化;
[0155]
构建语音识别模型、优化器和调度器,加载所述深度学习训练优化库的引擎,对已构建的语音识别模型、优化器和调度器进行封装,得到封装后的语音识别模型、封装后的优化器和封装后的调度器;
[0156]
加载预训练模型,并加载所述一份子训练数据;
[0157]
加载检查点,分布式存储所述检查点的第一状态信息,所述第一状态信息包括封装后的语音识别模型的状态信息;
[0158]
根据所述一份子训练数据,用基于数据并行的零冗余优化器对所述封装后的语音识别模型进行训练迭代,得到训练后的一个进程的语音识别模型和所述检查点的第二状态信息;
[0159]
分布式存储所述第二状态信息,所述第二状态信息包括所述训练后的一个进程的语音识别模型的状态信息。
[0160]
可选的,所述封装后的语音识别模型的状态信息包括优化过程信息,或者,所述封装后的语音识别模型的状态信息包括梯度信息和参数信息中的至少一项以及优化过程信息。
[0161]
可选的,所述分布式存储检查点的第一状态信息,包括:
[0162]
将所述第一状态信息切分为所述n个子状态信息;
[0163]
将所述n个子状态信息分别存储在所述n个设备上。
[0164]
可选的,训练模块14用于:
[0165]
根据所述一份子训练数据对所述封装后的语音识别模型进行训练;
[0166]
在所述封装后的语音识别模型训练的迭代过程中,分别进行前向传播、反向传播和参数更新,更新并存储所述设备上存储的一个子状态信息;
[0167]
确定所述封装后的语音识别模型训练结束,得到训练后的一个进程的语音识别模型;
[0168]
获取其它n-1个设备上分别存储的一个子状态信息,得到n-1个子状态信息;
[0169]
将所述设备上存储的一个子状态信息和所述n-1个子状态信息汇总,得到所述检查点的第二状态信息。
[0170]
可选的,所述分布式存储所述第二状态信息,包括:
[0171]
将所述第二状态信息切分为所述n个相等的子状态信息;
[0172]
将所述n个子状态信息分别存储在所述n个设备上。
[0173]
可选的,处理模块12用于使用深度学习训练优化库启动器对所述语音识别模型训
练任务的训练入口进行改写。
[0174]
可选的,所述多进程信息还包括:所述n个进程中每个进程的标识、所述n个设备中每个设备的标识以及每个进程的标识与每个设备的标识的关联关系中的至少一项。
[0175]
本技术实施例提供的装置,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。
[0176]
图6是本技术实施例提供的电子设备700的示意性框图。
[0177]
如图6所示,该电子设备700可包括:
[0178]
存储器710和处理器720,该存储器710用于存储计算机程序,并将该程序代码传输给该处理器720。换言之,该处理器720可以从存储器710中调用并运行计算机程序,以实现本技术实施例中的方法。
[0179]
例如,该处理器720可用于根据该计算机程序中的指令执行上述方法实施例。
[0180]
在本技术的一些实施例中,该处理器720可以包括但不限于:
[0181]
通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
[0182]
在本技术的一些实施例中,该存储器710包括但不限于:
[0183]
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(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 data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0184]
在本技术的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器710中,并由该处理器720执行,以完成本技术提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
[0185]
如图6所示,该电子设备还可包括:
[0186]
收发器730,该收发器730可连接至该处理器720或存储器710。
[0187]
其中,处理器720可以控制该收发器730与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器730可以包括发射机和接收机。收发器730还可以进一步包括天线,天线的数量可以为一个或多个。
[0188]
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
[0189]
本技术还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被
计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本技术实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
[0190]
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0191]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0192]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0193]
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
[0194]
以上该,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以该权利要求的保护范围为准。

技术特征:


1.一种语音识别模型训练方法,其特征在于,包括:获取训练数据和分布式并行训练待使用的设备数量n,所述n为正整数;使用深度学习训练优化库启动器对语音识别模型训练任务进行封装;对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,所述多进程信息包括分布式并行训练的进程数,所述分布式并行训练的进程数为所述n;根据所述训练数据和所述多进程信息,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练;将任意一个进程的语音识别模型确定为训练得到的语音识别模型。2.根据权利要求1所述的方法,其特征在于,所述根据所述训练数据和所述多进程信息,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练,包括:使用预设的切分算法将所述训练数据分为所述n份子训练数据;基于所述n份子训练数据,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练,其中,一份子训练数据用于一个进程的语音识别模型的训练。3.根据权利要求2所述的方法,其特征在于,所述n个进程中每个进程的语音识别模型采用基于数据并行的零冗余优化器进行模型训练。4.根据权利要求3所述的方法,其特征在于,所述n个进程的语音识别模型中的一个进程的语音识别模型基于所述n份子训练数据中的一份子训练数据,通过如下方式进行训练得到:对所述深度学习训练优化库的引擎的接口进行初始化;构建语音识别模型、优化器和调度器,加载所述深度学习训练优化库的引擎,对已构建的语音识别模型、优化器和调度器进行封装,得到封装后的语音识别模型、封装后的优化器和封装后的调度器;加载预训练模型,并加载所述一份子训练数据;加载检查点,分布式存储所述检查点的第一状态信息,所述第一状态信息包括封装后的语音识别模型的状态信息;根据所述一份子训练数据,用基于数据并行的零冗余优化器对所述封装后的语音识别模型进行训练迭代,得到训练后的一个进程的语音识别模型和所述检查点的第二状态信息;分布式存储所述第二状态信息,所述第二状态信息包括所述训练后的一个进程的语音识别模型的状态信息。5.根据权利要求4所述的方法,其特征在于,所述封装后的语音识别模型的状态信息包括优化过程信息,或者,所述封装后的语音识别模型的状态信息包括梯度信息和参数信息中的至少一项以及优化过程信息。6.根据权利要求4所述的方法,其特征在于,所述分布式存储检查点的第一状态信息,包括:将所述第一状态信息切分为所述n个子状态信息;将所述n个子状态信息分别存储在所述n个设备上。7.根据权利要求6所述的方法,其特征在于,所述根据所述一份子训练数据,采用基于数据并行的零冗余优化器对所述封装后的语音识别模型进行训练迭代,得到训练后的一个
进程的语音识别模型和所述检查点的第二状态信息,包括:根据所述一份子训练数据对所述封装后的语音识别模型进行训练;在所述封装后的语音识别模型训练的迭代过程中,分别进行前向传播、反向传播和参数更新,更新并存储所述设备上存储的一个子状态信息;确定所述封装后的语音识别模型训练结束,得到训练后的一个进程的语音识别模型;获取其它n-1个设备上分别存储的一个子状态信息,得到n-1个子状态信息;将所述设备上存储的一个子状态信息和所述n-1个子状态信息汇总,得到所述检查点的第二状态信息。8.根据权利要求4所述的方法,其特征在于,所述分布式存储所述第二状态信息,包括:将所述第二状态信息切分为所述n个相等的子状态信息;将所述n个子状态信息分别存储在所述n个设备上。9.根据权利要求1所述的方法,其特征在于,所述使用深度学习训练优化库启动器对语音识别模型训练任务进行封装,包括:使用深度学习训练优化库启动器对所述语音识别模型训练任务的训练入口进行改写。10.根据权利要求1所述的方法,其特征在于,所述多进程信息还包括:所述n个进程中每个进程的标识、所述n个设备中每个设备的标识以及每个进程的标识与每个设备的标识的关联关系中的至少一项。11.一种语音识别模型训练装置,其特征在于,包括:获取模块,用于获取训练数据和分布式并行训练待使用的设备数量n,所述n为正整数;处理模块,用于使用深度学习训练优化库启动器对语音识别模型训练任务进行封装;加载模块,用于对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,所述多进程信息包括分布式并行训练的进程数,所述分布式并行训练的进程数为所述n;训练模块,用于根据所述训练数据和所述多进程信息,使用深度学习训练优化库进行所述n个进程的语音识别模型的分布式并行训练;确定模块,用于将任意一个进程的语音识别模型确定为训练得到的语音识别模型。12.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至10中任一项所述的方法。13.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机程序上运行时,使得所述计算机执行如权利要求1-10中任一项所述的方法。

技术总结


本申请提供了一种语音识别模型训练方法、装置、设备及存储介质,涉及人工智能技术领域,该方法包括:获取训练数据和分布式并行训练待使用的设备数量N,N为正整数,使用深度学习训练优化库启动器对语音识别模型训练任务进行封装,对分布式训练启动器进行初始化,加载用于进行分布式并行训练的多进程信息,多进程信息包括分布式并行训练的进程数,分布式并行训练的进程数为N,根据训练数据和多进程信息,使用深度学习训练优化库进行N个进程的语音识别模型的分布式并行训练,将任意一个进程的语音识别模型确定为训练得到的语音识别模型。从而,可简化语音识别模型的训练流程,提高训练速度。速度。速度。


技术研发人员:

翁羽 文连

受保护的技术使用者:

腾讯科技(深圳)有限公司

技术研发日:

2022.07.18

技术公布日:

2022/10/25

本文发布于:2024-09-23 20:19:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/20780.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   语音识别   信息   分布式
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议