| [feat] [aclgraph] rope重构 + 支持DeepSeekv3.2&Qwen2/3 yarn外推
Co-authored-by: zhaokerui<zhaokerui@huawei.com>
# message auto-generated for no-merge-commit merge:
!285 merge long_seq into dev
[feat] [aclgraph] rope重构 + 支持DeepSeekv3.2&Qwen2/3 yarn外推
Created-by: zhaokerui
Commit-by: zhaokerui
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->
# 合入背景
> Fixes #235
# 修改内容
本次 PR 新增了完整的 RoPE(旋转位置嵌入)模块,提供可扩展的旋转位置嵌入实现框架:
**核心新增文件:**
1. **base.py** - 基础 RoPE 实现,提供旋转位置嵌入的核心功能,支持 NPU 加速,包含 cos/sin 缓存预计算和位置索引
2. **yarn_scaling_rope.py** - YaRN(Yet another RoPE extensioN)扩展实现,支持长上下文推理,通过频率混合和幅度缩放实现平滑的上下文扩展
3. **deepseek_v3_yarn_scaling_rope.py** - DeepSeek-V3 特定实现,基于 YaRN 添加 mscale_all_dim 参数,实现更精细的注意力幅度控制
4. **registry.py** - RoPE 工厂注册表和缓存机制,支持按配置创建和复用 RoPE 实例,提供装饰器 @register_rope_type 用于注册新的 RoPE 类型
5. **__init__.py** - 模块主入口,注册三种 RoPE 类型(default、yarn、deepseek_yarn),提供统一的 get_rope() 接口,根据配置自动选择合适的实现
**模型适配:**
- DeepSeek-V3-32B 和 Qwen3-32B 模型已完成适配,各自定义专属的 RopeScaling 配置类
**支持场景:**
- 同步推理
- 异步推理
- 同步推理 + MTP(DeepSeek-V3-32B)
# 资料变更
> 新增开发者文档RoPE Factory 使用指南,指导其他模型使用框架测的rope相关工具。
# 接口变更
> “不涉及”。
# 测试结果
> gsm8k 数据集,qwen3-32B浮点精度结果95.68、 deepseekv3.2精度93.25.
> 性能:qwen3-32b dsv32 同步+MTP、同步、异步性能与合入前保持一致
# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。
- [x] 代码注释完备
- [x] 正确记录错误日志
- [x] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [x] 进行了空指针校验
- [x] 若存在资源申请,使用后资源被正确的释放了
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [x] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [x] 符合Ascend社区的编码规范。[C++ 语言编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-coding-style-guide.md) | [C++ 语言安全编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-secure-coding-guide.md)
See merge request: Ascend/MindIE-LLM!285 | 2 个月前 |