CN115237458A - 一种调用推理硬件执行ai应用的方法及相关产品 - Google Patents

一种调用推理硬件执行ai应用的方法及相关产品 Download PDF

Info

Publication number
CN115237458A
CN115237458A CN202110445022.9A CN202110445022A CN115237458A CN 115237458 A CN115237458 A CN 115237458A CN 202110445022 A CN202110445022 A CN 202110445022A CN 115237458 A CN115237458 A CN 115237458A
Authority
CN
China
Prior art keywords
inference
hardware
adaptation file
framework
driver
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
Application number
CN202110445022.9A
Other languages
English (en)
Inventor
李雨洺
尚剑
谢周意
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202110445022.9A priority Critical patent/CN115237458A/zh
Publication of CN115237458A publication Critical patent/CN115237458A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种调用推理硬件执行人工智能AI应用的方法及相关产品,其中,该方法应用于应用执行设备中的推理框架,推理框架为安装在应用执行设备、由AI应用调用的软件,该方法包括:获取应用执行设备中的推理硬件的驱动适配文件,驱动适配文件包括由推理框架提供的推理硬件的抽象API;根据驱动适配文件,加载推理硬件的API函数实现;调用推理硬件执行AI应用。利用上述方法,在应用执行设备中的推理硬件的驱动版本升级或应用执行设备中新增推理硬件后,可以无需修改或编译推理框架代码和AI应用,便可以在应用执行设备上运行该AI应用。

Description

一种调用推理硬件执行AI应用的方法及相关产品
技术领域
本申请涉及人工智能(artificial intelligence,AI)技术领域,尤其涉及一种调用推理硬件执行AI应用的方法及相关产品。
背景技术
近年来,AI技术不断地发展,尤其是深度学习技术不断地发展,使得AI应用广泛地应用于多个领域,例如,图像和语音识别、自然语言翻译、计算机博弈等。具体实现中,AI应用的运行需要依赖推理框架调用推理硬件来完成。但是,随着技术的发展,推理硬件也在不断地升级,并且有时还会推出一款新的推理硬件,在这种情况下,如果希望在升级后的推理硬件或新的推理硬件上仍然能够运行上述AI应用,则需要相应地修改AI应用和推理框架,使得AI应用和推理框架适配于升级后的推理硬件或新的推理硬件。
发明内容
本申请公开了一种调用推理硬件执行AI应用的方法及相关产品,利用该方法能够使得推理框架兼容新的推理硬件或兼容原有推理硬件的升级版本。
第一方面,本申请提供了一种调用推理硬件执行AI应用的方法,所述方法应用于应用执行设备中的推理框架,所述推理框架为安装在所述应用执行设备、由AI应用调用的软件,所述方法包括如下步骤:
获取所述应用执行设备中的推理硬件的驱动适配文件,所述驱动适配文件包括由所述推理框架提供的所述推理硬件的抽象应用程序接口(application programminginterface,API);
根据所述驱动适配文件,加载所述推理硬件的API函数实现,从而调用所述推理硬件执行所述AI应用。
在第一方面所描述方法中,驱动适配文件中包括的由推理框架提供的推理硬件的抽象API可以由推理框架提供给AI应用调用,因此,在执行AI应用时,AI应用直接调用的是由推理框架提供的推理硬件的抽象API,然后再由推理框架根据AI应用调用的上述抽象API来相应的加载推理硬件的API函数实现,从而调用推理硬件执行AI应用。那么,AI应用感知不到底层的推理硬件,也就是说,不论哪个推理硬件(包括升级后的推理硬件和新的推理硬件),通过上述方法都可以在无需修改AI应用的前提下执行该AI应用。
在第一方面的一种可能的实现方式中,在所述获取所述应用执行设备中的推理硬件的驱动适配文件之前,所述方法还包括:获取驱动适配文件安装包,其中,所述驱动适配文件安装包中包括至少一个推理硬件对应的至少一个驱动适配文件,以及所述至少一个驱动适配文件对应的安装脚本;执行所述至少一个驱动适配文件对应的安装脚本,将所述至少一个驱动适配文件安装至所述推理框架对应的目录中。
该方法中,推理框架通过执行驱动适配文件对应的安装脚本,可以将应用执行设备中的推理硬件对应的驱动适配文件安装到推理框架中,使得推理框架可以调用应用执行设备中的推理硬件。
在第一方面的一种可能的实现方式中,在所述根据所述驱动适配文件,加载所述推理硬件的API函数实现之前,所述方法还包括:执行检测脚本,获得检测结果,所述检测结果包括所述应用执行设备中的推理硬件的版本类型;所述根据所述驱动适配文件,加载所述推理硬件的API函数实现,具体包括:根据所述驱动适配文件,加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。
该方法中,推理框架通过执行检测脚本,可以获得应用执行设备中的推理硬件的驱动版本,进一步可以从所述驱动适配文件中获取推理框架需要调用推理硬件执行的API的函数实现,从而执行AI应用。
在第一方面的一种可能的实现方式中,所述检测脚本包含在所述驱动适配文件安装包中。
在第一方面的一种可能的实现方式中,所述检测结果还包括所述应用执行设备中的不同版本类型的推理硬件的优先级信息;所述加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现,具体包括:根据所述优先级信息,依次加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。如此,推理框架可以调用更适合的推理硬件来执行对应的推理硬件的API函数实现,从而可以加快AI应用的运行效率。
在第一方面的一种可能的实现方式中,所述方法还包括:当所述应用执行设备中的推理硬件的驱动升级后,获取驱动升级后的推理硬件的新驱动适配文件,将所述新驱动适配文件安装至所述推理框架对应的目录中。
在第一方面的一种可能的实现方式中,所述方法还包括:当所述应用执行设备中新增推理硬件后,获取新增推理硬件的新驱动适配文件,将所述新增推理硬件的新驱动适配文件安装至所述推理框架对应的目录中。
通过上述方法,当应用执行设备中推理硬件的驱动升级或应用执行设备中新增推理硬件后,无需修改和编译推理框架代码和AI应用,便可以在应用执行设备上运行该AI应用。
在第一方面的一种可能的实现方式中,每个驱动适配文件中的由所述推理框架提供的推理硬件的抽象API遵循统一的规范。如此,方便用户根据规范配置出所述新驱动适配文件,而且,还方便推理框架获得驱动适配文件后,可以根据驱动适配文件来调用推理硬件执行AI应用。
第二方面,本申请提供了一种应用执行设备,所述设备安装有推理框架,所述推理框架为安装在所述应用执行设备、由AI应用调用的软件,所述设备包括处理器、存储器和推理硬件,所述处理器运行所述存储器中推理框架的代码以执行:
获取所述应用执行设备中的推理硬件的驱动适配文件,所述驱动适配文件包括由所述推理框架提供的所述推理硬件的抽象API;
根据所述驱动适配文件,加载所述推理硬件的API函数实现,从而调用所述推理硬件执行所述AI应用。
在第二方面的一种可能的实现方式中,所述处理器运行所述存储器中推理框架的代码,还进一步执行:获取驱动适配文件安装包,其中,所述驱动适配文件安装包中包括至少一个推理硬件对应的至少一个驱动适配文件,以及所述至少一个驱动适配文件对应的安装脚本;执行所述至少一个驱动适配文件对应的安装脚本,将所述至少一个驱动适配文件安装至所述推理框架对应的目录中。
在第二方面的一种可能的实现方式中,所述处理器运行所述存储器中推理框架的代码,还进一步执行:执行检测脚本,获得检测结果,所述检测结果包括所述应用执行设备中的推理硬件的版本类型;加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。
在第二方面的一种可能的实现方式中,所述检测脚本包含在所述驱动适配文件安装包中。
在第二方面的一种可能的实现方式中,所述检测结果还包括所述应用执行设备中的不同版本类型的推理硬件的优先级信息;所述处理器运行所述存储器中推理框架的代码,还进一步执行:根据所述优先级信息,依次加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。
在第二方面的一种可能的实现方式中,所述处理器运行所述存储器中推理框架的代码,还进一步执行:当所述应用执行设备中的推理硬件的驱动升级后,获取驱动升级后的推理硬件的新驱动适配文件,将所述新驱动适配文件安装至所述推理框架对应的目录中。
在第二方面的一种可能的实现方式中,所述处理器运行所述存储器中推理框架的代码,还进一步执行:当所述应用执行设备中新增推理硬件后,获取新增推理硬件的新驱动适配文件,将所述新增推理硬件的新驱动适配文件安装至所述推理框架对应的目录中。
在第二方面的一种可能的实现方式中,每个驱动适配文件中的由所述推理框架提供的推理硬件的抽象API遵循统一的规范。
第三方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令被计算设备执行时,所述计算设备执行上述第一方面或第一方面的任意一种可能的实现方式中提供的方法。
第四方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备执行上述第一方面或第一方面的任意一种可能的实现方式中提供的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种调用推理硬件执行AI应用的方法的流程示意图;
图2是本申请提供的不同推理硬件对应的驱动适配文件;
图3是本申请提供的一种驱动适配文件安装包;
图4是本申请提供的一种应用场景的示意图;
图5是本申请提供的一种应用场景的示意图;
图6是本申请提供的一种应用执行设备的结构示意图。
具体实施方式
为了便于理解本申请提供的技术方案,首先对本申请涉及到的一些技术术语进行介绍。
深度学习是一类基于深层次神经网络算法的机器学习技术,其主要特征是使用多重非线性变换来对数据进行处理和分析。近年来,随着深度学习的快速发展,AI应用也广泛地应用于多个领域,例如,图像和语音识别、自然语言翻译、计算机博弈等,使得AI技术越来越贴近人们的生活。在实际应用中,AI应用可以被下载到不同的应用执行设备上(例如,智能手机、笔记本电脑、平板电脑、台式电脑等),从而使得不同的用户均可以获得AI应用的功能,享受AI技术带来的便利。
AI应用表示针对特定应用场景开发的、包括至少一个算子的应用程序,其中,AI应用中的算子是用于实现部分功能的操作集合,AI应用中的一些算子的功能可以由训练后的AI模型来实现,也就是AI应用在应用执行设备上启动的过程中,可以对训练后的AI模型进行推理,获得训练后的AI模型的输出结果,从而实现AI应用的相应功能。
AI模型是一类用机器学习思想解决实际问题的数据算法模型,例如,使用较为广泛的神经网络模型。AI模型中包括大量的参数和计算公式,AI模型中的参数是可以通过对AI模型进行训练而获得的,而且通过训练可以使得AI模型更好地实现AI应用的相应功能。例如,一个图像识别的AI应用中的一些功能(具体为图像识别的功能)可以由图像识别模型来实现,在使用图像识别模型实现图像识别功能之前,需要利用多个带有标注的训练图像样本来对图像识别模型进行训练,具体过程为:将多个训练图像样本作为图像识别模型的输入,将多个训练图像样本的标注(即需要识别出的目标)作为图像识别模型的输出值的参考,反复地调整图像识别模型中的参数,直至图像识别模型可以根据输入的训练图像样本输出与该训练图像样本对应的标注相差不大的输出值。如此,训练后的图像识别模型就可以更好地实现图像识别的功能。
当应用执行设备在对训练好的AI模型进行推理时,需要依赖应用执行设备中安装的推理框架,推理框架可用于调用应用执行设备中的推理硬件来执行AI模型的推理。此处需要说明的一点是:本申请中的推理框架既用于调用推理硬件来执行AI模型的推理,又可以用于调用推理硬件来执行AI应用中其他算子的运行(例如,对输入AI模型的数据进行处理,以及对AI模型输出的数据进行处理等),换句话说,本申请中的推理框架实际上可以是一个AI运行框架,用于调用推理硬件来运行AI应用。
值得注意的一点是,在应用执行设备中推理框架能够调用推理硬件运行AI应用的前提是,推理框架和AI应用都需要适配于推理硬件,比如说,假设应用执行设备安装的推理框架为TensorFlow框架,应用执行设备中的推理硬件为图形处理器(graphics processingunit,GPU),那么,如果想要在该应用执行设备上运行AI应用,也就是想要TensorFlow框架能够调用GPU来运行这个AI应用,就需要这个AI应用和TensorFlow框架都适配于GPU。但是,在实际应用中,应用执行设备中的推理硬件的驱动在不断地升级,并且应用执行设备中还可能使用新的推理硬件,在这种情况下,如果希望在使用驱动升级后的推理硬件或新的推理硬件的应用执行设备上仍然能够运行已开发出的AI应用,则需要相应地修改AI应用和推理框架,使得AI应用和推理框架适配于驱动升级后的推理硬件或新的推理硬件。这就会给AI应用的开发者和推理框架的开发者带来巨大的工作量。
为了解决上述问题,本申请提供了一种调用推理硬件执行AI应用的方法,使得AI应用不仅可以在使用推理硬件A的应用执行设备上运行,也可以在推理硬件A的驱动升级后,或将推理硬件A更换为新的推理硬件B后,仍能在这个应用执行设备上运行该AI应用。
如图1所示,图1示出了本申请提供的一种调用推理硬件执行AI应用的方法的流程示意图,该方法包括但不限于以下步骤:
首先,需要说明的,本申请提供的一种调用推理硬件执行AI应用的方法,应用于应用执行设备中的推理框架,该推理框架为安装在应用执行设备、由AI应用调用的软件。该推理框架既用于调用应用执行设备中的推理硬件来执行AI应用中的AI模型的推理,又用于调用应用执行设备中的推理硬件来执行AI应用中其他算子的运行(例如,对输入AI模型的数据进行处理,以及对AI模型输出的数据进行处理等),换句话说,本申请中的推理框架实际上是一个运行框架,用于调用应用执行设备中的推理硬件来运行AI应用。
S101:推理框架获取驱动适配文件安装包。
其中,驱动适配文件安装包包括至少一个推理硬件对应的至少一个驱动适配文件,以及至少一个驱动适配文件对应的安装脚本。此处需要说明的是,一个推理硬件可能对应一个或多个驱动,因此,一个推理硬件对应至少一个驱动适配文件。
在一具体的实施例中,每个驱动适配文件包括该驱动适配文件对应的由推理框架提供的推理硬件的抽象API,以及推理硬件的API函数实现。其中,每个驱动适配文件中包括的由推理框架提供的推理硬件的抽象API和推理硬件的API函数实现的数量可以是一个,也可以是多个,本申请对此不作具体限定。为了简便,下面以一个由推理框架提供的推理硬件的抽象API和一个推理硬件的API函数实现对本申请进行说明。由推理框架提供的推理硬件的抽象API可以理解为将推理硬件的API函数实现抽象为一个统一的API,然后由推理框架提供给AI应用进行调用。推理硬件的API函数实现可以理解为推理硬件执行AI应用时的一些具体操作,也就是说,推理硬件执行AI应用时具体是通过运行推理硬件的API函数实现来完成的。由推理框架提供的推理硬件的抽象API是使得上层AI应用感知不到底层推理硬件差异的关键,换句话说,AI应用直接调用的是由推理框架提供的推理硬件的抽象API,但底层是由推理框架加载推理硬件的API函数实现来完成的。
在一具体的实施例中,每个驱动适配文件中的由推理框架提供的推理硬件的抽象API遵循统一的规范。具体地,每个驱动适配文件中的由推理框架提供的推理硬件的抽象API可以由推理框架的开发者在规范下,根据需要适配的推理硬件及AI应用进行相应的配置。例如,当AI应用用于进行视频处理时,由推理框架提供的推理硬件的抽象API可以包括但不限于以下一个或多个API:视频编解码API、图像缩放API、图像颜色空间变换API、图像裁剪API、显示API、本地摄像头API以及USB摄像头API。其中,本地摄像头API是通过将推理硬件执行打开应用执行设备上的本地摄像头的操作进行抽象而得到的API,USB摄像头API是通过将推理硬件执行打开UVC摄像头(符合USB视频类(USB video class)规范的摄像头设备的操作进行抽象而得到的API。需要说明的,当推理框架需要适配多个推理硬件时,由推理框架提供的推理硬件的抽象API可能对应多个推理硬件。下面通过一个例子进行进一步说明:假设AI应用用于进行视频处理,当前该AI应用需要在应用执行设备1和应用执行设备2上运行,应用执行设备1包括推理硬件1,应用执行设备2包括推理硬件2。其中,推理硬件1支持打开应用执行设备1上的本地摄像头,但不支持打开应用执行设备1上的USB摄像头,而推理硬件2不支持打开应用执行设备2上的本地摄像头,但支持打开应用执行设备2上的USB摄像头。因此,可以得到如图2所示的2个驱动适配文件,即推理硬件1对应的驱动适配文件和推理硬件2对应的驱动适配文件,其中,这2个驱动适配文件中由推理框架提供的推理硬件的抽象API中均包括本地摄像头抽象API和USB摄像头抽象API;推理硬件1对应的驱动适配文件中的推理硬件1的API的函数实现包括本地摄像头API的函数实现,但不包括USB摄像头API的函数实现;推理硬件2对应的驱动适配文件中的推理硬件2的API的函数实现包括USB摄像头API的函数实现,但不包括本地摄像头API的函数实现。
在一具体的实施例中,推理硬件的API函数实现可以包括推理硬件支持的全部API的函数实现,也可以仅包括推理硬件支持的部分API的函数实现,此处对此并不作具体限定。
可选的,驱动适配文件安装包还可以包括以下一个或多个:所述至少一个驱动适配文件对应的检测脚本、所述至少一个推理硬件对应的驱动版本号、所述至少一个驱动适配文件对应的驱动依赖、所述至少一个推理硬件对应的API名称列表。其中,所述至少一个驱动适配文件对应的检测脚本的相关叙述请参见步骤S104,每个推理硬件对应的驱动版本号用于指示该推理硬件对应的驱动,每个驱动适配文件对应的驱动依赖可以包括依赖库、配置文件、依赖的可执行文件,这些都是推理框架加载推理硬件的API函数实现所必须的。每个推理硬件对应的API名称列表用于指示该推理硬件支持的API,对于AI应用的开发者来说,AI应用的开发者可以根据API名称列表获知应用执行设备中的推理硬件支持的API,从而来编写相应的逻辑代码,来达到推理硬件可以执行AI应用的目的。
以图3为例,图3示出的驱动适配文件安装包中包括推理硬件1和推理硬件2对应的驱动适配文件。推理硬件1对应2个驱动版本(在驱动适配文件中体现为驱动版本号1和驱动版本号2),那么推理硬件1对应的驱动适配文件包括驱动适配文件1和驱动适配文件2,驱动适配文件1对应驱动版本号1,驱动适配文件2对应驱动版本号2。推理硬件2对应1个驱动版本(在驱动适配文件中体现为驱动版本号3),那么推理硬件2对应的驱动适配文件为驱动适配文件3,驱动适配文件3对应驱动版本号3。驱动适配文件安装包还包括驱动适配文件1对应的安装脚本(即安装脚本1)、驱动适配文件1对应的检测脚本(即检测脚本1)、驱动适配文件1对应的驱动依赖(即驱动依赖1)、推理硬件1对应的API名称列表。驱动适配文件安装包还包括驱动适配文件2对应的安装脚本(即安装脚本2)、驱动适配文件2对应的检测脚本(即检测脚本2)、驱动适配文件2对应的驱动依赖(即驱动依赖2)。驱动适配文件按照包还包括驱动适配文件3对应的安装脚本(即安装脚本3)、驱动适配文件3对应的检测脚本(即检测脚本3)、驱动适配文件3对应的驱动依赖(即驱动依赖3)、推理硬件2对应的API名称列表。
推理框架获取驱动适配文件安装包的方式多种多样,下面列举了几种可能的实现方式:
方式一:在应用执行设备上未安装推理框架的情况下,应用执行设备可以先获取推理框架安装包(例如,从云平台或其他设备上下载推理框架安装包),其中,推理框架安装包包括驱动适配文件安装包。然后,应用执行设备根据推理框架安装包,将推理框架安装至应用执行设备上。在完成推理框架的安装后,推理框架便可以获取驱动适配文件安装包。
方式二:在应用执行设备上已安装有推理框架的情况下,应用执行设备可以直接获取驱动适配文件安装包(例如,可以从云平台或其他设备上下载驱动适配文件安装包),然后将驱动适配文件安装包加载至推理框架,那么,推理框架就可以获取驱动适配文件安装包。或者,用户也可以直接在应用执行设备上配置好驱动适配文件安装包,然后由应用执行设备加载至推理框架,使得推理框架可以获取驱动适配文件安装包。
应理解,上述两种方式仅仅作为举例,在实际应用中,推理框架还可以通过其他的方式获取驱动适配文件安装包,本申请不作具体限定。
S102:推理框架获取应用执行设备中的推理硬件的驱动适配文件。
具体地,推理框架获取驱动适配文件安装包后,扫描驱动适配文件安装包,并执行驱动适配文件安装包中的至少一个驱动适配文件对应的安装脚本,然后将所述至少一个驱动适配文件安装至推理框架对应的目录中,其中,所述至少一个驱动适配文件包括应用执行设备中的推理硬件的驱动适配文件,那么,推理框架便可以获取应用执行设备中的推理硬件的驱动适配文件。
应理解,所述至少一个驱动适配文件还包括非应用执行设备中的推理硬件的驱动适配文件,因此,如果将这些非应用执行设备中的推理硬件的驱动适配文件也安装至推理框架对应的目录中,会导致资源的浪费。为此,推理框架可以在执行驱动适配文件安装包中的至少一个驱动适配文件对应的安装脚本时,就判断当前的驱动适配文件是否与应用执行设备中的推理硬件的驱动匹配,如果匹配,则将该驱动适配文件安装至推理框架对应的目录中,如果不匹配,则不安装或者删除该驱动适配文件。在另一种可能的实现方式中,推理框架还可以在将所述至少一个驱动适配文件安装至推理框架对应的目录中之后,判断所述目录中的每个驱动适配文件是否与应用执行设备中的推理硬件的驱动匹配,如果匹配,则保留该驱动适配文件,如果不匹配,则从所述目录中删除该驱动适配文件。
S103:AI应用启动。
在一种可能的实现方式中,应用执行设备上提供了图形用户界面(graphicaluser interface,GUI)供用户进行操作,GUI上显示了AI应用的图标,当用户点击GUI上的AI应用的图标时,AI应用开始启动。
S104:推理框架初始化。
在一具体的实施例中,推理框架初始化包括以下过程:推理框架执行安装在推理框架对应目录中的驱动适配文件的检测脚本,获得检测结果(例如,result文件)。其中,检测结果包括应用执行设备中的推理硬件的版本类型(具体是指驱动版本类型)。
在一具体的实施例中,检测结果包括的应用执行设备中的推理硬件的驱动版本类型具体可以是动态库的名称,动态库是指推理硬件的API函数实现的一个集合。一般地,动态库在命名时会遵循命名规则,因此动态库名称中包括推理硬件的驱动版本类型。
在一具体的实施例中,推理框架在获得上述检测结果后,还会保存检测结果。当推理硬件第二次启动AI应用时,推理框架可以无需再执行上述检测脚本便可以获得上述检测结果。如此,可以减少推理框架调用检测脚本产生检测结果的过程。
可选的,步骤S103和S104执行顺序可以互换,也可以同时执行,本申请不做具体限定。
S105:推理框架根据驱动适配文件,加载推理硬件的API函数实现,从而调用推理硬件执行AI应用。
在一具体的实施例中,推理框架根据驱动适配文件,加载推理硬件的API函数实现,从而调用推理硬件执行AI应用,包括:推理框架根据驱动适配文件和检测结果,加载与所述版本类型(即应用执行设备的推理硬件的驱动版本类型)对应的驱动适配文件中的推理硬件的API函数实现,从而调用推理硬件执行AI应用。
在一些实施例中,应用执行设备中可能包括多个推理硬件,例如,可以包括CPU和至少一个加速硬件,加速硬件是指区别于CPU的推理硬件,用于专门实现某一个功能,以减轻CPU的工作量。例如,加速硬件可以是专门用于进行图像和图形相关运算工作的图形处理器(graphics processing unit,GPU),也可以是专门用于处理视频和图像类的海量多媒体数据的神经网络处理器(neural-network processing units,NPU)等。因此,检测结果还可以包括应用执行设备中的不同版本类型的推理硬件的优先级信息,上述优先级信息是指执行API的函数实现的推理硬件的优先级,可选的,上述优先级信息可以是推理框架的开发者根据不同版本类型的推理硬件的性能和功耗来定义的。那么,推理框架可以根据上述优先级信息,依次加载与所述版本类型对应的驱动适配文件中的推理硬件的API函数实现,也就是推理框架会调用应用执行设备中的优先级高的推理硬件来执行对应的API的函数实现。例如,一个图像裁剪API的函数实现,优先级信息中定义了GPU的优先级大于CPU的优先级,那么,推理框架会优先调用GPU来执行图像裁剪API的函数实现,如果应用执行设备中不包括GPU,则调用CPU来执行图像裁剪API的函数实现。
在另一些实施例中,应用执行设备中的推理硬件中可能包括多个推理后端,即CPU和至少一个加速硬件,在这种情况下,检测结果还可以包括该推理硬件中不同版本类型的推理后端的优先级信息,那么,推理框架根据上述优先级信息,调用推理硬件中的优先级高的推理后端来执行对应的API的函数实现。
值得注意的一点是,当AI应用中指定了使用应用执行设备中的某个推理硬件来执行某个API的函数实现时,推理框架可以忽略检测结果中的优先级信息,直接调用指定的推理硬件来执行该API的函数实现。
可选的,检测结果还可以包括至少一个推理硬件的名称。
通过上述方法,当应用执行设备中的推理硬件的驱动升级后,推理框架只需获取驱动升级后的推理硬件的新驱动适配文件,并将新驱动适配文件安装至推理框架对应的目录中,然后执行上述步骤S103-S105,便可以由驱动升级后的推理硬件执行上述AI应用。
具体过程可以参见图4,图4中的应用执行设备中的推理硬件的驱动由1.0升级为2.0,在这种情况下,应用执行设备可以从云平台下载新的推理框架安装包,新的推理框架安装包包括新的驱动适配文件安装包,新的驱动适配文件安装包包括驱动升级后的推理硬件对应的驱动适配文件(即驱动适配文件2.0)和驱动适配文件2.0对应的安装脚本、检测脚本等。然后,应用执行设备根据新的推理框架安装包更新本设备中的推理框架,推理框架更新后,可以获取驱动适配文件2.0,然后执行驱动适配文件2.0对应的安装脚本,将驱动适配文件2.0安装至推理框架对应的目录中。在AI应用启动后,推理框架会执行驱动适配文件2.0对应的检测脚本,获得对应的检测结果,之后,推理框架会根据检测结果和驱动适配文件2.0,加载驱动升级后的推理硬件的API函数实现,从而调用驱动升级后的推理硬件执行AI应用。
类似的,当应用执行设备中新增推理硬件后,推理框架只需获取新增推理硬件的新驱动适配文件,并将新增推理硬件的新驱动适配文件安装至推理框架对应的目录中,然后执行上述步骤S103-S105,便可以由新增推理硬件执行上述AI应用。
具体过程可以参见图5,图5中的应用执行设备中新增了一个推理硬件N,在这种情况下,AI应用的开发者可以根据推理硬件N配置对应的驱动适配文件(即驱动适配文件M),以及驱动适配文件M对应的安装脚本、检测脚本等,然后,将驱动适配文件M直接加载到推理框架对应的目录下。在AI应用启动后,推理框架执行驱动适配文件M的检测脚本,获得对应的检测结果,之后,根据检测结果和驱动适配文件M,加载推理硬件N的API的函数实现,从而调用推理硬件M执行AI应用。
应理解,图4和图5仅仅作为一种举例,在实际应用中,具体的实现过程可以参照图1及其相关叙述进行调整,本申请不作具体限定。
在一种可能的实现方式中,驱动升级后的推理硬件的新驱动适配文件或新增推理硬件的新驱动适配文件可以是由推理框架的开发者在统一的规范的基础上根据驱动升级后的推理硬件和新增推理硬件的相关信息配置得到的,并在配置完成后,安装至推理框架安装包,得到新的推理框架安装包。那么,当应用执行设备中的推理硬件的驱动升级,或者应用执行设备中新增推理硬件后,应用执行设备可以获取新的推理框架安装包,从而使得推理框架可以获取新驱动适配文件。
在另一种可能的实现方式中,驱动升级后的推理硬件的新驱动适配文件或新增推理硬件的新驱动适配文件还可以是由AI应用的开发者在统一的规范的基础上根据驱动升级后的推理硬件和新增推理硬件的相关信息配置得到的,并在配置完成后,直接安装至应用执行设备中的推理框架对应的目录中,从而使得推理框架可以获取新驱动适配文件。
应理解,上述驱动升级后的推理硬件的新驱动适配文件与新增推理硬件的新驱动适配文件与步骤S101中介绍的驱动适配文件是类似的,为了简便,此处不再进行叙述。
因此,利用本申请提供的调用推理硬件执行AI应用的方法,在应用执行设备中的推理硬件的驱动升级后,或应用执行设备中新增推理硬件后,只需配置新驱动适配文件,无需修改AI应用,便可以使得在应用执行设备上继续运行AI应用,从而减少了AI应用的开发者和推理框架的开发者的工作量。从另一个角度说,本申请利用驱动适配文件中的安装脚本、检测脚本以及由推理框架提供的推理硬件的抽象API,使得推理硬件的驱动版本和硬件版本与AI应用和推理框架解耦,从而可以在不修改或编译推理框架和AI应用的前提下,平滑地升级推理硬件或使用新的推理硬件。
前述内容详细介绍了本申请提供的调用推理硬件执行AI应用的方法,下面将介绍执行上述方法的设备。
图6示出了本申请提供的一种应用执行设备的结构示意图,该应用执行设备上安装有推理框架,推理框架为安装在应用执行设备、由AI应用调用的软件。如图6所示,应用执行设备上包括存储器110、处理器120、推理硬件130、通信接口140以及总线150,其中,存储器110、处理器120、推理硬件130、通信接口140通过总线150实现彼此之间的通信连接。
存储器110可以是只读存储器(Read Only Memory,ROM),静态存储设备、动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器110可以存储程序,例如,推理框架的代码。存储器110还可以存储处理器120在执行时产生的程序数据,例如,推理框架安装包、驱动适配文件安装包、检测结果等。
处理器120可以采用通用的CPU,GPU,微处理器,专用集成电路(applicationspecific integrated circuit,ASIC)或者一个或多个集成电路。处理器还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,应用执行设备的部分或全部功能都可以通过处理器120中的硬件的集成逻辑电路或者软件形式的指令完成。处理器120还可以是通用处理器、数据信号处理器(digital signal process,DSP)、现场可编程逻辑门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件,分立门或者晶体管逻辑器件,分立硬件组件。可以实现或者执行本申请实施例中公开的方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,结合前述内容所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器110,处理器120读取存储器110中的信息,结合其硬件完成应用执行设备运行AI应用的功能。在一具体的实施例中,处理器120可以包括一个或多个CPU,如图3所示的CPU0和CPU1。
在本申请实施例中,推理硬件130表示被推理框架调用的用于执行AI应用的硬件,推理硬件130可以是CPU、GPU、NPU、或者各种厂商开发的人工智能芯片。应理解,图6所示的处理器120实际也是一种推理硬件,由于处理器120不仅用于被推理框架调用以执行AI应用,还可以运行推理框架的代码,因此在图6中与其他推理硬件独立地表示出来。
通信接口140使用例如但不限于收发器一类的收发模块,来实现应用执行设备100与其他设备或通信网络之间的通信。例如,可以通过通信接口140获取推理框架安装包以及AI应用。
总线150可包括在应用执行设备100各个部件(例如,存储器110、处理器120、推理硬件130、通信接口140)之间传送信息的通路。
在一具体的实施例中,处理器120运行存储器110中推理框架对应的代码,具体执行以下步骤:获取应用执行设备100中的推理硬件130的驱动适配文件,该驱动适配文件包括推理硬件130的API的定义信息;根据该驱动适配文件,加载推理硬件130的API的函数实现,从而调用推理硬件130执行AI应用。
在一具体的实施例中,处理器120运行存储器110中推理框架对应的代码,还进一步执行以下步骤:获取驱动适配文件安装包,驱动适配文件安装包中包括至少一个推理硬件对应的至少一个驱动适配文件,以及所述至少一个驱动适配文件对应的安装脚本;执行所述至少一个驱动适配文件对应的安装脚本,将所述至少一个驱动适配文件安装至推理框架对应的目录中。
在一具体的实施例中,处理器120运行存储器110中推理框架对应的代码,还进一步执行以下步骤:执行检测脚本,获得检测结果,检测结果包括应用执行设备100中的推理硬件130的版本类型;加载与所述版本类型对应的驱动适配文件中的推理硬件130的API的函数实现。
在一具体的实施例中,检测脚本包含在驱动适配文件安装包中。
在一具体的实施例中,检测结果还包括应用执行设备中的不同版本类型的推理硬件的优先级信息;处理器120运行存储器110中推理框架对应的代码,还进一步执行以下步骤:根据所述优先级信息,依次加载与所述版本类型对应的驱动适配文件中的推理硬件130的API的函数实现。
在一具体的实施例中,处理器120运行存储器110中推理框架对应的代码,还进一步执行以下步骤:当应用执行设备100中的推理硬件130的驱动升级后,获取驱动升级后的推理硬件的新驱动适配文件,将新驱动适配文件安装至推理框架对应的目录中。
在一具体的实施例中,处理器120运行存储器110中推理框架对应的代码,还进一步执行以下步骤:当应用执行设备100中新增推理硬件后,获取新增推理硬件的新驱动适配文件,将新增推理硬件的新驱动适配文件安装至推理框架对应的目录中。
在一具体的实施例中,每个驱动适配文件中的由推理框架提供的推理硬件的抽象API遵循统一的规范。
在一具体的实施例中,处理器120除了执行上述步骤外,还可以作为应用执行设备100中的推理硬件,以供推理框架调用来完成AI应用的一些功能。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在计算设备(如图3所示的应用执行设备)上加载和执行上述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。上述计算设备可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(如,同轴电缆、光纤、数字用户线)或无线(如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(如,软盘、存储盘、磁带)、光介质(如,DVD)、或者半导体介质(如,SSD)等。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (18)

1.一种调用推理硬件执行人工智能AI应用的方法,其特征在于,所述方法应用于应用执行设备中的推理框架,所述推理框架为安装在所述应用执行设备、由AI应用调用的软件,所述方法包括:
获取所述应用执行设备中的推理硬件的驱动适配文件,所述驱动适配文件包括由所述推理框架提供的所述推理硬件的抽象应用程序接口API;
根据所述驱动适配文件,加载所述推理硬件的API函数实现,从而调用所述推理硬件执行所述AI应用。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述应用执行设备中的推理硬件的驱动适配文件之前,所述方法还包括:
获取驱动适配文件安装包,其中,所述驱动适配文件安装包中包括至少一个推理硬件对应的至少一个驱动适配文件,以及所述至少一个驱动适配文件对应的安装脚本;
执行所述至少一个驱动适配文件对应的安装脚本,将所述至少一个驱动适配文件安装至所述推理框架对应的目录中。
3.根据权利要求1或2所述的方法,其特征在于,在所述根据所述驱动适配文件,加载所述推理硬件的API函数实现之前,所述方法还包括:
执行检测脚本,获得检测结果,所述检测结果包括所述应用执行设备中的推理硬件的版本类型;
所述根据所述驱动适配文件,加载所述推理硬件的API函数实现,具体包括:
根据所述驱动适配文件,加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。
4.根据权利要求3所述的方法,其特征在于,所述检测脚本包含在所述驱动适配文件安装包中。
5.根据权利要求4所述的方法,其特征在于,所述检测结果还包括所述应用执行设备中的不同版本类型的推理硬件的优先级信息;
所述加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现,具体包括:
根据所述优先级信息,依次加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:当所述应用执行设备中的推理硬件的驱动升级后,获取驱动升级后的推理硬件的新驱动适配文件,将所述新驱动适配文件安装至所述推理框架对应的目录中。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:当所述应用执行设备中新增推理硬件后,获取新增推理硬件的新驱动适配文件,将所述新增推理硬件的新驱动适配文件安装至所述推理框架对应的目录中。
8.根据权利要求1-7任一项所述的方法,其特征在于,每个驱动适配文件中由所述推理框架提供的推理硬件的抽象API遵循统一的规范。
9.一种应用执行设备,所述设备安装有推理框架,所述推理框架为安装在所述应用执行设备、由AI应用调用的软件,所述设备包括处理器、存储器和推理硬件,所述处理器运行所述存储器中推理框架的代码以执行:
获取所述应用执行设备中的推理硬件的驱动适配文件,所述驱动适配文件包括由所述推理框架提供的所述推理硬件的抽象API;
根据所述驱动适配文件,加载所述推理硬件的API函数实现,从而调用所述推理硬件执行所述AI应用。
10.根据权利要求9所述的设备,其特征在于,所述处理器运行所述存储器中推理框架的代码,还进一步执行:
获取驱动适配文件安装包,其中,所述驱动适配文件安装包中包括至少一个推理硬件对应的至少一个驱动适配文件,以及所述至少一个驱动适配文件对应的安装脚本;
执行所述至少一个驱动适配文件对应的安装脚本,将所述至少一个驱动适配文件安装至所述推理框架对应的目录中。
11.根据权利要求9或10所述的设备,其特征在于,所述处理器运行所述存储器中推理框架的代码,还进一步执行:
执行检测脚本,获得检测结果,所述检测结果包括所述应用执行设备中的推理硬件的版本类型;
加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。
12.根据权利要求11所述的设备,其特征在于,所述检测脚本包含在所述驱动适配文件安装包中。
13.根据权利要求12所述的设备,其特征在于,所述检测结果还包括所述应用执行设备中的不同版本类型的推理硬件的优先级信息;
所述处理器运行所述存储器中推理框架的代码,还进一步执行:
根据所述优先级信息,依次加载与所述版本类型对应的驱动适配文件中的所述推理硬件的API函数实现。
14.根据权利要求9-13任一项所述的设备,其特征在于,所述处理器运行所述存储器中推理框架的代码,还进一步执行:
当所述应用执行设备中的推理硬件的驱动升级后,获取驱动升级后的推理硬件的新驱动适配文件,将所述新驱动适配文件安装至所述推理框架对应的目录中。
15.根据权利要求9-14任一项所述的设备,其特征在于,所述处理器运行所述存储器中推理框架的代码,还进一步执行:
当所述应用执行设备中新增推理硬件后,获取新增推理硬件的新驱动适配文件,将所述新增推理硬件的新驱动适配文件安装至所述推理框架对应的目录中。
16.根据权利要求9-15任一项所述的设备,其特征在于,每个驱动适配文件中的由所述推理框架提供的推理硬件的抽象API遵循统一的规范。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令被计算设备执行时,所述计算设备执行上述权利要求1至8中任一项所述的方法。
18.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备执行上述权利要求1至8任一项所述的方法。
CN202110445022.9A 2021-04-24 2021-04-24 一种调用推理硬件执行ai应用的方法及相关产品 Pending CN115237458A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110445022.9A CN115237458A (zh) 2021-04-24 2021-04-24 一种调用推理硬件执行ai应用的方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110445022.9A CN115237458A (zh) 2021-04-24 2021-04-24 一种调用推理硬件执行ai应用的方法及相关产品

Publications (1)

Publication Number Publication Date
CN115237458A true CN115237458A (zh) 2022-10-25

Family

ID=83666493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110445022.9A Pending CN115237458A (zh) 2021-04-24 2021-04-24 一种调用推理硬件执行ai应用的方法及相关产品

Country Status (1)

Country Link
CN (1) CN115237458A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117632313A (zh) * 2024-01-25 2024-03-01 深圳市物联微电子有限公司 一种基于人工智能的软件驱动处理方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117632313A (zh) * 2024-01-25 2024-03-01 深圳市物联微电子有限公司 一种基于人工智能的软件驱动处理方法及系统
CN117632313B (zh) * 2024-01-25 2024-03-26 深圳市物联微电子有限公司 一种基于人工智能的软件驱动处理方法及系统

Similar Documents

Publication Publication Date Title
CN109062617B (zh) 一种支持多类型设备的平台的应用方法、移动终端
US10019298B2 (en) Middleware interface and middleware interface generator
CN113312037B (zh) 应用于微服务的数据处理方法、装置、设备和存储介质
EP1445693A2 (en) System and method for building and configuring cross-platform applications
US20190108038A1 (en) Method and system for starting up application
WO2022083316A1 (zh) 一种应用运行的方法、装置及计算机存储介质
US20170052764A1 (en) Pluggable components for runtime-image generation
US20170075686A1 (en) Method for updating library, and terminal and system therefor
US9361710B2 (en) Defining a midlet region space
CN112817657A (zh) 一种应用程序启动项加载方法、装置、系统及存储介质
CN112882694A (zh) 一种程序编译方法、装置、电子设备及可读存储介质
CN115291946A (zh) 鸿蒙系统移植方法、装置、电子设备及可读介质
CN110221840B (zh) 应用程序的功能实现方法及装置、设备及存储介质
WO2022042252A1 (zh) 驱动配置管理方法、装置、介质、设备及系统
CN115237458A (zh) 一种调用推理硬件执行ai应用的方法及相关产品
EP1445694A2 (en) Modularization for J2ME platform implementation
AU2014200140B2 (en) User initiated data rollback using operating system partitions
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
CN114911541B (zh) 配置信息的处理方法、装置、电子设备及存储介质
WO2022078280A1 (zh) 一种人工智能ai训练的方法、系统及设备
CN111382076B (zh) 应用程序的测试方法、装置、电子设备及计算机存储介质
CN111796865B (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN111142972B (zh) 用于扩展应用程序的功能的方法、装置、系统及介质
CN113778451A (zh) 文件加载方法、装置、计算机系统和计算机可读存储介质
CN114253615B (zh) 一种引导程序设置方法、装置、电子设备及存储介质

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