文件最后提交记录最后更新时间
调整文档说明 Co-authored-by: weixin_44156099<heyuhang20@h-partners.com> # message auto-generated for no-merge-commit merge: !3680 merge fix_dequant_md into master 调整文档说明 Created-by: weixin_44156099 Commit-by: weixin_44156099 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> aclnnDequantRopeQuantKvcache 算子接口资料调整 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/1675 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnDequantRopeQuantKvcache.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!36801 个月前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
common目录整改 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !4870 merge feature/common_dir_fix_v2 into master common目录整改 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 本次修改对 common/ 目录进行整理,分为两个阶段: - **Phase 1**: 将 common/include/kernel/ 重命名为 common/include/op_kernel/ - **Phase 2**: 将 common/include/tiling_base/common/src/tiling_base/ 合并到 common/include/op_host/common/src/op_host/ 相应的 CMake 配置和所有 #include 路径引用已同步更新。 影响范围: - 351 个文件修改(include 路径更新) - 8 个文件重命名(tiling_base → op_host) - 2 个 CMakeLists.txt 修改 + 多个 tests 目录 CMakeLists.txt 更新 ## 关联的Issue Closes #2246 ## 测试 - 编译验证通过:bash build.sh --pkg --soc=ascend910b --ops=all_gather_matmul_v2 -j16 - 编译产物成功生成 .run 包 ## 文档更新 无 ## 类型标签 - [x] ♻️ 重构 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!487026 天前
修复越界问题 Co-authored-by: weixin_44156099<heyuhang20@h-partners.com> # message auto-generated for no-merge-commit merge: !4268 merge fix_deqrqkvc into master 修复越界问题 Created-by: weixin_44156099 Commit-by: weixin_44156099 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复dequant_rope_quant_kvcache的越界搬入问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/1947 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ![image.png](https://raw.gitcode.com/user-images/assets/7673863/3a01af5a-8c4c-47ed-985f-ccd3bc1ef280/image.png 'image.png') 冒烟: ![image.png](https://raw.gitcode.com/user-images/assets/7673863/4383646f-2b95-4bf1-b0c4-7b57307f7d62/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!42681 个月前
整改st目录下的atk用例统一目录格式 Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !5166 merge master into master 整改st目录下的atk用例统一目录格式 Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 整改st目录下的atk用例统一目录格式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1538 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!516620 天前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
Wsl_transform资料修改 Co-authored-by: wang_shuli<wangshuli6@h-partners.com> # message auto-generated for no-merge-commit merge: !3489 merge master into master Wsl_transform资料修改 Created-by: wang_shuli Commit-by: wang_shuli Merged-by: cann-robot Description: ## 描述 之前没有注意到图灵的一些资料是有误的,对kirin是否支持一些数据类型添加了说明,现发现存在一定问题,进行排查修改 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1554 ## 测试 ## 文档更新 更新了README.md文件。 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!34891 个月前
README.md

DequantRopeQuantKvcache

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT ×
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×
Kirin X90 处理器系列产品
Kirin 9030 处理器系列产品

功能说明

  • 算子功能:对输入张量(x)进行dequant(可选)后,按sizeSplits(为切分的长度)对尾轴进行切分,划分为q、k、vOut,对q、k进行旋转位置编码,生成qOut和kOut,之后对kOut和vOut进行量化并按照indices更新到kCacheRef和vCacheRef上。

  • 计算公式:

    dequantX=Dequant(x,weightScaleOptional,activationScaleOptional,biasOptional)dequantX = Dequant(x,weightScaleOptional,activationScaleOptional,biasOptional)

    q,k,vOut=SplitTensor(dequantX,dim=−1,‘sizeSplits‘)q,k,vOut = SplitTensor(dequantX,dim=-1,`sizeSplits`)

    qOut,kOut=ApplyRotaryPosEmb(q,k,cos,sin)qOut,kOut = ApplyRotaryPosEmb(q,k,cos,sin)

    quantK=Quant(kOut,scaleK,offsetKOptional)quantK = Quant(kOut,scaleK,offsetKOptional)

    quantV=Quant(vOut,scaleV,offsetVOptional)quantV = Quant(vOut,scaleV,offsetVOptional)

    如果cacheModeOptional为contiguous则:

    kCacheRef[i][indices[i]]=quantK[i]kCacheRef[i][indices[i]]=quantK[i]

    vCacheRef[i][indices[i]]=quantV[i]vCacheRef[i][indices[i]]=quantV[i]

    如果cacheModeOptional为page则:

    kCacheRefView=kCacheRef.view(−1,kCacheRef[−2],kCacheRef[−1])kCacheRefView=kCacheRef.view(-1,kCacheRef[-2],kCacheRef[-1])

    vCacheRefView=vCacheRef.view(−1,vCacheRef[−2],vCacheRef[−1])vCacheRefView=vCacheRef.view(-1,vCacheRef[-2],vCacheRef[-1])

    kCacheRefView[indices[i]]=quantK[i]kCacheRefView[indices[i]]=quantK[i]

    vCacheRefView[indices[i]]=quantV[i]vCacheRefView[indices[i]]=quantV[i]

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 公式中的用于切分的输入`x`,Device侧的aclTensor。 FLOAT16、INT32、BFLOAT16 ND
cos 输入 公式中的用于位置编码的输入`cos`,Device侧的aclTensor。 FLOAT16、BFLOAT16 ND
sin 输入 公式中的用于位置编码的输入`sin`,Device侧的aclTensor。 BFLOAT16、FLOAT16、FLOAT32 ND
kCacheRef 输入 公式中用于缓存k的输入`kCacheRef`,Device侧的aclTensor。 INT8 ND
vCacheRef 输入 公式中用于缓存v的输入`vCacheRef`,Device侧的aclTensor。 INT8 ND
indices 输入 公式中表示Kvcache的token位置信息的输入`indices`。 INT32 ND
scaleK 输入 公式中的输入`scaleK`用于量化`k`的scale因子,Device侧的aclTensor。 FLOAT ND
scaleV 输入 公式中的输入`scaleV`用于量化`v`的scale因子,Device侧的aclTensor。 FLOAT ND
offsetKOptional 可选输入 公式中的输入`offsetKOptional`用于量化k的offset因子,Device侧的aclTensor。 FLOAT ND
offsetVOptional 可选输入 公式中的输入`offsetVoptional`用于量化的offset因子,Device侧的aclTensor。 FLOAT ND
weightScaleOptional 可选输入 公式中的输入`weightScaleoptional`用于反量化的权重scale因子,Device侧的aclTensor。 FLOAT ND
activationScaleOptional 可选输入 公式中的输入`activationScaleOptional`用于反量化的激活scale因子,Device侧的aclTensor。 FLOAT ND
biasOptional 可选输入 公式中的输入用于反量化的偏置`biasOptional`,Device侧的aclTensor。 FLOAT、FLOAT16(HALF)、INT32、BFLOAT16 ND
sizeSplits 输入 表示输入的qkv进行切分的长度。 INT64 -
quantModeOptional 可选输入 Host侧表达式字符串。表示支持的量化类型,目前仅支持static。 String -
layoutOptional 可选输入 Host侧表达式字符串。表示支持的数据格式,目前仅支持BSND。 String -
kvOutput 输入 Host侧表达式布尔值。表示是否输出kOut和vOut。 BOOL -
cacheModeOptional 输入 Host侧表达式字符串。表示kCacheRef的更新方式,目前仅支持page和contiguous,默认为contiguous。 String -
qOut 输出 表示经过处理的q,Device侧的aclTensor。 FLOAT16、BFLOAT16 ND
kOut 输出 表示输入的qkv进行切分的长度。 FLOAT16、BFLOAT16 ND
vOut 输出 表示经过处理的v,Device侧的aclTensor。 FLOAT16、BFLOAT16 ND
  • Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16。

约束说明

  • cacheModeOptional为contiguous时:kCacheRef的第0维大于x的第0维,indices数据值大于等于0且小于等于vCacheRef的第1维([b,s,n,d]格式中的s)减x的第1维;cacheModeOptional为page时:indices 数据值大于等于0,小于kCacheRef的第0维*第1维且不重复。
  • x的尾轴小于等于4096,且按64对齐。
  • 输入x不为int32时,x、cos、sin与输出qOut、kOut、vOut的数据类型保持一致,此时activationScaleOptional,weightScaleOptional、biasOptional不生效;x为int32时,cos、sin与输出qOut、kOut、vOut的数据类型保持一致,此时weightScaleOptional必选,activationScaleOptional、biasOptional可选(biasOptional不需要与其他输入类型一致)。

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_dequant_rope_quant_kvcache 通过接口方式调用DequantRopeQuantKvcache算子。