System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及计算机,尤其涉及一种让模型运行于目标设备的方法、装置、设备及存储介质。
技术介绍
1、深度学习作为目前迭代迅速的人工智能技术方向,对算力的需求与日俱增。cuda(compute unified device architecture统一计算设备架构)设备(也即采用cuda的计算设备)凭借其物理算力和开发生态上的一系列先发优势,在深度学习领域已成为主流;因此目前的深度学习框架(比如pytorch)在python层有很多针对cuda设备所特化的代码(比如,创建tensor时的设备名称需要为‘cuda’)。
2、由于目前的深度学习框架在设计之初,没有考虑多种计算设备共存的情况,其python层使用的api(application programming interface,应用程序编程接口)与cuda设备的特性直接绑定,并且这些api已经被大量的三方库(如mmcv、transformers、torchvison、lightllm等)使用。虽然目前的深度学习框架在逐渐完善对多设备的支持,但由于历史原因,老的api无法直接支持多设备也无法扩展,因此目前的深度学习框架形成了新老api共存的情况。老的api仅支持cuda设备,新的api提供了一定程度的多设备接入能力,但是却没有提供统一的python层的接口。这样的设计为新晋厂商所设计的新计算设备接入主流深度学习框架带来了巨大困难。
3、对于新晋厂商所设计的新计算设备,即使能完整的把自己的算子库适配到目前的深度学习框架中,在框架的python层所使用的api侧
技术实现思路
1、本公开提出了一种让模型运行于目标设备的技术方案。
2、根据本公开的一方面,提供了一种让模型运行于目标设备的方法,所述模型是基于预设深度学习框架所构建的模型,所述预设深度学习框架是基于cuda设备所设计的深度学习框架,所述目标设备与所述cuda设备的计算架构不同,所述目标设备上部署有所述预设深度学习框架,所述方法包括:在所述目标设备上部署虚拟加速器,所述虚拟加速器中设有多种虚拟设备接口以及各种虚拟设备接口与各种cuda接口之间的映射关系,所述cuda接口为所述预设深度学习框架提供的与cuda设备相关的应用程序编程接口;在所述目标设备运行所述模型的过程中,利用所述虚拟加速器拦截所述模型所调用的cuda接口,并基于所述映射关系,将拦截到的cuda接口替换为对应的虚拟设备接口,并调用被替换为的虚拟设备接口,以实现在所述目标设备上运行所述模型。
3、在一种可能的实现方式中,所述将拦截到的cuda接口替换为对应的虚拟设备接口包括以下至少一种:将cuda接口替换为功能相同的虚拟设备接口;将cuda接口中的与设备相关的类替换为虚拟设备接口定义的功能相同的类;将cuda接口的类中与设备相关的成员代理为虚拟设备接口定义的所述虚拟加速器支持的成员。
4、在一种可能的实现方式中,所述预设深度学习框架包括pytorch,所述cuda接口包括pytorch的python层所使用的cuda接口,所述虚拟设备接口是采用以下至少一种方式生成的:针对所述python层中与设备相关的cuda接口,自定义与cuda接口的功能相同的虚拟设备接口,或者,自定义虚拟设备接口的功能为将cuda接口的与设备相关的类替换为自定义的功能相同的类;针对所述python层中与设备无关的接口,复用与设备无关的接口或者自定义虚拟设备接口的功能为替换与设备无关的接口对应的类;针对所述python层的cuda接口中无法被替换的类,自定义虚拟设备接口的功能为将cuda接口的类中与设备相关的成员代理为所述虚拟加速器支持的成员。
5、在一种可能的实现方式中,所述预设深度学习框架提供有设备注册功能和设备接入接口,所述设备接入接口为支持多设备接入的接口,所述方法还包括:基于所述设备注册功能将所述虚拟加速器的设备标识注册到所述预设深度学习框架中,以使所述预设深度学习框架中的设备接入接口支持所述虚拟加速器的接入。
6、在一种可能的实现方式中,所述方法使用通用设备的设备标识作为所述虚拟加速器的设备标识,所述预设深度学习框架对所述通用设备的兼容程度高于对所述目标设备的兼容程度。
7、在一种可能的实现方式中,所述虚拟加速器中提供有启动接口替换功能的选项,其中,所述利用所述虚拟加速器拦截所述模型当前调用的cuda接口,并基于所述映射关系,将拦截到的cuda接口替换为对应的虚拟设备接口,并调用被替换为的虚拟设备接口包括:在所述虚拟加速器的接口替换功能的选项已选中的情况下,利用所述虚拟加速器拦截所述模型当前调用的cuda接口,并基于所述映射关系,将拦截到的cuda接口替换为对应的虚拟设备接口,并调用被替换为的虚拟设备接口。
8、在一种可能的实现方式中,所述方法还包括:在所述目标设备完成运行所述模型的情况下,得到所述模型在所述目标设备上的运行结果;基于所述运行结果,评估所述目标设备的性能。
9、根据本公开的一方面,提供了一种让模型运行于目标设备的装置,其特征在于,所述模型是基于预设深度学习框架所构建的模型,所述预设深度学习框架是基于统一计算设备架构cuda设备所设计的深度学习框架,所述目标设备与所述cuda设备的计算架构不同,所述目标设备上部署有所述预设深度学习框架,所述装置包括:部署模块,用于在所述目标设备上部署虚拟加速器,所述虚拟加速器中设有多种虚拟设备接口以及各种虚拟设备接口与各种cuda接口之间的映射关系,所述cuda接口为所述预设深度学习框架提供的与cuda设备相关的应用程序编程接口;运行模块,用于在所述目标设备运行基于所述模型的过程中,利用所述虚拟加速器拦截所述模型所调用的cuda接口,并基于所述映射关系,将拦截到的cuda接口替换为对应的虚拟设备接口,并调用被替换为的虚拟设备接口,以实现在所述目标设备上运行所述模型。
10、在一种可能的实现方式中,所述将拦截到的cuda接口替换为对应的虚拟设备接口包括以下至少一种:将cuda接口替换为功能相同的虚拟设备接口;将cuda接口中的与设备相关的类替换为虚拟设备接口定义的功能相同的类;将cuda接口的类中与设备相关的成员代理为虚拟设备接口定义的所述虚拟加速器支持的成员。
11、在一种可能的实现方式中,所述预设深度学习框架包括pytorch,所述cuda接口包括pytorch的python层所使用的cuda接口,所述虚拟设备接口是采用以下至少一种方式生成的:针对所述python层中与设备相关的cuda接口,自定义与cuda接口的功能相同的虚拟设备接口,或者,自定义虚拟设备接口的功能为将cuda接口的与设备相关的类替换为自定义的功能相同的类;针对所述python层中与设备无关的接口,复用与设备无关的接口或者自定本文档来自技高网...
【技术保护点】
1.一种模型运行于目标设备的方法,其特征在于,所述模型是基于预设深度学习框架所构建的模型,所述预设深度学习框架是基于CUDA设备所设计的深度学习框架,所述目标设备与所述CUDA设备的计算架构不同,所述目标设备上部署有所述预设深度学习框架,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述将拦截到的CUDA接口替换为对应的虚拟设备接口包括以下至少一种:
3.根据权利要求1或2所述的方法,其特征在于,所述预设深度学习框架包括PyTorch,所述CUDA接口包括PyTorch的python层所使用的CUDA接口,所述虚拟设备接口是采用以下至少一种方式生成的:
4.根据权利要求1至3任一项所述的方法,其特征在于,所述预设深度学习框架提供有设备注册功能和设备接入接口,所述设备接入接口为支持多设备接入的接口,所述方法还包括:
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法使用通用设备的设备标识作为所述虚拟加速器的设备标识,所述预设深度学习框架对所述通用设备的兼容程度高于对所述目标设备的兼容程度。
6.根据权
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
8.一种让模型运行于目标设备的装置,其特征在于,所述模型是基于预设深度学习框架所构建的模型,所述预设深度学习框架是基于CUDA设备所设计的深度学习框架,所述目标设备与所述CUDA设备的计算架构不同,所述目标设备上部署有所述预设深度学习框架,所述装置包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至7中任意一项所述的方法。
...【技术特征摘要】
1.一种模型运行于目标设备的方法,其特征在于,所述模型是基于预设深度学习框架所构建的模型,所述预设深度学习框架是基于cuda设备所设计的深度学习框架,所述目标设备与所述cuda设备的计算架构不同,所述目标设备上部署有所述预设深度学习框架,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述将拦截到的cuda接口替换为对应的虚拟设备接口包括以下至少一种:
3.根据权利要求1或2所述的方法,其特征在于,所述预设深度学习框架包括pytorch,所述cuda接口包括pytorch的python层所使用的cuda接口,所述虚拟设备接口是采用以下至少一种方式生成的:
4.根据权利要求1至3任一项所述的方法,其特征在于,所述预设深度学习框架提供有设备注册功能和设备接入接口,所述设备接入接口为支持多设备接入的接口,所述方法还包括:
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法使用通用设备的设备标识作为所述虚拟加速器的设备标识,所述预...
【专利技术属性】
技术研发人员:樊道毅,王磊,王志宏,张行程,
申请(专利权)人:北京市商汤科技开发有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。