应用场景说明
【免费下载链接】cann-recipes-harmony-infer本项目为鸿蒙开发者提供基于CANN平台的业务实践案例,方便开发者参考实现端云能力迁移及端侧推理部署。项目地址: https://gitcode.com/cann/cann-recipes-harmony-infer
应用层部署大模型面临两大瓶颈:一是模型物理尺寸过大,影响下载;二是不同手机内存差异大且整体有限,约束了模型运行。为了解决这一难题, CANN与支付宝xNN合作中, 提出基于AscendC的 NPU 版本2 比特量化QuantMatmul解决方案。此方案在支付宝端侧大模型中得到应用实践并验证满足精度要求。
QuantMatMulCustom自定义算子样例说明
本样例通过Ascend C编程语言实现了QuantMatMulCustom算子,并按照不同的算子调用方式分别给出了对应的端到端实现。在开发者自研(2bit/3bit/4bit)量化算法(不同于硬件厂商提供的量化算法)在端侧NPU上部署场景,可以使用本样例的QuantMatMulCutom算子实现自定义量化的反量化计算和矩阵乘计算。
使用框架调用QuantMatMulCustom自定义算子。
按照工程创建->算子实现->编译部署>算子调用的流程完成算子开发。整个过程都依赖于算子工程:基于工程代码框架完成算子核函数的开发和Tiling实现,通过工程编译脚本完成算子的编译部署,继而实现单算子调用或第三方框架中的算子调用。
算子描述
QuantMatMulCustom算子对应的数学表达式为:
$$ C = A * ((B + offset) * scale) $$ $A$ 为feature map $B$ 为量化的weight $offset$ 为量化的偏移 $scale$ 为量化的缩放因子 $C$ 为计算输出
算子规格描述
以下描述,假设matmul计算的规格为 $A_{(M,K)} B_{(K,N)} = C_{(M,N)}$ | 矩阵 | 数据类型 | 维度 | 大小 | 转置 | | :--- | :---------------- | :-------------------------------- | :--------------- | :--- | | A | fp16 | M:仅支持1/16/32/48/64;K:128的倍数 | 总大小不超过448KB | 不支持 | | B | int4b_t | K: 128的倍数; N:128的倍数 | N/A | 不支持 | | C | fp16 | N/A | N/A | 不支持 |
支持的产品型号
本样例支持如下产品型号:
- Kirin X90 处理器系列产品
- Kirin 9030 处理器系列产品
编译安装执行
参考ascendc算子工程编译部署
【免费下载链接】cann-recipes-harmony-infer本项目为鸿蒙开发者提供基于CANN平台的业务实践案例,方便开发者参考实现端云能力迁移及端侧推理部署。项目地址: https://gitcode.com/cann/cann-recipes-harmony-infer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考