已关闭
[Requirement|需求建议]: 为AddLayerNormQuant算子补充aclnn调用测试示例 #4393
rk创建于  7月28日关闭于  7月31日
rk成员
7月28日 创建

Backgroud(背景信息)

AddLayerNormQuant 算子将 LayerNorm 前的 Add 算子与 LayerNorm 归一化输出融合给下游量化算子(Quantize/AscendQuantV2/DynamicQuant),减少搬入搬出操作,是大模型归一化场景的常用融合算子。算子已提供 aclnn 接口(aclnnAddLayerNormQuant),但仓库 README(norm/add_layer_norm_quant/README.md)调用说明表中 aclnn 接口的样例代码列为空("-"),仅提供了图模式(geir)测试示例(test_geir_add_layer_norm_quant.cpp),缺少 aclnn 接口调用方式的端到端测试示例。

Origin(信息来源)

CANN ops-nn 仓库 norm/add_layer_norm_quant 算子目录。该算子已具备 op_host/op_kernel 实现、op_graph IR、图模式测试示例及文档,唯独缺少 aclnn 接口调用示例。

Benefit / Necessity(价值/作用)

  • 补全 README 调用说明中 aclnn 接口的样例代码,使算子的两种调用方式(aclnn 接口、图模式)均有完整示例可供参考
  • 提供端到端的 aclnnAddLayerNormQuant 两段式接口(GetWorkspaceSize + 调用)调用范例,降低开发者集成与调试成本
  • 便于在支持产品上验证算子功能正确性与可用性

Design(设计方案)

norm/add_layer_norm_quant/examples/ 目录下新增 test_aclnn_add_layer_norm_quant.cpp,参考 CANN 标准测试示例结构:

  1. 资源初始化(aclInit/aclrtSetDevice/aclrtCreateStream
  2. 构造输入:x1/x2(shape {8,16},ACL_FLOAT)、gamma/beta/bias/s1/s2(shape {16},ACL_FLOAT);属性 eps=1e-6、additionalOut=true、divMode=true、quantMode="static"
  3. 两段式接口调用:aclnnAddLayerNormQuantGetWorkspaceSize 申请 workspace,aclnnAddLayerNormQuant 执行计算
  4. 拷贝输出到 host 并打印 y1/y2(ACL_INT8)、x/outScales1/outScales2(ACL_FLOAT)
  5. 释放 aclTensor 与 device 资源

关联 PR:https://gitcode.com/cann/ops-nn/pull/7978

likedislike
Rrk成员
7月28日 添加了label:requirement
Rrk成员
7月28日 修改了issue 的描述
yuning_chenyuning_chen成员
7月28日 将 wangpengbo26 设为负责人
CANN-robotCANN-robot成员
7月31日 关闭了 issue
CANN-robotCANN-robot成员
7月31日 添加了label:resolved