CN117291260A - 深度学习框架适配方法、装置、设备、存储介质和产品 - Google Patents
深度学习框架适配方法、装置、设备、存储介质和产品 Download PDFInfo
- Publication number
- CN117291260A CN117291260A CN202311269670.9A CN202311269670A CN117291260A CN 117291260 A CN117291260 A CN 117291260A CN 202311269670 A CN202311269670 A CN 202311269670A CN 117291260 A CN117291260 A CN 117291260A
- Authority
- CN
- China
- Prior art keywords
- interface information
- target
- deep learning
- operation interface
- learning framework
- 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.)
- Pending
Links
- 238000013135 deep learning Methods 0.000 title claims abstract description 243
- 230000006978 adaptation Effects 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000011161 development Methods 0.000 claims abstract description 172
- 230000006870 function Effects 0.000 claims abstract description 62
- 238000012360 testing method Methods 0.000 claims description 63
- 238000012545 processing Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 23
- 230000007246 mechanism Effects 0.000 claims description 15
- 238000004806 packaging method and process Methods 0.000 claims description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 21
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种深度学习框架适配方法、装置、设备、存储介质和产品,该方法包括:先获取目标深度学习框架中的当前运行接口信息,并根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,然后根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息,将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架;其中,当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息。该方法能够提高深度学习框架在ROCm开发平台上运行时的运行效率。
Description
技术领域
本申请涉及计算技术领域,特别是涉及一种深度学习框架适配方法、装置、设备、存储介质和产品。
背景技术
随着数据的爆炸式增长,深度学习模型得到广泛的应用。
相关技术中,为了提高深度学习模型的训练和推理速度,可以在并行计算平台上实现异构加速器对深度学习框架的并行计算。例如,最常使用的并行计算平台为统一计算设备架构(Compute Unified Device Architecture,CUDA)开发平台。但为了进一步提高深度学习框架的加速计算,则需要用到开源运算平台(Radeon Open Compute,ROCm)实现对深度学习框架的异构加速。
然而,相关技术中,深度学习框架在ROCm开发平台上运行时存在效率低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种深度学习框架适配方法、装置、设备、存储介质和产品,能够提高深度学习框架在ROCm开发平台上运行时的运行效率。
第一方面,本申请提供了一种深度学习框架适配方法,包括:
获取目标深度学习框架中的当前运行接口信息;当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息;
根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息;
根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息;
将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架。
本申请实施例的技术方案中,先获取目标深度学习框架中的当前运行接口信息,并根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,然后根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息,将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架;其中,当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息。通过异构加速器在历史开发平台上执行目标深度学习的当前运行接口信息,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,使得当前运行接口信息和目标运行接口信息的功能一致,因此,为了将目标深度学习框架在目标开发平台上适配,则可以将当前运行接口信息和目标运行接口信息通过一个对外统一接口信息进行统一,由于对外接口信息能够同时适配历史开发平台和目标开发平台,使得目标深度学习框架在目标开发平台运行时的转码工作量大幅度降低,从而提高了目标深度学习框架在目标开发平台上运行时的效率。
在其中一个实施例中,根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,包括:
若目标开发平台中存在与当前运行接口信息的功能相同的运行接口信息,则将目标开发平台中与当前运行接口信息的功能相同的运行接口信息确定为目标运行接口信息;
若目标开发平台中未存在与当前运行接口信息的功能相同的运行接口信息,则根据当前运行接口信息的功能,生成目标运行接口信息。
本申请实施例的技术方案中,若目标开发平台中存在与当前运行接口信息的功能相同的运行接口信息,则将目标开发平台中与当前运行接口信息的功能相同的运行接口信息确定为目标运行接口信息,若目标开发平台中未存在与当前运行接口信息的功能相同的运行接口信息,则根据当前运行接口信息的功能,生成目标运行接口信息。本实施例中通过当前运行接口信息的功能,确定目标运行接口信息,使得目标深度学习框架在目标开发平台能够实现与在历史开发平台相同的功能,且目标运行接口信息可与目标开发平台直接适配,从而提高了目标深度学习框架与目标开发平台的适配性。
在其中一个实施例中,根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息,包括:
获取当前运行接口信息和目标运行接口信息中的接口名称对比结果,以及当前运行接口信息和目标运行接口信息中的参数信息对比结果;
根据接口名称对比结果、参数信息对比结果和预设的宏定义方式,获取目标深度学习框架的对外统一接口信息。
本申请实施例的技术方案中,获取当前运行接口信息和目标运行接口信息中的接口名称对比结果,以及当前运行接口信息和目标运行接口信息中的参数信息对比结果,并根据接口名称对比结果、参数信息对比结果和预设的宏定义方式,获取目标深度学习框架的对外统一接口信息。本实施例中,在获取目标深度学习框架的对外统一接口信息之前,需要先对当前运行接口信息和目标运行接口信息中的接口名称和参数信息进行对比,判断当前运行接口信息和目标运行接口信息是否一致,以此对比结果获取对外统一接口信息,提高了得到的对外统一接口信息的准确性。
在其中一个实施例中,根据接口名称对比结果、参数信息对比结果和预设的宏定义方式,获取目标深度学习框架的对外统一接口信息,包括:
若接口名称对比结果和参数信息对比结果均为相同,则通过宏定义方式将当前运行接口信息和目标运行接口信息进行统一处理,生成对外统一接口信息;
若接口名称对比结果和/或参数信息对比结果为不同,则将目标运行接口信息进行封装,得到封装后的目标运行接口信息,并通过宏定义方式将当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到对外统一接口信息。
本申请实施例的技术方案中,若接口名称对比结果和参数信息对比结果均为相同,则通过宏定义方式将当前运行接口信息和目标运行接口信息进行统一处理,生成对外统一接口信息;若接口名称对比结果和/或参数信息对比结果为不同,则将目标运行接口信息进行封装,得到封装后的目标运行接口信息,并通过宏定义方式将当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到对外统一接口信息。本实施例中,通过宏定义将当前运行接口信息和目标运行接口信息进行统一,并在当前运行接口信息和目标运行接口信息不对应时,需要先将目标运行接口信息和当前运行接口信息对齐,并在对齐的基础上,实现对当前运行接口信息和目标运行接口信息的统一,保证了对外统一接口信息的准确性,使得对外统一接口信息能够准确适配历史开发平台和目标开发平台。
在其中一个实施例中,将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架,包括:
将当前运行接口信息修改为对外统一接口信息,得到修改后的深度学习框架;
对修改后的深度学习框架进行单元测试;
在单元测试通过的情况下,将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。
本申请实施例的技术方案中,将当前运行接口信息修改为对外统一接口信息,得到修改后的深度学习框架,并对修改后的深度学习框架进行单元测试,在单元测试通过的情况下,将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。本实施例中,在对目标深度学习框架修改之后,对修改后的深度学习框架进行单元测试,只有在单元测试通过的情况下,才会将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架,从而保证了得到的与目标开发平台适配的深度学习框架的性能。
在其中一个实施例中,该方法还包括:
在将当前运行接口信息修改为对外统一接口信息的情况下,根据预设的框架硬件抽象机制,将对外统一接口信息进行抽象化处理,得到抽象层接口;抽象层接口用于目标深度学习框架与异构加速器进行交互。
本申请实施例的技术方案中,在将当前运行接口信息修改为对外统一接口信息的情况下,根据预设的框架硬件抽象机制,将对外统一接口信息进行抽象化处理,得到抽象层接口;其中,抽象层接口用于目标深度学习框架与异构加速器进行交互。通过将对外统一接口进行抽象化处理,将原本直接调用底层接口的模块只需通过抽象接口层与异构加速器进行交互即可,无需深度了解深度学习框架的运行机制即可进行适配工作,提高了适配工作的效率和简便性。
第二方面,本申请还提供了一种深度学习框架适配装置,包括:
获取模块,用于获取目标深度学习框架中的当前运行接口信息;当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息;
第一确定模块,用于根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息;
第二确定模块,用于根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息;
适配模块,用于将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架。
第三方面,本申请实施例提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,该处理器执行计算机程序时实现上述第一方面中任一实施例提供的方法的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一实施例提供的方法的步骤。
第五方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一实施例提供的方法的步骤。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中计算机设备的内部结构图;
图2为一个实施例中深度学习框架适配方法的流程示意图;
图3为另一个实施例中深度学习框架适配方法的流程示意图;
图4为另一个实施例中深度学习框架适配方法的流程示意图;
图5为另一个实施例中深度学习框架适配方法的流程示意图;
图6为另一个实施例中深度学习框架适配方法的流程示意图;
图7为一个实施例中深度学习框架适配方法的测试结果示意图;
图8为另一个实施例中深度学习框架适配方法的测试结果示意图;
图9为另一个实施例中深度学习框架适配方法的流程示意图;
图10为一个实施例中深度学习框架适配装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的深度学习框架适配方法,可以应用于计算机设备中。该计算机设备可以是服务器,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。该计算机设备的内部结构图可以如图1所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储深度学习框架适配数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种深度学习框架适配方法。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,随着人工智能、5G等高新技术的快速发展,以及互联网数据规模的快速增长,导致中央处理器(Central Processing Unit,CPU)同构架构已经无法满足越来越多的计算需求。为了满足科技发展及社会进步对计算能力的需求,CPU+通用异构加速器逐渐成为数据中心、超级计算机不可或缺的重要硬件单元。
与此同时,由于深度学习大模型比如生成式神经网络模型(Generative Pre-trained Transformer,GPT)、文心等的快速发展,模型训练对硬件平台的性能,生态以及新一代深度学习基础框架提出了更高的要求。在大模型的应用领域,千卡万卡规模的计算已经非常普遍,其中对通信库、调度、计算、访存等的性能要求变得前所未有的苛刻。
分布式性能(高效性)是深度学习框架的核心技术难点。以深度学习框架为OneFlow为例,OneFlow是开源的、采用全新架构设计、领先的工业级通用深度学习框架,为大模型而生,原生支持超大规模模型,训练性能世界领先,OneFlow围绕性能提升和异构分布式扩展,秉持静态编译和流式并行的核心理念和架构,解决了集群层面的内存墙挑战,技术水平领先。OneFlow可降低计算集群内部的通信和调度消耗,提高硬件利用率,加快模型训练速度,训练成本时间大幅缩减。
但是,OneFlow目前仅对CUDA生态进行了完善支持,因此,基于CPU+通用异构加速器平台、软件栈(Deep Learning Toolkit,DTK),以及相关数学库等进行分布式深度学习框架OneFlow的研发适配成为必要选择。
其中,ROCm是一个用于高性能异构计算(CPU+通用图形处理器(General-PurposeGraphics Processing Unit,GPGPU))的开源软件框架,包含各种高性能异构计算库;ROCm支持使用AMD GPU来充分发挥TensorFlow或PyTorch等主流深度学习框架的异构加速功能。
以PyTorch为例来阐述相关技术中的适配方案,相关技术中,在Pytorch中,其转码适配工作主要由hipify扩展模块负责,在编译时需要先将CUDA源文件按照一定规则转换成.hip源文件,包括头文件路径转换,基于ROCm运行时的转码,数学库转码等,直接使用MIOpne库完成;完成之后会交给ROCm生态中的hipcc编译器去进行编译,整体流程定制化步骤较多,导致深度学习框架在ROCm上运行时的效率较低。
基于此,本申请实施例提供了一种深度学习框架适配方法,能够提高深度学习框架在异构加速器上的运行效率。
在一个示例性的实施例中,如图2所示,提供了一种深度学习框架适配方法,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤:
S201,获取目标深度学习框架中的当前运行接口信息;当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息。
其中,异构加速器是一种能够提高性能计算能力的硬件设备,它可以与主处理器配合工作,加速特定类型的计算任务;例如,异构加速器可以加速深度学习框架中的计算任务。可选地,异构加速器可以是图形处理器(Graphics Processing Unit,GPU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、张量处理单元(Tensor ProcessingUnit,TPU)和非易失性存储器(Non-Volatile Memory,NVM,NVM)加速器等等;目标深度学习框架可以是需要异构加速器进行计算任务加速的任一深度学习框架;例如,目标深度学习框架可以是TensorFlow、PyTorch和OneFlow等。
由于当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息,因此,获取目标深度学习框架中的当前运行接口信息的方式可以是:首先,获取目标深度学习框架的属性信息,例如,属性信息可以包括目标深度学习框架的版本、异构加速器和操作系统等;然后根据目标深度学习框架的属性信息,以及属性信息与运行接口信息之间的关系,确定目标深度学习框架中的当前运行接口信息。
具体地,将对应关系中目标深度学习框架的属性信息对应的运行接口信息确定为目标深度学习框架中的当前运行接口信息。
在一种可选的实施例中,也可以将目标深度学习框架通过历史开发平台在异构加速器上执行,确定异构加速器在历史开发平台上执行目标深度学习框架的当前运行接口信息。
历史开发平台可以是CUDA开发平台。当前运行接口信息可以包括底层库、驱动程序、程序之间的接口(Application Programming Interface,API)等;例如,当前运行接口信息可以包括关于异构加速器的相关设备接口信息和计算接口信息;可选地,关于异构加速器的相关设备接口信息可以包括设备管理接口、设备注册接口、内存管理接口、事件管理接口和队列管理接口等,计算接口可以是自定义的,用来描述目标深度学习框架中的相关技术,例如,相乘(Matmul)、卷积(Conv)和归一化操作(BatchNorm)等等;其中,计算接口可以包括在算子程序中。
其中,设备管理接口提供了针对某种类型设备的管理能力,例如,设备对象的实现、设备枚举、根据索引检索某个特定的设备对象、切换当前上下文对应的活跃设备和常量数据缓冲管理等;设备注册接口提供了向深度学习框架注册一个新的设备类型的能力,并提供设备相应的信息,如设备名称、版本信息等,被注册的设备可以在深度学习框架中使用,该接口是为深度学习框架添加新设备的入口;内存管理接口提供了针对设备上内存管理的能力,例如,申请设备内存、释放设备内存、申请用于与设备通信的主机内存和释放用于与设备通信的主机内存等;事件管理接口提供了针对设备上事件管理的能力,例如,创建事件、销毁事件、同步事件和查询事件当前状态等;队列管理接口提供了针对设备上的运行队列管理的能力,例如,创建队列、销毁队列、执行任务、同步队列、获取队列相关的错误标志和信息,以及针对执行上下文的生命周期钩子等。
S202,根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息。
历史开发平台可以是CUDA开发平台,目标开发平台可以是ROCm开发平台。
其中,目标运行接口信息与对应的当前运行接口信息的功能相同,但不同的开发平台对应的接口执行方式可能不同;因此,可以根据目标开发平台的属性信息和当前运行接口的功能,确定对应的目标运行接口信息。
首先,可以先获取目标开发平台的硬件架构和特性,例如,异构加速器的型号、架构和性能指标等;可以根据当前运行接口信息的功能以及目标开发平台的硬件架构和特性,确定异构加速器在目标平台上执行目标深度学习框架时所需的目标运行接口信息的实现方式和参数配置。
可选地,也可以根据当前运行接口信息的功能,以及接口功能与目标开发平台对应的运行接口信息之间的对应关系,将对应关系中当前运行接口信息的功能对应的目标开发平台的运行接口信息确定为目标运行接口信息。
S203,根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息。
其中,目标深度学习框架的对外统一接口信息可以兼容目标深度学习框架在不同开发平台上的运行接口,同时能够满足目标深度学习框架在目标开发平台上的需求;这里的不同开发平台可以包括历史开发平台和目标开发平台。
可以通过预设的接口统一模型确定目标深度学习框架的对外统一接口信息;具体地,将当前运行接口信息和目标运行接口信息输入至接口统一模型中,通过接口统一模型对当前运行接口信息和目标运行接口信息进行分析,得到目标深度学习框架的对外统一接口信息。
在一种可选的实施例中,也可以在数据库中直接获取当前运行接口信息和目标运行接口信息共同对应的对外统一接口信息;数据库中存储多种历史开发平台的运行接口信息和目标开发平台对应的接口信息共同对应的对外统一接口信息;因此,可以直接从数据库中查找历史开发平台对应的当前接口信息和目标开发平台对应的目标运行接口信息共同对应的对应统一接口信息。
S204,将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架。
将当前运行接口信息直接修改为对外统一接口信息,目标深度学习框架中的运行接口信息为对外统一接口信息,则确定修改后的深度学习框架与目标开发平台适配,即将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。
本申请实施例中,先获取目标深度学习框架中的当前运行接口信息,并根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,然后根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息,将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架;其中,当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息。本实施例中,通过异构加速器在历史开发平台上执行目标深度学习的当前运行接口信息,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,使得当前运行接口信息和目标运行接口信息的功能一致,因此,为了将目标深度学习框架在目标开发平台上适配,则可以将当前运行接口信息和目标运行接口信息通过一个对外统一接口信息进行统一,由于对外接口信息能够同时适配历史开发平台和目标开发平台,使得目标深度学习框架在目标开发平台运行时的转码工作量大幅度降低,从而提高了目标深度学习框架在目标开发平台上运行时的效率。
通过异构加速器在历史开发平台上执行目标深度学习框架的当前运行接口信息,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,基于此,下面通过一个实施例对目标运行接口信息的获取过程进行说明。
在一个示例性的实施例中,如图3所示,根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息,包括以下步骤:
S301,若目标开发平台中存在与当前运行接口信息的功能相同的运行接口信息,则将目标开发平台中与当前运行接口信息的功能相同的运行接口信息确定为目标运行接口信息。
以历史开发平台为CUDA开发平台、目标开发平台为ROCm开发平台为例,CUDA开发平台的一些接口与ROCm开发平台的一些接口是完全对应的,如表1所示。
表1
基于上述表1可知,CUDA开发平台的数学库接口大多可以找到与ROCm的HIP接口与之对应。
因此,若目标开发平台中存在与历史开发平台对应的当前接口信息的功能相同的运行接口信息,则可以将目标开发平台中与当前运行接口信息的功能相同的运行接口信息确定为目标运行接口信息。
例如,若当前运行接口信息包括cuRAND,则可以将与cuRAND的功能相同的rocRAND/hipRAND确定为目标运行接口信息。
S302,若目标开发平台中未存在与当前运行接口信息的功能相同的运行接口信息,则根据当前运行接口信息的功能,生成目标运行接口信息。
若目标开发平台中未存在与当前运行接口信息的功能相同的运行接口信息,则需要根据当前运行接口信息的功能,生成适配目标开发平台的目标运行接口信息;其中,目标运行接口信息与当前运行接口信息的功能相同。
可选地,可以根据预设的接口信息生成模型确定目标运行接口信息;具体地,将当前运行接口信息的功能,以及目标开发平台的硬件架构和特性等信息输入至接口信息生成模型中,通过接口信息生成模型对当前运行接口信息的功能,以及目标开发平台的硬件架构和特性等信息进行分析,生成目标运行接口信息。
本申请实施例中,若目标开发平台中存在与当前运行接口信息的功能相同的运行接口信息,则将目标开发平台中与当前运行接口信息的功能相同的运行接口信息确定为目标运行接口信息,若目标开发平台中未存在与当前运行接口信息的功能相同的运行接口信息,则根据当前运行接口信息的功能,生成目标运行接口信息。本实施例中通过当前运行接口信息的功能,确定目标运行接口信息,使得目标深度学习框架在目标开发平台能够实现与在历史开发平台相同的功能,且目标运行接口信息可与目标开发平台直接适配,从而提高了目标深度学习框架与目标开发平台的适配性。
在一个示例性的实施例中,如图4所示,根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息,包括:
S401,获取当前运行接口信息和目标运行接口信息中的接口名称对比结果,以及当前运行接口信息和目标运行接口信息中的参数信息对比结果。
需要说明的是,虽然当前运行接口信息和目标运行接口信息实现的功能相同,但是,有时候历史开发平台中的当前运行接口信息与目标开发平台中的目标运行接口信息的执行流程完全不同,即当前运行接口和目标运行接口的接口名称和参数信息不同,则此时不能直接将当前运行接口信息和目标运行接口信息进行统一,因此,在将当前运行接口信息和目标运行接口信息进行统一接口时,需要先对比当前运行接口信息和目标运行接口信息的接口名称和参数信息。
在当前运行接口信息和目标运行接口信息功能相同的情况下,分别对当前运行接口信息和目标运行接口信息的接口名称和参数信息进行对比,得到当前运行接口信息和目标运行接口信息中的接口名称对比结果以及当前运行接口信息和目标运行接口信息中的参数信息对比结果。
其中,接口名称对比结果包括当前运行接口信息和目标运行接口信息中的接口名称相同、当前运行接口信息和目标运行接口信息中的接口名称不相同;参数信息对比结果包括当前运行接口信息和目标运行接口信息中的参数信息相同、当前运行接口信息和目标运行接口信息中的参数信息不相同。
S402,根据接口名称对比结果、参数信息对比结果和预设的宏定义方式,获取目标深度学习框架的对外统一接口信息。
在一个示例性的实施例中,如图5所示,根据接口名称对比结果、参数信息对比结果和预设的宏定义方式,获取目标深度学习框架的对外统一接口信息,包括以下步骤:
S501,若接口名称对比结果和参数信息对比结果均为相同,则通过宏定义方式将当前运行接口信息和目标运行接口信息进行统一处理,生成对外统一接口信息。
如果接口名称对比结果和参数信息对比结果均为相同,即当前运行接口信息和目标运行接口信息的接口名称和参数信息均相同,则可以通过宏定义的方式将当前运行接口信息和目标运行接口信息进行统一,得到对外统一接口信息。
例如,以异构加速器GPU、历史开发平台为CUDA、目标开发平台为ROCm为例,若当前运行接口信息中包括“cuda_XX”,目标运行接口信息包括“hip_XX”,则对外统一接口可以为“GPU_XX”;其中,在本实施例中,当前运行接口信息、目标运行接口信息和对外统一接口信息中的“XX”相同。
S502,若接口名称对比结果和/或参数信息对比结果为不同,则将目标运行接口信息进行封装,得到封装后的目标运行接口信息,并通过宏定义方式将当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到对外统一接口信息。
若接口名称对比结果和/或参数信息对比结果为不同,则将目标运行接口信息进行封装,得到封装后的目标运行接口信息;其中,封装后的目标运行接口信息与当前运行接口信息对齐;因此,在当前运行接口信息与目标运行接口信息对齐的基础上,再通过宏定义方式将当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到对外统一接口信息。
需要说明的是,通过宏定义方式将当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到对外统一接口信息的方式与上述实施例中通过宏定义方式将当前运行接口信息和目标运行接口信息进行统一处理,生成对外统一接口信息的方式类似,本申请实施例在此不再赘述。
以目标运行接口信息为MIOpen为例,MIOpen的参数信息与cuDNN完全不同,对应地,MIOpen的执行流程与cuDNN也完全不同,在MIOpen中一般采用Find-Mode卷积执行流程,具有大量的算子(kernel)缓存并单独维护了一套搜索匹配机制去进行最优kernel的寻找。
MIOpen中搜索卷积的流程可以包括:先通过同时GetWorkSpaceSize获取空间内存的大小,然后通过FindConvolutionAlgorithm接口查找卷积算法,最后找到相应的卷积(Convolution);其中,GetWorkSpaceSize(获取空间内存大小)是MIOpen中不可或缺的前置计算流程,FindConvolutionAlgorithm接口中有完善的缓存机制与搜索匹配机制,因此,基于此可以快速搜索到对应的卷积;但是,cuDNN中的卷积部分手动适配较多,需要针对异构加速器进行性能优化。
因此,可以采用hipDNN库封装MIOpen来兼容对齐cuDNN库,这样,可以有效降低MIOpen库相关操作的后期维护成本。
本申请实施例中,若接口名称对比结果和参数信息对比结果均为相同,则通过宏定义方式将当前运行接口信息和目标运行接口信息进行统一处理,生成对外统一接口信息;若接口名称对比结果和/或参数信息对比结果为不同,则将目标运行接口信息进行封装,得到封装后的目标运行接口信息,并通过宏定义方式将当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到对外统一接口信息。本实施例中,通过宏定义将当前运行接口信息和目标运行接口信息进行统一,并在当前运行接口信息和目标运行接口信息不对应时,需要先将目标运行接口信息和当前运行接口信息对齐,并在对齐的基础上,实现对当前运行接口信息和目标运行接口信息的统一,保证了对外统一接口信息的准确性,使得对外统一接口信息能够准确适配历史开发平台和目标开发平台。
本申请实施例中,获取当前运行接口信息和目标运行接口信息中的接口名称对比结果,以及当前运行接口信息和目标运行接口信息中的参数信息对比结果,并根据接口名称对比结果、参数信息对比结果和预设的宏定义方式,获取目标深度学习框架的对外统一接口信息。本实施例中,在获取目标深度学习框架的对外统一接口信息之前,需要先对当前运行接口信息和目标运行接口信息中的接口名称和参数信息进行对比,判断当前运行接口信息和目标运行接口信息是否一致,以此对比结果获取对外统一接口信息,提高了得到的对外统一接口信息的准确性。
上述实施例均是对如何获取对外统一接口信息进行的说明,下面通过一个实施例对如何根据对外统一接口信息得到与目标开发平台适配的深度学习框架进行说明。
在一个示例性的实施例中,如图6所示,将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架,包括:
S601,将当前运行接口信息修改为对外统一接口信息,得到修改后的深度学习框架。
其中,对外统一接口信息中可以包括在历史开发平台下执行目标深度学习框架时的当前运行接口信息,以及在目标开发平台下执行目标深度学习框架时的目标运行接口信息。
因此,可以将当前运行接口信息修改为对外统一接口信息,这样,历史开发平台和目标开发平台可以共用目标深度学习框架的大多数程序,目标深度学习框架在目标开发平台编译时,可以将脚本转成cpp文件进行编译,完成了目标深度学习框架的代码与目标开发平台的适配,减少了代码量;后期只需要对对外统一接口进行维护即可,减少了维护的工作量。
S602,对修改后的深度学习框架进行单元测试。
单元测试是确保代码质量和功能正确的重要步骤,因此,在对目标深度学习框架修改完成后,需要对修改后的深度学习框架进行单元测试。
对修改后的深度学习框架进行单元测试的方式可以是,将修改后的深度学习框架的代码划分为多个小的测试单元;其中,每个测试单元可以测试一个特定的功能或行为;获取每个测试单元的测试用例,然后根据预设的单元测试框架运行各测试用例对每个测试单元进行测试,确定每个测试用例的测试结果。若某个测试用例测试不通过,则表示该测试用例对应的测试单元不通过,确定修改后的深度学习框架单元测试不通过;若各测试用例均测试通过,则确定修改后的深度学习框架单元测试通过。
其中,获取每个测试单元的测试用例的方式可以是,根据每个测试单元的功能,为每个测试单元编写测试用例;也可以是根据测试用例的功能,直接从数据库中获取每个测试单元的功能对应的测试用例;测试用例可以包括输入数据、期望输出和断言语句等,其中,测试用例可以覆盖尽可能多的代码路径和边界情况。
S603,在单元测试通过的情况下,将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。
在单元测试通过的情况下,表示修改后的深度学习框架的代码正确,因此,可直接将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。
可选地,在单元测试通过的情况下,可以对修改后的深度学习框架进行基准测试,在基准测试的情况下,将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。
在单元测试不通过的情况下,可以获取进行单元测试的测试失败用例,根据测试失败用例分析单元测试失败原因,根据单元测试失败原因对修改后的深度学习框架的代码进行修改,直至修改后的深度学习框架的单元测试通过。
本申请实施例中,将当前运行接口信息修改为对外统一接口信息,得到修改后的深度学习框架,并对修改后的深度学习框架进行单元测试,在单元测试通过的情况下,将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。本实施例中,在对目标深度学习框架修改之后,对修改后的深度学习框架进行单元测试,只有在单元测试通过的情况下,才会将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架,从而保证了得到的与目标开发平台适配的深度学习框架的性能。
深度学习框架通常均是由计算、通信和调度等不同模块组成,其中,大部分模块都会涉及对底层硬件的调用,如果深度学习框架直接进行耦合硬件设备的接口,那么,如果底层硬件有改动时,涉及的相关模块均需要改动,复杂又容易出错,并且,开发维护成本非常高,因此,为了适应不同硬件的复杂性,该适配研发工作可以利用深度学习框架中的框架硬件抽象机制进行硬件抽象,这样,引入硬件抽象层接口后,原本直接调用底层接口的模块只需和硬件抽象层统一接口交互即可,无需关注底层硬件的具体细节,当引入新的硬件设备时,因为硬件设备接口保持不变,所以深度学习框架的各个模块无需改动便可适配新的硬件设备。下面通过一个实施例对此进行详细说明。
在一个示例性的实施例中,该实施例包括:在将当前运行接口信息修改为对外统一接口信息的情况下,根据预设的框架硬件抽象机制,将对外统一接口信息进行抽象化处理,得到抽象层接口;抽象层接口用于目标深度学习框架与异构加速器进行交互。
其中,框架硬件抽象机制可以将接口进行抽象化。
在将当前运行接口信息修改为对外统一接口信息的情况下,可以根据预设的框架硬件抽象机制将对外统一接口信息进行抽象化处理,得到抽象层接口,其中,抽象层接口用于实现目标深度学习框架与异构加速器的交互。
可选地,异构加速器在开发平台上执行目标深度学习框架时涉及的运行接口,可以包括运行时调用接口和自定义的计算接口;因此,相应地,对外统一接口也包括运行时调用接口和计算接口等,将运行时调用接口和计算接口进行抽象化处理,得到运行时调用接口对应的硬件执行抽象层接口(Execution Provider)和计算接口对应的硬件计算抽象原语(Primitive)。
本申请实施例中,在将当前运行接口信息修改为对外统一接口信息的情况下,根据预设的框架硬件抽象机制,将对外统一接口信息进行抽象化处理,得到抽象层接口;其中,抽象层接口用于目标深度学习框架与异构加速器进行交互。通过将对外统一接口进行抽象化处理,将原本直接调用底层接口的模块只需通过抽象接口层与异构加速器进行交互即可,无需深度了解深度学习框架的运行机制即可进行适配工作,提高了适配工作的效率和简便性。
在一个示例性的实施例中,可以基于目标开发平台的软件栈实现目标深度学习框架与目标开发平台在异构加速器上的适配。本实施例采用只适配DTK中运行时、数学库函数与库数据结构的方案。其中,文件名、自定义的CUDA函数名、类名、数据结构以及打印字符串部分都不会改动,尽可能减少修改地方,这种适配策略可以将外部接口参数与使用方式与CUDA生态保持一致,用户在上层使用时不会感受出任何区别,极大地改善了用户体验。
在一个实施例中,以目标深度学习框架为OneFlow为例,在对OneFlow在异构加速器上适配研发完成之后,对标Nvidia V100 GPU,在基准resnet50与bert模型下进行了对比单卡测试,当单次用以训练的样本个数(batch size)均为64时,测试resnet50结果如图7所示,图7中的型号1表示的是V100 GPU,型号2可以表示的是通用异构加速器,由于V100 GPU具有特殊的TensorCore等张量计算单元,理论峰值性能会高于通用异构加速器,因此,适配OneFlow框架后在resnet50上性能达到V100的70%,已达到预期水平。
如图8所示,图8为bert模型的测试结果,单位为每迭代一次耗费多少秒(s/iter),图8中的型号1表示的是V100 GPU,型号2可以表示的是通用异构加速器,由于通用异构加速器峰值性能略低于V100 GPU,因此每迭代一次耗时较多,但整体性能达到V100 GPU70%,已达到预期水平。
在一个示例性的实施例中,本申请实施例还提供了一种深度学习框架适配方法,以目标深度学习框架为OneFlow、异构加速器为GPU、历史开发平台为CUDA开发平台、目标开发平台为ROCm开发平台为例进行说明,如图9所示,该实施例包括以下步骤:
S901,获取OneFlow通过CUDA开发平台在GPU上执行时的当前运行接口信息。
其中,当前运行接口信息包括相关设备接口、自定义的计算接口和kenel中的接口等。
S902,确定在ROCm开发平台上与CUDA开发平台的当前运行接口信息对标的目标运行接口信息。
S903,若CUDA开发平台对应的当前运行接口信息与ROCm开发平台对应的目标运行接口信息一致,则直接采用GPU宏统一当前运行接口信息和目标运行接口信息,得到对外统一接口信息。
这样,只需要维护好统一宏即可,不再需要从当前运行接口信息的CUDA源代码转换为目标运行接口信息的hip源代码的繁琐转码工作。
S904,若CUDA开发平台对应的当前运行接口信息与ROCm开发平台对应的目标运行接口信息不一致,则将目标运行接口信息进行封装,再采用GPU宏统一当前运行接口信息和封装后的目标运行接口信息,得到对外统一接口信息。
S905,若ROCm开发平台中不存在目标运行接口信息,则需要进行重写或优化,生成目标运行接口信息(ROCm宏),并将目标运行接口信息进行封装,再采用GPU宏统一当前运行接口信息和封装后的目标运行接口信息,得到对外统一接口信息。
其中,若ROCm开发平台中不存在目标运行接口信息,表示CUDA开发平台存在一些无法与ROCm开发平台共用的代码块,因此,可以在不影响CUDA生态代码的情况下,完成异构加速器的代码适配。
S906,根据对外统一接口信息将OneFlow进行修改,得到修改后的OneFlow,OneFlow能够与ROCm开发平台适配。
本申请实施例中,利用深度学习框架的框架硬件抽象机制对深度学习框架执行时所需涉及的接口进行抽象化,提高了深度学习框架适配异构加速器的简便性;并且,采用统一GPU宏去统一多硬件后端,使得转码工作量大幅度降低,便于在异构加速器上进行新功能的合入;通过对外统一接口,使得修改后的深度学习框架在DTK环境下共用CUDA源文件,在编译时由脚本转成hip文件进行编译,完成转换模块开发,减少了代码量和转换量,且只需要维护对外统一接口,大幅度降低后期不同硬件平台上kernel的维护成本。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的深度学习框架适配方法的深度学习框架适配装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个深度学习框架适配装置实施例中的具体限定可以参见上文中对于深度学习框架适配方法的限定,在此不再赘述。
在一个示例性的实施例中,如图10所示,提供了一种深度学习框架适配装置,包括:获取模块1001、第一确定模块1002、第二确定模块1003和适配模块1004,其中:
获取模块1001,用于获取目标深度学习框架中的当前运行接口信息;当前运行接口信息为异构加速器在历史开发平台上执行目标深度学习框架的接口信息;
第一确定模块1002,用于根据当前运行接口信息的功能,确定异构加速器在目标开发平台上执行目标深度学习框架所需的目标运行接口信息;
第二确定模块1003,用于根据当前运行接口信息和目标运行接口信息,确定目标深度学习框架的对外统一接口信息;
适配模块1004,用于将当前运行接口信息修改为对外统一接口信息,得到与目标开发平台适配的深度学习框架。
在一个实施例中,第一确定模块1002包括:
第一确定单元,用于若目标开发平台中存在与当前运行接口信息的功能相同的运行接口信息,则将目标开发平台中与当前运行接口信息的功能相同的运行接口信息确定为目标运行接口信息;
生成单元,用于若目标开发平台中未存在与当前运行接口信息的功能相同的运行接口信息,则根据当前运行接口信息的功能,生成目标运行接口信息。
在一个实施例中,第二确定模块1003包括:
第一获取单元,用于获取当前运行接口信息和目标运行接口信息中的接口名称对比结果,以及当前运行接口信息和目标运行接口信息中的参数信息对比结果;
第二获取单元,用于根据接口名称对比结果、参数信息对比结果和预设的宏定义方式,获取目标深度学习框架的对外统一接口信息。
在一个实施例中,第二获取单元包括:
第一生成子单元,用于若接口名称对比结果和参数信息对比结果均为相同,则通过宏定义方式将当前运行接口信息和目标运行接口信息进行统一处理,生成对外统一接口信息;
第二生成子单元,用于若接口名称对比结果和/或参数信息对比结果为不同,则将目标运行接口信息进行封装,得到封装后的目标运行接口信息,并通过宏定义方式将当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到对外统一接口信息。
在一个实施例中,适配模块1004包括:
修改单元,用于将当前运行接口信息修改为对外统一接口信息,得到修改后的深度学习框架;
测试单元,用于对修改后的深度学习框架进行单元测试;
适配单元,用于在单元测试通过的情况下,将修改后的深度学习框架确定为与目标开发平台适配的深度学习框架。
在一个实施例中,该装置1000还包括:
抽象模块,用于在将当前运行接口信息修改为对外统一接口信息的情况下,根据预设的框架硬件抽象机制,将对外统一接口信息进行抽象化处理,得到抽象层接口;抽象层接口用于目标深度学习框架与异构加速器进行交互。
上述深度学习框架适配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
本实施例中处理器实现的各步骤,其实现原理和技术效果与上述深度学习框架适配方法的原理类似,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本实施例中计算机程序被处理器执行时实现的各步骤,其实现原理和技术效果与上述深度学习框架适配方法的原理类似,在此不再赘述。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本实施例中计算机程序被处理器执行时实现的各步骤,其实现原理和技术效果与上述深度学习框架适配方法的原理类似,在此不再赘述。
需要说明的是,本申请所涉及的数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种深度学习框架适配方法,其特征在于,所述方法包括:
获取目标深度学习框架中的当前运行接口信息;所述当前运行接口信息为异构加速器在历史开发平台上执行所述目标深度学习框架的接口信息;
根据所述当前运行接口信息的功能,确定所述异构加速器在目标开发平台上执行所述目标深度学习框架所需的目标运行接口信息;
根据所述当前运行接口信息和所述目标运行接口信息,确定所述目标深度学习框架的对外统一接口信息;
将所述当前运行接口信息修改为所述对外统一接口信息,得到与所述目标开发平台适配的深度学习框架。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前运行接口信息的功能,确定所述异构加速器在目标开发平台上执行所述目标深度学习框架所需的目标运行接口信息,包括:
若所述目标开发平台中存在与所述当前运行接口信息的功能相同的运行接口信息,则将所述目标开发平台中与所述当前运行接口信息的功能相同的运行接口信息确定为所述目标运行接口信息;
若所述目标开发平台中未存在与所述当前运行接口信息的功能相同的运行接口信息,则根据所述当前运行接口信息的功能,生成所述目标运行接口信息。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述当前运行接口信息和所述目标运行接口信息,确定所述目标深度学习框架的对外统一接口信息,包括:
获取所述当前运行接口信息和所述目标运行接口信息中的接口名称对比结果,以及所述当前运行接口信息和所述目标运行接口信息中的参数信息对比结果;
根据所述接口名称对比结果、所述参数信息对比结果和预设的宏定义方式,获取所述目标深度学习框架的对外统一接口信息。
4.根据权利要求3所述的方法,其特征在于,所述根据所述接口名称对比结果、所述参数信息对比结果和预设的宏定义方式,获取所述目标深度学习框架的对外统一接口信息,包括:
若所述接口名称对比结果和所述参数信息对比结果均为相同,则通过所述宏定义方式将所述当前运行接口信息和所述目标运行接口信息进行统一处理,生成所述对外统一接口信息;
若所述接口名称对比结果和/或所述参数信息对比结果为不同,则将所述目标运行接口信息进行封装,得到封装后的目标运行接口信息,并通过所述宏定义方式将所述当前运行接口信息和封装后的目标运行接口信息进行统一处理,得到所述对外统一接口信息。
5.根据权利要求1或2所述的方法,其特征在于,所述将所述当前运行接口信息修改为所述对外统一接口信息,得到与所述目标开发平台适配的深度学习框架,包括:
将所述当前运行接口信息修改为所述对外统一接口信息,得到修改后的深度学习框架;
对所述修改后的深度学习框架进行单元测试;
在所述单元测试通过的情况下,将所述修改后的深度学习框架确定为与所述目标开发平台适配的深度学习框架。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在将所述当前运行接口信息修改为所述对外统一接口信息的情况下,根据预设的框架硬件抽象机制,将所述对外统一接口信息进行抽象化处理,得到抽象层接口;所述抽象层接口用于所述目标深度学习框架与所述异构加速器进行交互。
7.一种深度学习框架适配装置,其特征在于,所述装置包括:
获取模块,用于获取目标深度学习框架中的当前运行接口信息;所述当前运行接口信息为异构加速器在历史开发平台上执行所述目标深度学习框架的接口信息;
第一确定模块,用于根据所述当前运行接口信息的功能,确定所述异构加速器在目标开发平台上执行所述目标深度学习框架所需的目标运行接口信息;
第二确定模块,用于根据所述当前运行接口信息和所述目标运行接口信息,确定所述目标深度学习框架的对外统一接口信息;
适配模块,用于将所述当前运行接口信息修改为所述对外统一接口信息,得到与所述目标开发平台适配的深度学习框架。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311269670.9A CN117291260A (zh) | 2023-09-27 | 2023-09-27 | 深度学习框架适配方法、装置、设备、存储介质和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311269670.9A CN117291260A (zh) | 2023-09-27 | 2023-09-27 | 深度学习框架适配方法、装置、设备、存储介质和产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117291260A true CN117291260A (zh) | 2023-12-26 |
Family
ID=89238565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311269670.9A Pending CN117291260A (zh) | 2023-09-27 | 2023-09-27 | 深度学习框架适配方法、装置、设备、存储介质和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117291260A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648211A (zh) * | 2024-01-29 | 2024-03-05 | 山东云海国创云计算装备产业创新中心有限公司 | 人工智能框架的运行时统一接口、服务器及调用方法 |
-
2023
- 2023-09-27 CN CN202311269670.9A patent/CN117291260A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648211A (zh) * | 2024-01-29 | 2024-03-05 | 山东云海国创云计算装备产业创新中心有限公司 | 人工智能框架的运行时统一接口、服务器及调用方法 |
CN117648211B (zh) * | 2024-01-29 | 2024-05-24 | 山东云海国创云计算装备产业创新中心有限公司 | 人工智能框架的运行时统一接口、服务器及调用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tahboub et al. | How to architect a query compiler, revisited | |
Partee et al. | Using machine learning at scale in numerical simulations with SmartSim: An application to ocean climate modeling | |
Isard et al. | Distributed data-parallel computing using a high-level programming language | |
US7660884B2 (en) | Apparatus, system, and method for generating a resource utilization description for a parallel data processing system | |
US11500959B2 (en) | Multiple output fusion for operations performed in a multi-dimensional array of processing units | |
Wozniak et al. | Turbine: A distributed-memory dataflow engine for high performance many-task applications | |
WO2016018944A1 (en) | Systems and methods for a distributed query execution engine | |
CN117291260A (zh) | 深度学习框架适配方法、装置、设备、存储介质和产品 | |
Martínez-del-Amor et al. | Population Dynamics P systems on CUDA | |
Ganapathi | Predicting and optimizing system utilization and performance via statistical machine learning | |
Gadiyar et al. | Artificial intelligence software and hardware platforms | |
CN115525287A (zh) | 多阶段编译器架构 | |
Bosilca et al. | The Template Task Graph (TTG)-an emerging practical dataflow programming paradigm for scientific simulation at extreme scale | |
Peterka et al. | ASCR workshop on in situ data management: Enabling scientific discovery from diverse data sources | |
US11861331B1 (en) | Scaling high-level statistical languages to large, distributed datasets | |
CN114925591A (zh) | 基于多面体模型建模的自动并行策略搜索方法及相关设备 | |
CN113420520B (zh) | 集成电路装置设计仿真方法、装置、设备和可读存储介质 | |
US11449413B2 (en) | Accelerating development and deployment of enterprise applications in data driven enterprise IT systems | |
WO2023125857A1 (zh) | 基于机器学习框架系统的模型训练方法及相关设备 | |
He et al. | HOME: A holistic GPU memory management framework for deep learning | |
Diez Dolinski et al. | Distributed simulation of P systems by means of map-reduce: first steps with Hadoop and P-Lingua | |
Del Monte et al. | A scalable GPU-enabled framework for training deep neural networks | |
Buck Woody et al. | Data Science with Microsoft SQL Server 2016 | |
US11521089B2 (en) | In-database predictive pipeline incremental engine | |
Singhal et al. | A Vision on Accelerating Enterprise IT System 2.0 |
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 |