24 Star 155 Fork 138

Ascend / MindSpeed

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
rotary-embedding.md 1.12 KB
一键复制 编辑 原始数据 按行查看 历史
邓佳 提交于 2024-05-27 09:13 . !359change ascendspeed to mindspeed

Rotary Postion Embedding 融合优化

问题分析

Rotary Position Embedding(RoPE)是一种大模型文本位置信息编码(Position Embedding)的解决方案。RoPE通过绝对位置编码的形式实现了相对位置信息的注入,融合了绝对和相对位置编码的优点,同时具备较好的长度外推性。目前RoPE方案已经被较多的大模型采用,例如LLaMA和GLM。

然而,目前torch并没有针对RoPE做特定的实现和优化,在模型侧通常是通过自定义的方式实现,且Rotary Embedding的计算方式较为复杂,实现方式的计算和内存开销需要优化。

解决方案

torch_npu侧将Rotary Embedding操作合并成一个算子,减少数据传输和临时储存,优化模型训练性能。MindSpeed调用torch_npu侧接口实现算子融合。

使用场景

模型侧使用了Rotary Embedding作为Position Embedding解决方案。

使用方法

首先确保--position-embedding-type选项设置为rope

同时开启--use-fused-rotary-pos-emb选项,以启用融合算子。

使用效果

使用融合算子可以提升训练性能。

1
https://gitee.com/ascend/MindSpeed.git
git@gitee.com:ascend/MindSpeed.git
ascend
MindSpeed
MindSpeed
master

搜索帮助