CN113885889A - 一种用于量化模型部署的方法、***、存储介质及设备 - Google Patents
一种用于量化模型部署的方法、***、存储介质及设备 Download PDFInfo
- Publication number
- CN113885889A CN113885889A CN202111097538.5A CN202111097538A CN113885889A CN 113885889 A CN113885889 A CN 113885889A CN 202111097538 A CN202111097538 A CN 202111097538A CN 113885889 A CN113885889 A CN 113885889A
- Authority
- CN
- China
- Prior art keywords
- model
- quantization
- quantized
- pseudo
- deep learning
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000013139 quantization Methods 0.000 claims abstract description 127
- 238000013135 deep learning Methods 0.000 claims abstract description 45
- 238000004364 calculation method Methods 0.000 claims abstract description 41
- 238000012549 training Methods 0.000 claims abstract description 14
- 230000008447 perception Effects 0.000 claims abstract description 8
- 238000013528 artificial neural network Methods 0.000 claims abstract description 7
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 claims description 49
- 230000009466 transformation Effects 0.000 claims description 19
- 238000007781 pre-processing Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 9
- 230000001131 transforming effect Effects 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 11
- GPRLSGONYQIRFK-MNYXATJNSA-N triton Chemical group [3H+] GPRLSGONYQIRFK-MNYXATJNSA-N 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/041—Abduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Biophysics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Biomedical Technology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种用于量化模型部署方法、***、存储介质及设备,方法包括:利用量化感知训练模块对模型进行分类神经网络的重训练,获取一个伪量化模型;将该伪量化模型读入到深度学习编译框架中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型;编译该深度学习编译框架的后端,使该后端支持深度学习编译框架生成的该量化的四比特模型的推理;将该量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件。本发明解决了模型部署不兼容的问题,同时还减少数据的传输,避免数据传输瓶颈。此外,本发明还涉及一种基于量化模型执行推理的方法。
Description
技术领域
本发明涉及服务器技术领域,尤其涉及一种用于量化模型部署的方法、***、存储介质及设备。
背景技术
早在2016年Google针对TensorFlow推出了服务化框架TensorFlow Serving,能够把TensorFlow模型以web服务的方式对外暴露接口,通过网络请求方式接受来自客户端(Client)的请求数据,计算得到前向推理结果并返回。Triton的功能与TensorFlowServing类似。
模型的搭建和训练通常耗时耗力,算法工程师需要进行大量的工作才能完成一个相对完善的模型的搭建及训练工作。训练得到的模型主要目的是为了更有效地解决实际中的问题,因此部署是一个非常重要的阶段。然而目前,模型的部署时常会出现问题。比如,模型在某些环境中却无法使用,原因可能包括缺乏对应算子实现、模型太大、算力不足等。又或者模型的运行非常慢,这对于实际生产中的需求是无法接受的。
通常,当完成一个Tensorflow或Keras模型的搭建和训练后,需要把它做成一个服务,让使用者通过相应的方式来调用该模型,而不是直接运行代码。这个过程需要把模型部署到服务器上。常用的做法如使用flask、Django、tornado等web框架创建一个服务器应用程序,这个应用程序在启动后就会一直挂在后台,然后等待用户使用客户端发送请求上来,例如上传了一张图片的URL。应用程序检测到有请求后,会下载这个URL的资源,并接着调用所部署的模型执行推理。得到推理结果后,会以相应的格式(例如json)把结果返回给用户。
然而,现有的模型部署方法中,存在着可能出现网络带宽慢,数据传输成为瓶颈,导致整个推理过程速度慢的问题。而低比特模型大多处于实验阶段,且大部分推理框架不支持低比特模型的推理部署。
因此,需要提出一种模型部署的方法,解决上述推理框架不兼容、推理速度慢、数据传输瓶颈等问题。
发明内容
有鉴于此,本发明的目的在于提出一种用于部署已经训练好的模型的方法、***、存储介质及设备,从而解决现有技术中传统的推理框架不支持迪比特模型的推理部署、推理速度慢、数据传输造成瓶颈等问题。
基于上述目的,一方面,本发明提供了一种用于量化模型部署的方法,其中,该方法包括以下步骤:
利用量化感知训练模块对模型进行分类神经网络的重训练,获取一个伪量化模型;
将该伪量化模型读入到深度学习编译框架中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型;
编译该深度学习编译框架的后端,使该后端支持深度学习编译框架生成的该量化的四比特模型的推理;
将该量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件。
在根据本发明的用于量化模型部署的方法的一些实施例中,该将该伪量化模型读入到深度学习编译框架中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型进一步包括:
基于该伪量化节点的输入和权重,将该伪量化节点展开为量化节点和反量化节点;
将该量化节点中的常量计算折叠到该权重中,得到次级权重;
基于等价变换将该反量化节点移动的卷积计算之后;
对该输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算;
利用该深度学习编译框架中的常量折叠对该反量化节点和该量化节点进行合并,获得该量化的四比特模型。
在根据本发明的用于量化模型部署的方法的一些实施例中,该基于等价变换将该反量化节点移动的卷积计算之后进一步包括:
基于等价变换将用于卷积计算的偏置进行常量折叠,得到初级偏置。
在根据本发明的用于量化模型部署的方法的一些实施例中,该对该输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算进一步包括:
基于等价变换将该次级偏置进行进一步常量折叠,得到次级偏置。
在根据本发明的用于量化模型部署的方法的一些实施例中,该利用该深度学习编译框架中的常量折叠对该反量化节点和该量化节点进行合并,获得该量化的四比特模型进一步包括:
对该反量化节点、该量化节点和该次级偏置进行常量折叠。
在根据本发明的用于量化模型部署的方法的一些实施例中,该将该量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件包括:
在该配置文件中至少指定输入的数据维度、数据类型,其中该数据类型为int4。
本发明的另一方面,还提供了一种基于量化模型执行推理的方法,其中,该方法包括:
搭建并训练模型;
利用根据本发明前述的用于量化模型部署的方法将该模型以量化的四比特模型部署到服务器中;
在客户端中基于推理的需求,生成推理请求,并对待推理的数据进行前处理,其中该前处理包括将该待推理的数据映射成int4数据;
接收客服端发出的该推理请求及该int4数据,调用该量化的四比特模型对该int4数据执行推理。
本发明的又一方面,还提供了一种用于量化模型部署的***,其中,包括:
伪量化模块,该伪量化模块配置为利用量化感知训练模块对模型进行分类神经网络的重训练,获取一个伪量化模型;
解析量化模块,该解析量化模块配置为将该伪量化模型读入到深度学习编译框架中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型;
后台编译模块,该后台编译模块配置为编译该深度学习编译框架的后端,使该后端支持深度学习编译框架生成的该量化的四比特模型的推理;
配置部署模块,该配置部署模块配置为将该量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件。
本发明的再一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被执行时实现上述任一项根据本发明的用于量化模型部署的方法。
本发明的又一方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任一项根据本发明的用于量化模型部署的方法。
本发明针对当前低比特模型大多处于实验阶段,且大部分推理框架不支持低比特模型的推理部署,以及在模型部署中,可能出现网络带宽慢,数据传输成为瓶颈,导致整个推理过程速度慢的问题,至少具有以下有益技术效果:
1.本发明使用深度学习编译框架作为推理后端,设计了一种四比特分类模型推理的支持方法,基于该方法进行模型部署,解决了模型部署不兼容的问题,并且充分利用GPU的性能,提升模型的推理速度;
2.本发明使用一种结合量化的预处理方法,将传输的数据、例如图像数据压缩至int4,减少数据的传输,提升整个推理流程的速度,避免数据传输瓶颈。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
在图中:
图1示出了根据本发明的用于量化模型部署的方法的实施例的示意性框图;
图2示出了根据本发明的用于量化模型部署的方法的部分卷积算法的实施例的示意性框图;
图3示出了根据本发明的用于量化模型部署的方法的部分卷积算法的实施例的示意性框图;
图4示出了根据本发明的用于量化模型部署的方法的部分卷积算法的实施例的示意性框图;
图5示出了根据本发明的用于量化模型部署的方法的部分卷积算法的实施例的示意性框图;
图6示出了根据本发明的用于量化模型部署的方法的部分卷积算法的实施例的示意性框图;
图7示出了根据本发明的基于量化模型执行推理的方法的实施例的示意性框图;
图8示出了根据本发明的基于量化模型执行推理的方法的实施例的示意图;
图9示出了根据本发明的用于量化模型部署的***的实施例的示意性框图;
图10示出了根据本发明的实现用于量化模型部署的方法的实施例的计算机可读存储介质的示意图;
图11示出了根据本发明的实现用于量化模型部署的方法的实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备固有的其他步骤或单元。
基于上述目的,本发明的第一方面,提供了一种用于量化模型部署的方法100。图1示出了根据本发明的用于量化模型部署的方法的实施例的示意性框图。如图1所示,该方法100包括:
步骤S110:利用量化感知训练模块对模型进行分类神经网络的重训练,
获取一个伪量化模型;
步骤S120:将该伪量化模型读入到深度学习编译框架中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型;
步骤S130:编译该深度学习编译框架的后端,使该后端支持深度学习编译框架生成的该量化的四比特模型的推理;
步骤S140:将该量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件。
具体地说,步骤S110利用量化感知训练模块对模型进行分类神经网络的重训练,获取一个伪量化模型。优选地,使用pytorch自带的量化感知训练模块进行分类神经网络的重训练,从而获取一个伪量化模型。随后,步骤S120将该伪量化模型读入到深度学习编译框架(TVM)中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型。换句话说,使用TVM读取伪量化模型,进行解析、卷积、换算等以支持int4模型推理。由于TVM的底层框架支持int4的计算,但无法解析并正确处理伪量化模型,因此需要使其支持int4模型的解析,其中涉及一系列等价变换、常量折叠等操作。最终基于原始的模型得到一个量化的四比特模型,即至此获得一个支持4bit运算的网络。基于此,在步骤S130中为该量化的四比特模型编译该深度学习编译框架的后端,使该后端支持深度学习编译框架生成的该量化的四比特模型的推理。优选地,上述调用过程使用Triton。但是Triton中可以直接调用的后端为onnx_runtime、tensorrt等后端,但不支持TVM后端的运行。因此需要在Triton中编译TVM的后端,使其支持TVM生成模型的推理。最后,在步骤S140中将步骤S120中得到的量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件,进而完成使用Triton进行量化的模型的部署。
在根据本发明的用于量化模型部署的方法100的一些实施例中,步骤S120:将该伪量化模型读入到深度学习编译框架中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型进一步包括:
步骤S121:基于该伪量化节点的输入和权重,将该伪量化节点展开为量化节点和反量化节点;
步骤S122:将该量化节点中的常量计算折叠到该权重中,得到次级权重;
步骤S123:基于等价变换将该反量化节点移动的卷积计算之后;
步骤S124:对该输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算;
步骤S125:利用该深度学习编译框架中的常量折叠对该反量化节点和该量化节点进行合并,获得该量化的四比特模型。
具体地说,上述步骤S121至125涉及使TVM支持int4模型的解析的一系列等价变换、常量折叠等操作。下面结合附图2至7进一步详细说明整个转换过程。
首先,步骤S121基于该伪量化节点的输入和权重,将该伪量化节点展开为量化节点和反量化节点。优选地,将伪量化模型读入到TVM中,TVM对模型进行解析,识别出伪量化模型的各个节点。解析后的卷积计算可以如图2所示。其中Fake_q为伪量化节点,节点中存储着输入x的量化系数scale_q,Fake_w为伪量化节点,节点中存储有权重w的量化系数scale_w。
为了随后中的常量合并,将伪量化节点展开为量化节点和反量化节点如图3所示。其中,对于输入x:
量化节点q_x包含的操作为q_x=round(clip(scale_q*x,0,15);
反量化节点dq_x包含的操作为dq_x=q_x/scale_q。
对于权重矩阵w:
量化节点q_w包含的操作为q_w=round(clip(scale_w*w,-8,7));
反量化节点dq_w包含的操作为dq_w=q_w/scale_w。
由于量化节点q_w中的操作均为常量,因此步骤S122将该量化节点中的常量计算折叠到该权重中,得到次级权重。即提前计算好,节省推理时的计算量。常量折叠后的计算如图4所示,其中权重w’为常量折叠后新产生的权重,即次级权重。
图4的计算中,虚线框内的计算可以继续进行合并,因此步骤S123基于等价变换将该反量化节点移动的卷积计算之后。变换后的计算如图5所示。其中反量化节点dq包含的操作为:dq=卷积输出/scale,其中scale=scale_q*scale_w。
由于权重w中含有负数,而输入x中仅含有正数,而在TVM中暂时不支持uint4与int4的卷积计算,因此步骤S124对输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算。变换后的计算如图6所示,其中q_x的操作变为q_x=round(clip(scale_q*x,-8,7)。
至此,反量化操作dq与下一层的量化操作q_x均为常量,所以步骤S125利用该深度学习编译框架中的常量折叠对该反量化节点和该量化节点进行合并,获得该量化的四比特模型。
在根据本发明的用于量化模型部署的方法100的一些实施例中,步骤S123:基于等价变换将该反量化节点移动的卷积计算之后进一步包括:基于等价变换将用于卷积计算的偏置进行常量折叠,得到初级偏置。如图5所示,基于等价变换将该反量化节点移动的卷积计算之后的同时,卷积计算的偏置也要进行相应的计算,即原始的偏置bias也可以进行常量折叠生成新的偏置bias′,即初级偏置bias′,其值为scale_q*scale_w*bias。
在根据本发明的用于量化模型部署的方法100的一些实施例中,步骤S124:对该输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算进一步包括:基于等价变换将该次级偏置进行进一步常量折叠,得到次级偏置。如图6所示,对该输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算的同时,偏置要也要进一步进行那个换算。也就是说,初级偏置bias′进行进一步的常量折叠变为次级偏置bias″,其值为scale_q*scale_w*bias+scale_q*scale_w*8。
在根据本发明的用于量化模型部署的方法100的一些实施例中,步骤S125:利用该深度学习编译框架中的常量折叠对该反量化节点和该量化节点进行合并,获得该量化的四比特模型进一步包括:对该反量化节点、该量化节点和该次级偏置进行常量折叠。即,对反量化节点dq、该量化节点q_x和该次级偏置bias″进行常量折叠。最终获得支持int4运算的量化的四比特模型。
在根据本发明的用于量化模型部署的方法100的一些实施例中,步骤S140:将该量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件包括:在该配置文件中至少指定输入的数据维度、数据类型,其中该数据类型为int4。具体地说,将量化好的四比特模型放入到服务器的模型仓库中,编写调用该模型的配置文件。优选地,配置文件以json编写。其中json文件中需要指定输入的数据维度、数据类型等属性,并且数据类型需要改为int4,从而与部署的量化的四比特模型相匹配。随后即可启动该服务,接收客服端发出的推理请求,进行实际的推理运行。
本发明的第二方面,还提供了一种基于量化模型执行推理的方法200。图7示出了根据本发明的基于量化模型执行推理的方法200的实施例的示意性框图。如图7所示,该方法200包括:
步骤S210:搭建并训练模型;
步骤S220:利用根据本发明前述的用于量化模型部署的方法100将该模型以量化的四比特模型部署到服务器中;
步骤S230:在客户端中基于推理的需求,生成推理请求,并对待推理的数据进行前处理,其中该前处理包括将该待推理的数据映射成int4数据;
步骤S240:接收客服端发出的该推理请求及该int4数据,调用该量化的四比特模型对该int4数据执行推理。
具体地说,在步骤S210搭建并训练好模型之后,步骤S220利用根据本发明前述的用于量化模型部署的方法将步骤S210得到的模型以量化的四比特模型部署到服务器中。当使用者根据需求产生了推理的需求时,步骤S230在客户端中基于该推理的需求,生成推理请求,并对待推理的数据进行前处理,其中该前处理包括将该待推理的数据映射成int4数据。随后,服务器在步骤S240中接收客服端发出的在步骤S230中生成的推理请求及int4数据,调用在步骤S220中部署的量化的四比特模型对该int4数据执行推理。最后,服务器将推理结果返回给客户端,展示给推理需求的发起者、即使用者。
模型部署完毕后,在实际的推理运行过程中,根据本发明的基于量化模型执行推理的运行流程如图8所示。
具体地,在实际推理中,客户端中进行的推理主要包括生成请求数据和数据预处理。其中,请求数据的生成主要包括根据不同的应用场景,客户端会产生相应的数据,生成的数据一般为图片或视频等。
随后,计算机视觉模型一般需要做数据预处理,才能正常使用。通常,常规的推理过程中,将客户端产生的图片数据先进行预处理,预处理后数据以例如fp32的格式存储,然后向服务端发出请求,将预处理后的数据通过网络传输给服务端。服务端接收数据后,调用部署的模型进行推理。最后将推理结果返回给客户端。其中,在传输图片数据时,会占用大量的传输带宽。然而在这些过程中就涉及到模型部署兼容、数据传输瓶颈等问题。
因此,根据本发明的方法将在预处理后,在客户端中加入一个数据量化过程,将例如fp32的数据映射成int4的数据。也就是说,原本在服务端进行的四比特量化过程提前到数据预处理中,量化系数采用前述步骤中产生的量化系数scale_x,量化的公式为:q_x=round(clip(scale_q*x,-8,7)。因此传输的数据量可以变为原来的1/8,大大节省了传输带宽。
以图8为例,使用例如Triton调用量化模型。该量化模型即为上述在服务端部署好的量化的四比特模型。由于推理模型是利用根据本发明的前述用于量化模型部署的方法部署到服务器中的,即服务器中的推理模型已经是量化的对四比特模型,具备推理运算int4数据的能力,这是现有的模型所不具备的。也就是说,根据本发明,在节省传输带宽的同时还解决了模型部署兼容的问题。
根据本发明,优选使用Triton调用量化模型。Triton支持HTTP、gRPC两种通信格式。经测试验证,在数据传输过程中,gPRC协议可以比HTTP协议更快的传输数据。因此,在本发明中优选使用gPRC协议来传输图片,来获得更快的速度。
本发明的第三方面,还提供了一种用于量化模型部署的***300。图9示出了根据本发明的用于量化模型部署的***300的实施例的示意性框图。如图9所述,该用于量化模型部署的***300包括:
伪量化模块310,该伪量化模块配置为利用量化感知训练模块对模型进行分类神经网络的重训练,获取一个伪量化模型;
解析量化模块320,该解析量化模块配置为将该伪量化模型读入到深度学习编译框架中,该深度学习编译框架对该伪量化模型进行解析,识别出该伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型;
后台编译模块330,该后台编译模块配置为编译该深度学习编译框架的后端,使该后端支持深度学习编译框架生成的该量化的四比特模型的推理;
配置部署模块340,该配置部署模块配置为将该量化的四比特模型置入服务器的模型仓库中,创建调用该量化的四比特模型的配置文件。
本发明实施例的第四个方面,还提供了一种计算机可读存储介质,图10示出了根据本发明实施例提供的用于量化模型部署的方法的计算机可读存储介质的示意图。如图10所示,计算机可读存储介质400存储有计算机程序指令410,该计算机程序指令410可以被处理器执行。该计算机程序指令410被执行时实现上述任意一项实施例的方法。
应当理解,在相互不冲突的情况下,以上针对根据本发明的用于量化模型部署的方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的用于量化模型部署的***和存储介质以及基于量化模型执行推理的方法。
本发明实施例的第五个方面,还提供了一种计算机设备,包括存储器520和处理器510,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例的方法。
如图11所示,为本发明提供的执行用于量化模型部署的方法的计算机设备的一个实施例的硬件结构示意图。以如图11所示的计算机设备为例,在该计算机设备中包括一个处理器510以及一个存储器520,并还可以包括:输入装置530和输出装置540。处理器510、存储器520、输入装置530和输出装置540可以通过总线或者其他方式连接,图11中以通过总线连接为例。输入装置530可接收输入的数字或字符信息,以及产生与资源监控***的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
存储器520作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的资源监控方法对应的程序指令/模块。存储器520可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储资源监控方法的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器520可选包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器510通过运行存储在存储器520中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的资源监控方法。
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种用于量化模型部署的方法,其特征在于,包括以下步骤:
利用量化感知训练模块对模型进行分类神经网络的重训练,获取伪量化模型;
将所述伪量化模型读入到深度学习编译框架中,所述深度学习编译框架对所述伪量化模型进行解析,识别所述伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型;
编译所述深度学习编译框架的后端,使所述后端支持深度学习编译框架生成的所述量化的四比特模型的推理;
将所述量化的四比特模型置入服务器的模型仓库中,创建调用所述量化的四比特模型的配置文件。
2.根据权利要求1所述的方法,其特征在于,所述将所述伪量化模型读入到深度学习编译框架中,所述深度学习编译框架对所述伪量化模型进行解析,识别所述伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型进一步包括:
基于所述伪量化节点的输入和权重,将所述伪量化节点展开为量化节点和反量化节点;
将所述量化节点中的常量计算折叠到所述权重中,得到次级权重;
基于等价变换将所述反量化节点移动的卷积计算之后;
对所述输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算;
利用所述深度学习编译框架中的常量折叠对所述反量化节点和所述量化节点进行合并,获得所述量化的四比特模型。
3.根据权利要求2所述的方法,其特征在于,所述基于等价变换将所述反量化节点移动的卷积计算之后进一步包括:
基于等价变换将用于卷积计算的偏置进行常量折叠,得到初级偏置。
4.根据权利要求3所述的方法,其特征在于,所述对所述输入进行等价变换,将uint4与int4的计算变换为int4与int4的计算进一步包括:
基于等价变换将所述次级偏置进行进一步常量折叠,得到次级偏置。
5.根据权利要求4所述的方法,其特征在于,所述利用所述深度学习编译框架中的常量折叠对所述反量化节点和所述量化节点进行合并,获得所述量化的四比特模型进一步包括:
对所述反量化节点、所述量化节点和所述次级偏置进行常量折叠。
6.根据权利要求1所述的方法,其特征在于,所述将所述量化的四比特模型置入服务器的模型仓库中,创建调用所述量化的四比特模型的配置文件包括:
在所述配置文件中至少指定输入的数据维度、数据类型,其中所述数据类型为int4。
7.一种基于量化模型执行推理的方法,其特征在于,所述方法包括:
搭建并训练模型;
利用根据权利要求1至6任一项所述的用于量化模型部署的方法将所述模型以量化的四比特模型部署到服务器中;
在客户端中基于推理的需求,生成推理请求,并对待推理的数据进行前处理,其中所述前处理包括将所述待推理的数据映射成int4数据;
接收客服端发出的所述推理请求及所述int4数据,调用所述量化的四比特模型对所述int4数据执行推理。
8.一种用于量化模型部署的***,其特征在于,包括:
伪量化模块,所述伪量化模块配置为利用量化感知训练模块对模型进行分类神经网络的重训练,获取伪量化模型;
解析量化模块,所述解析量化模块配置为将所述伪量化模型读入到深度学习编译框架中,所述深度学习编译框架对所述伪量化模型进行解析,识别所述伪量化模型的各个节点,并进行卷积计算,从而获得量化的四比特模型;
后台编译模块,所述后台编译模块配置为编译所述深度学习编译框架的后端,使所述后端支持深度学习编译框架生成的所述量化的四比特模型的推理;
配置部署模块,所述配置部署模块配置为将所述量化的四比特模型置入服务器的模型仓库中,创建调用所述量化的四比特模型的配置文件。
9.一种计算机可读存储介质,其特征在于,存储有计算机程序指令,所述计算机程序指令被执行时实现如权利要求1-6任意一项所述的方法。
10.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-6任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111097538.5A CN113885889B (zh) | 2021-09-18 | 2021-09-18 | 一种用于量化模型部署的方法、***、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111097538.5A CN113885889B (zh) | 2021-09-18 | 2021-09-18 | 一种用于量化模型部署的方法、***、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113885889A true CN113885889A (zh) | 2022-01-04 |
CN113885889B CN113885889B (zh) | 2024-01-19 |
Family
ID=79009927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111097538.5A Active CN113885889B (zh) | 2021-09-18 | 2021-09-18 | 一种用于量化模型部署的方法、***、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113885889B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949932A (zh) * | 2020-07-10 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种在TVM中实现TensorCore卷积计算的方法及*** |
CN112183712A (zh) * | 2019-07-03 | 2021-01-05 | 安徽寒武纪信息科技有限公司 | 深度学习算法的编译方法、装置及相关产品 |
US20210174214A1 (en) * | 2019-12-10 | 2021-06-10 | The Mathworks, Inc. | Systems and methods for quantizing a neural network |
WO2021147362A1 (zh) * | 2020-01-21 | 2021-07-29 | 苏州浪潮智能科技有限公司 | 基于硬件环境的数据量化方法、装置及可读存储介质 |
-
2021
- 2021-09-18 CN CN202111097538.5A patent/CN113885889B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112183712A (zh) * | 2019-07-03 | 2021-01-05 | 安徽寒武纪信息科技有限公司 | 深度学习算法的编译方法、装置及相关产品 |
US20210174214A1 (en) * | 2019-12-10 | 2021-06-10 | The Mathworks, Inc. | Systems and methods for quantizing a neural network |
WO2021147362A1 (zh) * | 2020-01-21 | 2021-07-29 | 苏州浪潮智能科技有限公司 | 基于硬件环境的数据量化方法、装置及可读存储介质 |
CN111949932A (zh) * | 2020-07-10 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种在TVM中实现TensorCore卷积计算的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN113885889B (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106022483B (zh) | 机器学习模型之间进行转换的方法与设备 | |
CN106164866B (zh) | 客户端侧web状态的高效迁移 | |
US8799319B2 (en) | System and method for meta-data driven, semi-automated generation of web services based on existing applications | |
CN104683386B (zh) | 可定制响应的桩服务实现方法及装置 | |
CN109684607B (zh) | Json数据解析方法、装置、计算机设备和存储介质 | |
CN111010438B (zh) | 远程过程调用方法、装置、服务器及存储介质 | |
CN111901157B (zh) | 一种基于k8s的服务部署方法、装置、设备、介质 | |
CN110941655B (zh) | 一种数据格式转换方法及装置 | |
CN111369237B (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN111552464A (zh) | 一种sdk生成方法、装置、设备及介质 | |
CN111124924B (zh) | Api部署方法、装置、电子设备及存储介质 | |
US20180300118A1 (en) | App program running method and apparatus | |
CN115842733A (zh) | 资源共享方法及微前端***、应用、计算机可读存储介质 | |
CN113885889A (zh) | 一种用于量化模型部署的方法、***、存储介质及设备 | |
CN112671671B (zh) | 基于第三方库的第三方流量识别方法、装置及设备 | |
CN112330816B (zh) | Ar识别的处理方法、装置和电子装置 | |
CN114675821A (zh) | 一种基于低代码的服务标准化***及方法 | |
CN114115897A (zh) | 基于nodejs脚本动态生成项目本地可执行文件的方法 | |
CN115237457A (zh) | 一种ai应用的运行方法及相关产品 | |
US20220365762A1 (en) | Neural network model conversion method server, and storage medium | |
CN110929209A (zh) | 用于发送信息的方法及装置 | |
EP4328807A1 (en) | Method and apparatus for adaptating to quantum computing platform, and quantum computer operating system | |
CN112102193B (zh) | 图像增强网络的训练方法、图像处理方法及相关设备 | |
CN109558138A (zh) | 后代选择器处理方法及装置 | |
CN112988170B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |