首页> 中国专利> 一种兼容多框架的深度学习模型快速搭建系统

一种兼容多框架的深度学习模型快速搭建系统

摘要

本发明公开了一种兼容多框架的深度学习模型快速搭建系统,包括:设备层、后端层以及用户层,设备层包含若干硬件模块,后端层包含若干深度学习框架,每个深度学习框架包含若干底层算子,每个底层算子具有统一的算子接口,用户层包含模型抽象模块,模型抽象模块包含各个深度学习框架对应的模型训练参数及计算逻辑,用户层用于调用后端层中的底层算子搭建深度学习模型,并通过设备层的硬件模块训练深度学习模型,其中,深度学习模型基于用户层提供的API搭建。本发明的搭建系统兼容不同深度学习框架和不同硬件,使得用户能快速、高效构建深度学习模型,减少繁琐的代码开发和切换不同深度学习框架的代码迁移工作。

著录项

  • 公开/公告号CN112784959A

    专利类型发明专利

  • 公开/公告日2021-05-11

    原文格式PDF

  • 申请/专利权人 鹏城实验室;

    申请/专利号CN202110042493.5

  • 发明设计人 赖铖;董豪;韩佳容;

    申请日2021-01-13

  • 分类号G06N3/04(20060101);G06N3/08(20060101);

  • 代理机构44268 深圳市君胜知识产权代理事务所(普通合伙);

  • 代理人朱阳波

  • 地址 518000 广东省深圳市南山区兴科一街2号

  • 入库时间 2023-06-19 10:57:17

说明书

技术领域

本发明涉及深度学习技术领域,尤其涉及的是一种兼容多框架的深度学习模型快速搭建系统。

背景技术

近年来,深度学习已经广泛地应用于语音识别,机器翻译,计算机视觉等领域,并取得了较好的效果。随着深度学习理论的兴起,多种深度学习的编程框架不断涌现。深度学习框架如TensorFlow,Pytorch,MindSpore等开源框架,由于算子API参数命名规则和使用规则各不相同,开发者在开发深度学习应用时,从一种框架迁移到另一种框架时需要耗费大量精力学习相应框架语言和重构代码。另外,像TensorFlow只提供较低级的算子API,使用起来较为复杂,学习成本高。

现有的开源框架Keras虽然能实现兼容多种深度学习框架,但其在实现兼容不同深度学习框架时,是将深度学习框架的算子API统一成相同的算子API函数接口,再通过高层次的接口调用底层算子API实现各个神经网络组件,最后通过Models包来将各个组件组装起来,这样两次封装对性能损耗较大,且统一接口API只能解决框架底层算子提供函数接口,像MindSpore底层提供的是类形式接口将无法兼容。

因此,现有技术还有待改进和发展。

发明内容

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种兼容多框架的深度学习模型快速搭建系统,旨在解决现有模型搭建系统经过两次封装对性能损坏较大,且无法兼容类形式接口的深度学习框架的问题。

本发明解决问题所采用的技术方案如下:

本发明实施例提供一种兼容多框架的深度学习模型快速搭建系统,其中,包括:设备层、后端层以及用户层,所述设备层包含若干硬件模块,所述后端层包含若干深度学习框架,每个所述深度学习框架包含若干底层算子,每个所述底层算子具有统一的算子接口,所述用户层包含模型抽象模块,所述模型抽象模块包含各个所述深度学习框架对应的模型训练参数及计算逻辑,所述用户层用于调用所述后端层中的底层算子搭建深度学习模型,并通过所述设备层的硬件模块训练所述深度学习模型,其中,所述深度学习模型基于所述模型抽象模块中的模型训练参数及计算逻辑搭建。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述用户层还包含模型搭建模块、模型训练模块、参数配置模块以及数据处理模块;

所述模型搭建模块用于调用所述后端层中的底层算子搭建深度学习模型;

所述模型训练模块用于调用所述后端层中的底层算子确定用于训练所述深度学习模型的硬件模块;

所述模型参数配置模块用于调用所述后端层中的底层算子对所述深度学习模型进行参数配置;

所述数据处理模块用于调用所述后端层中的底层算子进行数据处理。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述模型搭建模块中包含用于搭建所述深度学习模型的模型搭建组件,所述模型搭建组件包括卷积层、池化层、全连接层、噪声层、量化层、合并层、扩展层、嵌入层以及Dropout层。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述模型抽象模块包含各个所述深度学习框架对应的模块基类,所述模型搭建算法继承至所述模块基类。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述参数配置模块中包含损失函数、优化函数、激活函数、归一化函数以及初始化函数。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述数据处理模块包括序列处理单元、文本处理单元以及图像处理单元;

所述序列处理单元用于调用所述后端层中的底层算子对序列进行处理;

所述文本处理单元用于调用所述后端层中的底层算子对文本进行处理;

所述图像处理单元用于调用所述后端层中的底层算子对图像进行处理。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述模型训练模块包含各个所述深度学习框架对应的模型训练单元。

所述的兼容多框架的深度学习模型快速搭建系统,其中,若干所述硬件模块包括GPU、CPU、Ascend以及TPU。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述搭建系统还包括:应用层,所述应用层用于存储搭建好的所述深度学习模型。

所述的兼容多框架的深度学习模型快速搭建系统,其中,所述搭建系统还包括:语言层,所述语言层提供用于调用所述底层算子的编程语言。

本发明的有益效果:本发明实施例的快速搭建系统包括设备层、后端层以及用户层,所述设备层包含若干硬件模块,所述后端层包含若干深度学习框架,每个所述深度学习框架包含若干底层算子,每个所述底层算子具有统一的算子接口,所述用户层包含模型抽象模块,所述模型抽象模块包含各个所述深度学习框架对应的模型训练参数及计算逻辑,所述用户层用于调用所述后端层中的底层算子搭建深度学习模型,并通过所述设备层的硬件模块训练所述深度学习模型,其中,所述深度学习模型基于所述模型抽象模块中的模型训练参数及计算逻辑搭建。本发明通过设计统一的算子API来规范不同深度学习框架底层算子,可以兼容提供函数接口和提供类接口的深度学习框架,根据不同深度学习框架的特点设计模型抽象模块,从而兼容不同深度学习框架和不同硬件,使得用户能快速、高效构建深度学习模型,减少繁琐的代码开发和切换不同深度学习框架的代码迁移工作。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的兼容多框架的深度学习模型快速搭建系统的整体设计框架图;

图2是本发明实施例提供的兼容多框架的深度学习模型快速搭建系统的详细结构图;

图3是本发明实施例提供的兼容多框架的深度学习模型快速搭建系统的实现原理图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

现有的开源框架Keras虽然能实现兼容多种深度学习框架,但其是将深度学习框架TensorFlow、Theano、CNTK的算子API统一成相同的算子API函数接口,再通过高层次的接口调用底层算子API实现各个神经网络组件,最后通过Models包来将各个组件组装起来从而实现兼容不同框架训练。在Keras实现方式中,调用底层API实现网络组件再通过Models来组装,这样两次封装对性能损耗较大,而且统一接口API只能解决框架底层算子提供函数接口,像MindSpore底层提供的是类形式接口将无法兼容。

为了解决现有技术的问题,本实施例提供了一种兼容多框架的深度学习模型快速搭建系统,如图1所示,所述搭建系统(TensorLayer)自下而上包括:设备层(Serves)、后端层(Backends)以及用户层(APIs),所述设备层包含若干硬件模块,所述后端层包含若干深度学习框架,每个所述深度学习框架包含若干底层算子,每个所述底层算子具有统一的算子接口,所述用户层包含模型抽象模块,所述模型抽象模块包含各个所述深度学习框架对应的模型训练参数及计算逻辑,所述用户层用于调用所述后端层中的深度学习框架对应的底层算子搭建深度学习模型,并通过所述设备层的硬件模块上训练所述深度学习模型,其中,所述深度学习模型基于所述模型抽象模块中的模型训练参数及计算逻辑搭建。本实施例中搭建系统通过设计统一的算子API来规范不同深度学习框架底层算子,可以兼容提供函数接口和提供类接口的深度学习框架,根据不同深度学习框架的特点设计模型抽象模块,从而兼容不同深度学习框架和不同硬件,使得用户能快速、高效构建深度学习模型,减少繁琐的代码开发和切换不同深度学习框架的代码迁移工作。

所述深度学习框架包括现有的开源框架如TensorFlow,Pytorch,MindSpore等,用户在搭建深度学习模型时,可以使用搭建系统默认的深度学习框架,也可以根据需要选择深度学习框架,确认搭建深度学习框架后,就可以通过用户层调用确定的深度学习框架下的底层算子进行模型搭建。如下为用户设置深度学习框架及调用接口的实现代码:

import numpy as np

import time

import os

#设置后端调用的训练框架

#os.environ['TL_BACKEND']='tensorflow'

os.environ['TL_BACKEND']='mindspore'

import tensorflow as tf

import tensorlayer as tl

from tensorlayer.layers import Module

from tensorlayer.layers import Dense,Dropout#这一行提供了Layers给用户的接口,Dense和Dropout。

如图1和图2所示,在一具体实施方式中,所述用户层还包含模型搭建模块(Layers)、模型训练模块(Models)、参数配置模块(Configuration)以及数据处理模块(Dataflow),所述模型搭建模块用于调用所述后端层中各个深度学习框架的底层算子搭建深度学习模型;所述模型训练模块用于调用所述后端层中各个深度学习框架的底层算子确定用于训练所述深度学习模型的硬件模块;所述模型参数配置模块用于调用所述后端层中各个深度学习框架的底层算子对所述深度学习模型进行参数配置;所述数据处理模块用于调用所述后端层中的深度学习框架对应的底层算子进行数据处理。

进一步地,如图2所示,所述模型搭建模块中包含实现常用神经网络层如卷积层、池化层和全连接层的模型搭建组件,所述模型搭建组件包含卷积层(Convolution)、池化层(Pooling)、全连接层(Dense)、噪声层(Noise)、量化层(Quantize)、合并层(Merge)、扩展层(Extend)、嵌入层(Embedding)以及Dropout层(Dropout)。所述后端层包含各个深度学习框架如TensorFlow、MindSpore、Dragon的底层算子,每个所述底层算子具有统一的算子接口,所述模型搭建模块通过调用所述后端层中各个深度学习框架的底层算子可以实现常用神经网络层如卷积层、池化层和全连接层等的搭建。例如,使用TensorFlow构建全连接层时,需要使用TensorFlow的底层算子matmul和bias_add,模型搭建模块通过调用后端层中TensorFlow的底层算子matmul和bias_add即可实现全连接层的构建,由于后端层中各个深度学习框架的底层算子具有统一的算子接口,当需要使用其它框架如MindSpore、Dragon等构建全连接层时,无需修改代码,只要通过切换后端就能完成对应框架底层算子调用,实现快速、高效构建深度学习模型,减少繁琐的代码开发和切换不同框架的代码迁移工作。

为了解决不同框架模型搭建方式不统一的问题,本实施例中的搭建系统(TensorLayer)还根据不同深度学习框架的特点进行模型抽象,如图3所示,所述用户层包含模型抽象模块(Core),所述模型抽象模块中包含不同深度学习框架对应的模块基类(Module基类),例如,Tensorflow对应的模块基类Tensorflow_Module,Mindspore对应的模块基类Mindspore_Module,Module基类中包含模型训练参数及计算逻辑,TensorLayer通过Module基类进行模型抽象,所述模型搭建模块(Layer)中的各个模型搭建组件,如卷积层(Convolution)、池化层(Pooling)、全连接层(Dense)、噪声层(Noise)、量化层(Quantize)、合并层(Merge)、扩展层(Extend)、嵌入层(Embedding)、Dropout层(Dropout)等都继承Module基类。如下为使用本实施例的模型搭建模型搭建一个三层感知机神经网络模型的实现代码:

进一步地,在Module基类里通过self._params存放注册的Parameters对象,self._layers存放Layer对象,通过_setattr__与__getattr__实现属性赋值与管理,在build函数里实现训练参数的构建和调用后端层的底层算子实例化,在forward函数里定义计算逻辑。

继续参照图2所示,所述参数配置模块中包含实现搭建和训练深度学习模型的模型搭建函数,所述模型搭建函数包括损失函数(Loss)、优化函数(Optimizers)、激活函数(Activations)、归一化函数(Normalizations)以及初始化函数(Initializers)。所述后端层包含各个深度学习框架如TensorFlow、MindSpore、Dragon的底层算子,每个所述底层算子具有统一的算子接口,所述参数配置模块通过调用所述后端层中各个深度学习框架的底层算子可以实现搭建和训练深度学习模型的函数如损失函数(Loss)、优化函数(Optimizers)、激活函数(Activations)、归一化函数(Normalizations)以及初始化函数(Initializers)等。

在一具体实施方式中,所述数据处理模块用于调用所述后端层中各个深度学习框架的底层算子实现序列、文本和图像的数据处理。如图2所示,所述数据处理模块包括序列处理单元(Sequence)、文本处理单元(Text)以及图像处理单元(Image)。所述序列处理单元用于调用所述后端层中各个深度学习框架的底层算子对序列数据进行处理;所述文本处理单元用于调用所述后端层中各个深度学习框架的底层算子对文本数据进行处理;所述图像处理单元用于调用所述后端层中各个深度学习框架的底层算子对图像数据进行处理。

在一具体实施例中,所述模型训练模块包含各个所述深度学习框架对应的模型训练单元,例如,Mindspore对应的模型训练单元为Mindspore_train,Tensorflow对应的模型训练单元为Tensorflow_train,每个所述模型训练单元用于调用所述后端层中对应的深度学习框架的底层算子确定用于训练所述深度学习模型的硬件模块。例如,Mindspore_train用于调用后端层中的Mindspore的底层算子确定用于训练所述深度学习模型的硬件模块,Tensorflow_train用于调用后端层中的Tensorflow的底层算子确定用于训练所述深度学习模型的硬件模块。

在一具体实施方式中,所述设备层包含若干用于训练的硬件模块,若干所述硬件模块包括图形处理器(Graphics Processing Unit,GPU),中央处理器(CentralProcessing Unit,CPU),Ascend以及张量处理器(Tensor Processing Unit,TPU),深度学习模型搭建过程中,可以根据用户硬件环境不同选择在合适的硬件模块上进行深度学习模型训练。

在一具体实施方式中,所述搭建系统还包括:设置于所述用户层之上的应用层(Applications),所述应用层用于存储搭建好的所述深度学习模型以供用户在需要时直接使用,例如,所述应用层中包含深卷积生成对抗网络(Deep Convolutional GenerativeAdversarial Network,DCGAN),超分辨生成对抗网络(Super-resolution GenerativeAdversarial Network,SRGAN),聊天机器人(Chatbot)、风格转换(Style Transfer)等。

在一具体实施方式中,所述搭建系统还包括:设置于所述用户层和所述应用层之间的语言层(Language),所述语言层提供用于调用所述底层算子的编程语言,本实施例中所述语言层提供的编程语言为Python语言。

综上所述,本发明公开了一种兼容多框架的深度学习模型快速搭建系统,包括:设备层、后端层以及用户层,所述设备层包含若干硬件模块,所述后端层包含若干深度学习框架,每个所述深度学习框架包含若干底层算子,每个所述底层算子具有统一的算子接口,所述用户层包含模型抽象模块,所述模型抽象模块包含各个所述深度学习框架对应的模型训练参数及计算逻辑,所述用户层用于调用所述后端层中的底层算子搭建深度学习模型,并通过所述设备层的硬件模块训练所述深度学习模型,其中,所述深度学习模型基于所述模型抽象模块中的模型训练参数及计算逻辑搭建。本发明通过设计统一的算子API来规范不同深度学习框架底层算子,可以兼容提供函数接口和提供类接口的深度学习框架,根据不同深度学习框架的特点设计模型抽象模块,从而兼容不同深度学习框架和不同硬件,使得用户能快速、高效构建深度学习模型,减少繁琐的代码开发和切换不同深度学习框架的代码迁移工作。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号