1.本发明涉及人工智能技术领域,特别涉及一种深度学习
模型接口的使用方法。
背景技术:
2.深度学习算法库通常需要定义神经网络模型训练的接口;训练阶段计算损失、基于损失计算梯度、更新模型参数;验证阶段计算预测结果或损失,其中预测结果可以进一步计算得到评价指标,损失和评价指标可以用于调整模型超参数;测试阶段计算预测结果,来衡量模型训练的好坏;此外,模型通常还需要定义推理接口,用于推理单张图片。
3.为了兼容分布式训练和模型部署,深度学习算法库对神经网络模型做额外的封装,过程复杂,学习和开发成本较高。
技术实现要素:
4.本发明的目的在于提供一种深度学习模型接口的使用方法,以解决现有的深度学习算法库对神经网络模型的封装引入封装复杂因此开发工作量较大的问题。
5.为解决上述技术问题,本发明提供一种深度学习模型接口的使用方法,包括:
6.提供推理接口,其被配置为在模型部署时提供纯张量的输入接口,以便于模型导出;
7.提供
数据处理器,其被配置为将输入数据批处理后,转换成张量,传给前向推导接口,以进行批处理策略和模型解耦;以及
8.提供前向推导接口,其被配置为接受数据处理器处理后的张量,返回损失或预测结果,以能够在训练过程中优化和验证模型。推理接口是前向推导接口的一个功能,或者是一个分支。
9.可选的,在所述的深度学习模型接口的使用方法中,
10.通过约定前向推导接口、划分数据处理器和前向推导接口的边界,形成部署友好、适配多个深度学习后端分布式训练的模型接口;
11.为模型的训练、推理、测试分别提取统一、通用的接口;
12.任意深度学习后端的算法采取上述接口约定,无需复杂的封装进行分布式训练。
13.可选的,在所述的深度学习模型接口的使用方法中,深度学习模型进行训练流程、推理流程和测试流程,并为其提供了统一的接口;
14.其中训练流程包括:使用数据处理器对输入模型的数据进行训练阶段的数据增强,将增强后的的数据传给模型的训练
步进接口,训练步进接口进一步调用模型的前向推导接口,返回损失字典,基于损失字典优化模型权重,并返回损失字典;
15.其中验证流程包括:使用数据处理器对输入模型的数据进行测试阶段的数据增强,将增强后的的数据传给模型的验证步进接口;验证步进接口进一步调用模型的前向推导接口,根据传入的参数返回损失字典或者预测结果;
16.其中测试流程包括:使用数据处理器处理输入模型的数据进行测试阶段的数据增
强,将增强后的的数据传给模型的测试步进接口;测试步进接口进一步调用模型的前向推导接口,返回预测结果。
17.可选的,在所述的深度学习模型接口的使用方法中,
18.通过将数据处理器作为模型的组件,形成一个独立的类,对输入模型的数据进行预处理;
19.用户按需重载自定义的数据处理器,以使数据处理器具备以下功能:
20.数据处理器作为模型的组建,能够和模型进行自由组合;以及
21.模型的前向推导接口直接接受张量输入,返回推理结果,便于部署或直接调用;
22.其中对输入模型的数据进行预处理包括:
23.将数据从cpu搬运至指定设备;
24.进行批处理,批处理包括归一化、缩放和混淆增强;以及
25.进行数据格式转换,将输入数据转换成张量。
26.可选的,在所述的深度学习模型接口的使用方法中,数据处理器的接口包括:
27.转移数据接口cast_data,接口功能介绍为将数据转移到指定的设备;接口参数列表包括输入模型的数据data;返回值为data,转移到目标设备的数据,结构和输入一致;
28.前向推导接口forward,接口功能介绍为将数据处理成模型需要的格式;接口参数列表包括转移数据接口处理好的数据data、用于判断采取训练阶段的数据增强还是测试阶段的训练增强training;返回值为预处理后的数据data,随后解析并传给模型的前向推导接口。
29.可选的,在所述的深度学习模型接口的使用方法中,
30.为模型提取训练步进接口、验证步进接口和测试步进接口,以兼容多个训练后端的单卡、分布式训练逻辑,满足训练、验证、测试阶段的不同需求;
31.前向推导方法分别被训练步进、验证步进和测试步进调用,接受数据处理器处理后的结果,返回损失或者推理结果。前向推导是一个抽象方法,子类必须实现,来承载模型的主体逻辑。
32.可选的,在所述的深度学习模型接口的使用方法中,推理接口包括:
33.前向推导接口forward,接口功能描述为计算损失或预测结果;接口参数列表包括:接受数据处理器前向推导返回的参数args、根据mode的值返回损失或者预测结果mode;
34.训练步进接口train_step,接口功能描述包括模型基类依次进行前向推导、梯度计算、参数更新、梯度清零的流程,子类按需重载,实现更加复杂的逻辑;接口参数列表包括:输入模型的数据data、优化器optimizer;返回值包括:损失字典loss,此时已经完成梯度计算过程,损失字典仅用于记录日志;
35.验证步进接口val_step,接口功能描述包括模型基类实现前向推导,返回损失或者预测结果;接口参数列表包括:输入模型的数据data、是否返回损失判断结果return_loss:,如果为true,则返回损失字典,反之则返回预测结果;返回值包括损失字典或者预测结果loss|predictions;
36.测试步进接口test_step,接口功能描述包括模型基类实现前向推导,并返回预测结果,接口参数列表包括输入模型的数据data,返回值包括预测结果predictions。
37.可选的,在所述的深度学习模型接口的使用方法中,训练步进会依次执行:
38.调用数据处理器对输入数据进行预处理,返回适配模型前向推导的数据;
39.执行模型前向推导,返回损失;
40.训练步进直接调用分布式数据并行的前向推导接口,以利用其高效的梯度同步功能;
41.模型基类的训练步进实现单优化器情况下的前向推导、梯度反向传递、参数更新、梯度逻辑,以满足任务需求;
42.生成需要多优化器任务的模型,以按需重载训练步进,实现自定义的参数优化逻辑。
43.可选的,在所述的深度学习模型接口的使用方法中,验证步进会依次执行:
44.调用数据处理器对输入数据进行预处理,返回适配模型前向推导的数据;
45.执行模型前向推导,根据参数return_loss返回损失或者预测结果;
46.由于验证阶段不需要跨进程同步,因此不区分单卡训练和分布式训练,使用统一流程;
47.模型基类实现常用推理逻辑,即数据预处理后,直接调用前向推导接口。
48.可选的,在所述的深度学习模型接口的使用方法中,
49.测试步进和验证步进流程一致,区别在于测试步进没有返回损失的需求,只返回预测结果;
50.前向推导为抽象方法,接受模型参数,前向推导阶段根据模型的值执行计算损失、计算预测结果的逻辑。
51.本发明的发明人通过研究发现,为了兼容分布式训练和模型部署,深度学习算法库会对神经网络模型做二次封装,抽象出与模型接口同名的接口,以上会引入以下问题:
52.首先,模型推理部署时,通常需要接受张量(tensor)类型的输入,而模型训练、验证、测试时,通常接受非张量数据,并对这些数据做预处理,二者在流程上不统一。现有的深度学习算法库通常会在导出模型时,对模型做额外封装来解决这个问题,但是这样增加了开发的工作量。
53.其次,通常情况下,模型作为深度学习算法的核心应该负责前向推导、梯度反传和参数更新。但是分布式训练下,深度学习训练后端通常会有一些约定。以pytorch为例,想使用其高性能的梯度同步功能,就必须调用其分布式模型封装的前向推导接口,且不允许在前向推导的过程中进行梯度反传,因此深度学习算法库通常会对模型进行复杂的封装,以适配对应后端的分布式训练。
54.最后,深度学习模型通常还会负责数据批处理,例如归一化、缩放、混淆增强(mixup)等,深度学习算法库通常会把这部分逻辑抽象成模型的一个方法,但是这样会导致算法和批处理策略的耦合,无法实现批处理策略和算法模型的任意组合。
55.基于以上洞察,本发明提供了一种深度学习模型接口的使用方法,通过分别设置推理接口,数据处理器和前向推导接口,实现了约定模型的接口、划分模型功能的边界,以提出了一套对部署友好、适配多后端分布式训练的模型接口。
56.本发明提供了一套模型训练、验证、测试、推理接口,为模型部署提供了纯张量输入的推理接口,方便模型导出;为适配不同训练后端的分布式约定,提供了轻量级的模型封装。
57.统一的深度学习模型接口是一套对部署、分布式训练友好,批处理策略和模型灵活搭配的接口的约定。目前的深度学习算法仓库常会出现:只支持单卡训练;支持分布式训练,不支持单卡训练;模型结构不适合部署,难以导出的问题,而如果算法开发时,遵从了本专利提出的接口约定,可以很好的解决上述问题,提升了研究员复现、跟进相应算法的效率;模型更方便导出,减少模型部署的工作量,提升模型的落地效率。
附图说明
58.图1是本发明一实施例深度学习模型接口模型接口约定示例示意图;
59.图2是本发明一实施例深度学习模型接口单卡/分布式训练步进工作流程示意图;
60.图3是本发明一实施例深度学习模型接口验证步进工作流程示意图;
61.图4是本发明一实施例深度学习模型接口测试步进工作流程示意图;
62.图5是本发明一实施例深度学习模型接口前向推导工作流程示意图;
63.图6是根据本发明的系统和/或方法的计算机系统。
具体实施方式
64.下面结合具体实施方式参考附图进一步阐述本发明。
65.应当指出,各附图中的各组件可能为了图解说明而被夸大地示出,而不一定是比例正确的。在各附图中,给相同或功能相同的组件配备了相同的附图标记。
66.在本发明中,除非特别指出,“布置在
…
上”、“布置在
…
上方”以及“布置在
…
之上”并未排除二者之间存在中间物的情况。此外,“布置在
…
上或上方”仅仅表示两个部件之间的相对位置关系,而在一定情况下、如在颠倒产品方向后,也可以转换为“布置在
…
下或下方”,反之亦然。
67.在本发明中,各实施例仅仅旨在说明本发明的方案,而不应被理解为限制性的。
68.在本发明中,除非特别指出,量词“一个”、“一”并未排除多个元素的场景。
69.在此还应当指出,在本发明的实施例中,为清楚、简单起见,可能示出了仅仅一部分部件或组件,但是本领域的普通技术人员能够理解,在本发明的教导下,可根据具体场景需要添加所需的部件或组件。另外,除非另行说明,本发明的不同实施例中的特征可以相互组合。例如,可以用第二实施例中的某特征替换第一实施例中相对应或功能相同或相似的特征,所得到的实施例同样落入本技术的公开范围或记载范围。
70.在此还应当指出,在本发明的范围内,“相同”、“相等”、“等于”等措辞并不意味着二者数值绝对相等,而是允许一定的合理误差,也就是说,所述措辞也涵盖了“基本上相同”、“基本上相等”、“基本上等于”。以此类推,在本发明中,表方向的术语“垂直于”、“平行于”等等同样涵盖了“基本上垂直于”、“基本上平行于”的含义。
71.另外,本发明的各方法的步骤的编号并未限定所述方法步骤的执行顺序。除非特别指出,各方法步骤可以以不同顺序执行。
72.以下结合附图和具体实施例对本发明提出的深度学习模型接口的使用方法作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
73.本发明的目的在于提供一种深度学习模型接口的使用方法,以解决现有的深度学
习算法库对神经网络模型的封装引入封装复杂因此开发工作量较大的问题。
74.为实现上述目的,本发明提供了一种深度学习模型接口的使用方法,包括:提供推理接口,其被配置为在模型部署时提供纯张量的输入接口,以便于模型导出;提供数据处理器,其被配置为将输入数据批处理后,转换成张量,传给前向推导接口,以进行批处理策略和模型解耦;以及提供前向推导接口,其被配置为接受数据处理器处理后的张量,返回损失或预测结果,以能够直接用于模型部署。
75.图1~6提供了本发明的第一个实施例,其示出了深度学习模型接口示意图。
76.本发明设计了一套模型训练、验证、测试、推理接口,具有以下有益效果:为模型部署提供了纯张量输入的推理接口,方便模型导出;适配不同的深度学习后端;批处理策略和模型解耦,实现二者的自由组合。
77.本发明通过约定模型的接口、划分模型功能的边界,提出了一套对部署友好、适配多后端分布式训练的模型接口;首先,划分数据预处理和模型前向推导的边界包括:将数据预处理抽象成数据处理器,实现处理、增强策略和模型的解耦;数据处理器负责将输入数据批处理后,转换成张量,传给前向推导接口,以及前向推导接口接受数据处理器处理后的张量,返回损失或预测结果。前向推导接口能够直接用于模型部署。
78.其次,为模型的训练、推理、测试分别抽象出统一、通用的接口。任意深度学习后端的算法都可以采取这样的接口约定,无需复杂的封装就能实现分布式训练。
79.另外,为模型抽象出训练步进、验证步进、测试步进、前向推导方法,供训练、验证、测试阶段调用。前向推导方法还用于在部署阶段导出模型。
80.最后,将数据预处理的概念抽象成数据处理器,实现预处理和模型主体逻辑的解耦,便于模型部署,能够自由组合模型和批处理策略。
81.本发明定义了深度学习模型训练、推理、测试流程,并为其提供了统一的接口。
82.训练流程包括:使用数据处理器对输入模型的数据进行训练阶段的数据增强,将增强后的的数据传给模型的训练步进接口;练步进接口进一步调用模型的前向推导接口,返回损失字典;基于损失字典优化模型权重,并返回损失字典。
83.验证流程包括:使用数据处理器对输入模型的数据进行测试阶段的数据增强,将增强后的的数据传给模型的验证步进接口;验证步进接口进一步调用模型的前向推导接口,根据传入的参数返回损失字典或者预测结果。
84.测试流程包括:使用数据处理器处理输入模型的数据进行测试阶段的数据增强,将增强后的的数据传给模型的测试步进接口;测试步进接口进一步调用模型的前向推导接口,返回预测结果。
85.在本实施例的数据处理器中,模型可能会对输入的数据进行以下预处理:将数据从cpu搬运至指定设备,批处理,如归一化、缩放、混淆增强(mixup)等,数据格式转换,将输入数据转换成张量。
86.现有的深度学习算法库通常会将上述步骤抽象成模型的一个方法,然后在前向推导过程中调用;然而这样会引入一些问题:模型预处理方式和模型绑定,不便于扩展,使用者无法自定义的搭配模型和预处理方式;模型导出时通常不希望前向推导接口涉及预处理操作,例如归一化。
87.本发明提出了数据处理器的概念,数据处理器作为模型的组件,是一个独立的类,
负责预处理输入模型的数据:用户可以按需重载自定义的数据处理器;使用数据处理器具备以下优点:数据处理器作为模型的组建,可以自由组合、配置;模型的前向推导接口(forward)可以直接接受张量输入,返回推理结果,便于部署或直接调用。
88.数据处理器的接口包括:转移数据接口cast_data,接口功能介绍为将数据转移到指定的设备;接口参数列表包括输入模型的数据data;返回值为data,转移到目标设备的数据,结构和输入一致;以及前向推导接口forward,接口功能介绍为将数据处理成模型需要的格式;接口参数列表包括转移数据接口处理好的数据data、用于判断采取训练阶段的数据增强还是测试阶段的训练增强training;返回值为预处理后的数据data,随后解析并传给模型的前向推导接口。
89.在本实施例的模型训练/推理/测试接口中,为了兼容不同训练后端的单卡、分布式训练逻辑,本发明为模型抽象出训练步进、验证步进和测试步进三个接口,以满足训练、验证、测试阶段的不同需求。前向推导方法会分别被训练步进,验证步进和测试步进调用,接受数据处理器处理后的结果,返回损失或者推理结果。前向推导是一个抽象方法,子类必须实现,来承载模型的主体逻辑。
90.本实施例的模型训练/推理/测试接口包括:前向推导接口forward,接口功能描述为计算损失或预测结果;接口参数列表包括:接受数据处理器前向推导返回的参数args、根据mode的值返回损失或者预测结果mode;训练步进接口train_step,接口功能描述包括模型基类依次进行前向推导、梯度计算、参数更新、梯度清零的流程,子类按需重载,实现更加复杂的逻辑;接口参数列表包括:输入模型的数据data、优化器optimizer;返回值包括:损失字典loss,此时已经完成梯度计算过程,损失字典仅用于记录日志;验证步进接口val_step,接口功能描述包括模型基类实现前向推导,返回损失或者预测结果;接口参数列表包括:输入模型的数据data、是否返回损失判断结果return_loss:,如果为true,则返回损失字典,反之则返回预测结果;返回值包括损失字典或者预测结果loss|predictions;以及测试步进接口test_step,接口功能描述包括模型基类实现前向推导,并返回预测结果,接口参数列表包括输入模型的数据data,返回值包括预测结果predictions。
91.如图2所示,训练步进会依次执行:调用数据处理器对输入数据(data)进行预处理,返回适配模型前向推导的数据;执行模型前向推导,返回损失;基于前向推导得到的损失和传入的优化器执行梯度反传和参数更新分布式情况下,有些训练后端需要对模型进行封装。以pytorch为例,开启分布式训练通常需要分布式数据并行对模型进行封装。这种情况下需要重载封装类,为其提供train_step接口,并实现上图所示逻辑。与单卡训练不同的是,训练步进会直接调用分布式数据并行的前向推导接口,以利用其高效的梯度同步功能。
92.模型基类的训练步进实现了单优化器情况下,常用的前向推导、梯度反传、参数更新、梯度逻辑,以满足大部分任务的需求。生成对抗网络等需要多优化器任务的模型可以按需重载训练步进,实现自定义的参数优化逻辑。
93.如图3所示,验证步进会依次执行:调用数据处理器对输入数据进行预处理,返回适配模型前向推导的数据;执行模型前向推导,根据参数return_loss返回损失或者预测结果。由于验证阶段不需要跨进程同步,因此不区分单卡训练和分布式训练,使用统一流程。模型基类实现了常用的推理逻辑,即数据预处理后,直接调用前向推导接口。
94.如图4所示,test_step流程和val step基本一致,区别在与test_step没有返回损
失的需求,只返回预测结果。
95.如图5所示,forward为抽象方法,需要接受mode参数,前向推导阶段根据mode的值去执行计算损失、计算预测结果的逻辑。
96.本发明为深度学习算法库提供了一套统一且通用的,对部署和分布式训练友好的模型接口;用户基于模型基类派生出自定实现的子类,并按照接口规范开放。这样实现的模型更加方便部署、且兼容不同后端的分布式训练。本发明的深度学习模型接口可以基于不同后端的,不同类型的深度学习算法。
97.本发明的技术方案所得出的深度学习模型接口的使用方法可在神经网络、计算机、通信等领域中用于实现如下技术效果:实现更加方便部署、且兼容不同后端的分布式训练,提高了开发效率。其原理是提供了一套统一且通用的,对部署和分布式训练友好的模型接口;用户基于模型基类派生出自定实现的子类,并按照接口规范开放。
98.图6示出了实现根据本发明的系统和/或方法的计算机系统100。如非特殊说明,根据本发明的方法和/或系统可以在图6所示的计算机系统100中执行以实现本发明目的,或者本发明可以在多个根据本发明的计算机系统100中通过网络、如局域网或因特网分布式地实现。本发明的计算机系统100可以包括各种类型的计算机系统、例如手持式设备、膝上型计算机、个人数字助理(pda)、多处理器系统、基于微处理器或可编程消费者电子设备、网络pc、小型机、大型机、网络服务器、平板计算机等等。
99.如图6所示,计算机系统100包括处理器111、系统总线101、系统存储器102、视频适配器105、音频适配器107、硬盘驱动器接口109、光驱接口113、网络接口114、通用串行总线(usb)接口112。系统总线101可以是若干种总线结构类型的任一种,例如存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统总线101用于各个总线设备之间的通信。除了图6中所示的总线设备或接口以外,其它的总线设备或接口也是可设想的。系统存储器102包括只读存储器(rom)103和随机存取存储器(ram)104,其中rom 103例如可以存储用于在启动时实现信息传输的基本例程的基本输入/输出系统(bios)数据,而ram 104用于为系统提供存取速度较快的运行内存。计算机系统100还包括用于对硬盘110进行读写的硬盘驱动器109、用于对诸如cd-rom之类的光介质进行读写光驱接口113等等。硬盘110例如可以存储有操作系统和应用程序。驱动器及其相关联的计算机可读介质为计算机系统100提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。计算机系统100还可以包括用于图像处理和/或图像输出的视频适配器105,其用于连接显示器106等输出设备。计算机系统100还可以包括用于音频处理和/或音频输出的音频适配器107,其用于连接扬声器108等输出设备。此外,计算机系统100还可以包括用于网络连接的网络接口114,其中网络接口114可以通过诸如路由器115之类的网络装置连接到因特网116,其中所述连接可以是有线或无线的。另外,此外,计算机系统100还可以包括用于连接外围设备的通用串行总线接口(usb)112,其中所述外围设备例如包括键盘117、鼠标118以及其它外围设备、例如麦克风、摄像头等。
100.当本发明在图6所述的计算机系统100上实现时,可以通过约定模型的接口、划分模型功能的边界,提出了一套对部署友好、适配多后端分布式训练的模型接口;首先,划分数据预处理和模型前向推导的边界包括:将数据预处理抽象成数据处理器,实现处理、增强策略和模型的解耦;数据处理器负责将输入数据批处理后,转换成张量,传给前向推导接
口,以及前向推导接口接受数据处理器处理后的张量,返回损失或预测结果。前向推导接口能够直接用于模型部署。
101.此外,可以把各实施例提供为可包括其上存储有机器可执行指令的一个或多个机器可读介质的计算机程序产品,这些指令在由诸如计算机、计算机网络或其他电子设备等的一个或多个机器执行时,可以引起一个或多个机器执行根据本发明的各实施例的操作。机器可读介质可以包括但不限于软盘、光盘、cd-rom(紧致盘只读存储器)和磁光盘、rom(只读存储器)、ram(随机存取存储器)、eprom(可擦除可编程只读存储器)、eeprom(电可擦除可编程只读存储器)、磁或光卡、闪速存储器或适用于存储机器可执行指令的其他类型的介质/机器可读介质。
102.此外,可以作为计算机程序产品下载各实施例,其中可以经由通信链路(例如,调制解调器和/或网络连接)由载波或其他传播介质实现和/或调制的一种或多种数据信号把程序从远程计算机(例如,服务器)传输给请求计算机(例如,客户机)。因此,在此所使用的机器可读介质可以包括这样的载波,但这不是必需的。
103.综上,上述实施例对深度学习模型接口的使用方法的不同构型进行了详细说明,当然,本发明包括但不局限于上述实施中所列举的构型,任何在上述实施例提供的构型基础上进行变换的内容,均属于本发明所保护的范围。本领域技术人员可以根据上述实施例的内容举一反三。
104.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
105.上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
技术特征:
1.一种深度学习模型接口的使用方法,其特征在于,包括:提供推理接口,其被配置为在模型部署时提供纯张量的输入接口,以便于模型导出;提供数据处理器,其被配置为将输入数据批处理后,转换成张量,传给前向推导接口,以进行批处理策略和模型解耦;以及提供前向推导接口,其被配置为接受数据处理器处理后的张量,返回损失或预测结果,以能够在训练过程中优化和验证模型。2.如权利要求1所述的深度学习模型接口的使用方法,其特征在于,通过约定前向推导接口、划分数据处理器和前向推导接口的边界,形成部署友好、适配多个深度学习后端分布式训练的模型接口;为模型的训练、推理、测试分别提取统一、通用的接口;任意深度学习后端的算法采取上述接口约定,无需复杂的封装进行分布式训练。3.如权利要求2所述的深度学习模型接口的使用方法,其特征在于,深度学习模型进行训练流程、推理流程和测试流程,并为其提供了统一的接口;其中训练流程包括:使用数据处理器对输入模型的数据进行训练阶段的数据增强,将增强后的的数据传给模型的训练步进接口,训练步进接口进一步调用模型的前向推导接口,返回损失字典,基于损失字典优化模型权重,并返回损失字典;其中验证流程包括:使用数据处理器对输入模型的数据进行测试阶段的数据增强,将增强后的的数据传给模型的验证步进接口;验证步进接口进一步调用模型的前向推导接口,根据传入的参数返回损失字典或者预测结果;其中测试流程包括:使用数据处理器处理输入模型的数据进行测试阶段的数据增强,将增强后的的数据传给模型的测试步进接口;测试步进接口进一步调用模型的前向推导接口,返回预测结果。4.如权利要求3所述的深度学习模型接口的使用方法,其特征在于,通过将数据处理器作为模型的组件,形成一个独立的类,对输入模型的数据进行预处理;用户按需重载自定义的数据处理器,以使数据处理器具备以下功能:数据处理器作为模型的组建,能够和模型进行自由组合;以及模型的前向推导接口直接接受张量输入,返回推理结果,便于部署或直接调用;其中对输入模型的数据进行预处理包括:将数据从cpu搬运至指定设备;进行批处理,批处理包括归一化、缩放和混淆增强;以及进行数据格式转换,将输入数据转换成张量。5.如权利要求4所述的深度学习模型接口的使用方法,其特征在于,数据处理器的接口包括:转移数据接口east_data,接口功能介绍为将数据转移到指定的设备;接口参数列表包括输入模型的数据data;返回值为data,转移到目标设备的数据,结构和输入一致;前向推导接口forward,接口功能介绍为将数据处理成模型需要的格式;接口参数列表包括转移数据接口处理好的数据data、用于判断采取训练阶段的数据增强还是测试阶段的训练增强training;返回值为预处理后的数据data,随后解析并传给模型的前向推导接口。
6.如权利要求5所述的深度学习模型接口的使用方法,其特征在于,为模型提取训练步进接口、验证步进接口和测试步进接口,以兼容多个训练后端的单卡、分布式训练逻辑,满足训练、验证、测试阶段的不同需求;前向推导方法分别被训练步进、验证步进和测试步进调用,接受数据处理器处理后的结果,返回损失或者推理结果。前向推导是一个抽象方法,子类必须实现,来承载模型的主体逻辑。7.如权利要求6所述的深度学习模型接口的使用方法,其特征在于,推理接口包括:前向推导接口forward,接口功能描述为计算损失或预测结果;接口参数列表包括:接受数据处理器前向推导返回的参数args、根据mode的值返回损失或者预测结果mode;训练步进接口train_step,接口功能描述包括模型基类依次进行前向推导、梯度计算、参数更新、梯度清零的流程,子类按需重载,实现更加复杂的逻辑;接口参数列表包括:输入模型的数据data、优化器optimizer;返回值包括:损失字典loss,此时已经完成梯度计算过程,损失字典仅用于记录日志;验证步进接口val_step,接口功能描述包括模型基类实现前向推导,返回损失或者预测结果;接口参数列表包括:输入模型的数据data、是否返回损失判断结果return_loss:,如果为true,则返回损失字典,反之则返回预测结果;返回值包括损失字典或者预测结果loss|predictions;测试步进接口test_step,接口功能描述包括模型基类实现前向推导,并返回预测结果,接口参数列表包括输入模型的数据data,返回值包括预测结果predictions。8.如权利要求7所述的深度学习模型接口的使用方法,其特征在于,训练步进会依次执行:调用数据处理器对输入数据进行预处理,返回适配模型前向推导的数据;执行模型前向推导,返回损失;训练步进直接调用分布式数据并行的前向推导接口,以利用其高效的梯度同步功能;模型基类的训练步进实现单优化器情况下的前向推导、梯度反向传递、参数更新、梯度逻辑,以满足任务需求;生成需要多优化器任务的模型,以按需重载训练步进,实现自定义的参数优化逻辑。9.如权利要求8所述的深度学习模型接口的使用方法,其特征在于,验证步进会依次执行:调用数据处理器对输入数据进行预处理,返回适配模型前向推导的数据;执行模型前向推导,根据参数return_loss返回损失或者预测结果;由于验证阶段不需要跨进程同步,因此不区分单卡训练和分布式训练,使用统一流程;模型基类实现常用推理逻辑,即数据预处理后,直接调用前向推导接口。10.如权利要求9所述的深度学习模型接口的使用方法,其特征在于,测试步进和验证步进流程一致,区别在于测试步进没有返回损失的需求,只返回预测结果;前向推导为抽象方法,接受模型参数,前向推导阶段根据模型的值执行计算损失、计算预测结果的逻辑。
技术总结
本发明提供了一种深度学习模型接口的使用方法,包括:提供推理接口,其被配置为在模型部署时提供纯张量的输入接口,以便于模型导出;提供数据处理器,其被配置为将输入数据批处理后,转换成张量,传给前向推导接口,以进行批处理策略和模型解耦;以及提供前向推导接口,其被配置为接受数据处理器处理后的张量,返回损失或预测结果,以能够直接用于模型部署。署。署。
技术研发人员:
叶浩晨 马泽润 张文蔚 吕成器 周再达 杨逸飞 陈恺
受保护的技术使用者:
上海人工智能创新中心
技术研发日:
2022.08.24
技术公布日:
2022/11/18