探索Transformer的新维度:Rotary Embeddings-Pytorch

探索Transformer的新维度:Rotary Embeddings-Pytorch

项目地址:https://gitcode.com/gh_mirrors/ro/rotary-embedding-torch

Rotary Embeddings Logo

在深度学习领域,Transformer模型的革新性已经无需过多赘述,但如何进一步提升其性能和效率一直是研究者们关注的焦点。现在,让我们一起揭开Rotary Embeddings的神秘面纱,这是一个专为Pytorch设计的独立库,旨在利用旋转嵌入增强Transformer中的相对位置编码。

项目介绍

Rotary Embeddings-Pytorch 是一个简单易用的库,提供了一种新颖的方法来处理Transformer中的序列位置信息。它引入了旋转的概念,不仅适用于固定的位置编码,也支持学习到的参数,有望带来最先进的结果,而成本却极低。这个库的核心是将旋转操作应用于张量的任意轴,无论是固定的位置还是动态学习的位置。

技术分析

这个库的核心是RotaryEmbedding类,它可以方便地将旋转嵌入应用到查询(queries)或键值对(keys)。通过在计算注意力权重前进行旋转,可以改变传统位置编码的方式,从而提高Transformer的表达能力和泛化能力。此外,针对推理时的键值缓存(key-value cache),库还提供了专门的方法来处理不同长度的查询序列。

更令人兴奋的是,该库还支持轴向旋转嵌入(Axial Rotary Embeddings),这对于视频等多维数据的处理非常有用,并且能够实现长度可扩展的旋转嵌入(Length Extrapolatable Rotary Embeddings),以解决预训练模型在长序列上的适应问题。

应用场景

  1. 自然语言处理:提升基于Transformer的语言模型在长文本理解或生成任务上的性能。
  2. 计算机视觉:在视频序列中捕捉时间维度的信息,改进视频Transformer的表现。
  3. 自动生成:在需要考虑序列上下文的自回归模型中,利用旋转嵌入更好地预测未来序列元素。

项目特点

  1. 易于集成:只需几行代码即可在现有Transformer模型中添加旋转嵌入。
  2. 高效:优化的实现保证了计算效率,不会显著增加计算负担。
  3. 灵活性:支持固定和学习的位置编码,以及轴向和长度可扩展的应用场景。
  4. 创新性:借鉴并实现了最新的研究方法,如XPos和序列位置插值,提升了长序列处理能力。

安装 Rotaty Embeddings-Pytorch 只需一行命令:

pip install rotary-embedding-torch

要开始使用,参考以下示例代码:

import torch
from rotary_embedding_torch import RotaryEmbedding

rotary_emb = RotaryEmbedding(dim=32)
q = torch.randn(1, 8, 1024, 64)
k = torch.randn(1, 8, 1024, 64)

q = rotary_emb.rotate_queries_or_keys(q)
k = rotary_emb.rotate_queries_or_keys(k)

如果你对Transformer模型有深入的兴趣,或者正在寻找提升模型性能的新途径,那么Rotary Embeddings-Pytorch绝对值得尝试。开始你的探索之旅,让旋转的力量带你进入Transformer的新境界!

rotary-embedding-torch Implementation of Rotary Embeddings, from the Roformer paper, in Pytorch 项目地址: https://gitcode.com/gh_mirrors/ro/rotary-embedding-torch

修改后报错,怎么修改 C:\Users\QwQ\PyCharmMiscProject\.venv\Scripts\python.exe D:\funasr_test\main6-8b-5g.py Notice: ffmpeg is not installed. torchaudio is used to load audio If you want to use ffmpeg backend to load audio, please install it by: sudo apt install ffmpeg # ubuntu # brew install ffmpeg # mac funasr version: 1.2.4. Downloading Model to directory: C:\Users\QwQ\.cache\modelscope\hub\iic\speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch 2025-03-06 19:14:51,188 - modelscope - WARNING - Using branch: master as version is unstable, use with caution Downloading Model to directory: C:\Users\QwQ\.cache\modelscope\hub\iic\speech_fsmn_vad_zh-cn-16k-common-pytorch 2025-03-06 19:14:53,802 - modelscope - WARNING - Using branch: master as version is unstable, use with caution Downloading Model to directory: C:\Users\QwQ\.cache\modelscope\hub\iic\punc_ct-transformer_cn-en-common-vocab471067-large 2025-03-06 19:14:54,453 - modelscope - WARNING - Using branch: master as version is unstable, use with caution Building prefix dict from the default dictionary ... DEBUG:jieba:Building prefix dict from the default dictionary ... Loading model from cache C:\Users\QwQ\AppData\Local\Temp\jieba.cache DEBUG:jieba:Loading model from cache C:\Users\QwQ\AppData\Local\Temp\jieba.cache Loading model cost 0.339 seconds. DEBUG:jieba:Loading model cost 0.339 seconds. Prefix dict has been built successfully. DEBUG:jieba:Prefix dict has been built successfully. Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained. ERROR:root:模型加载失败: `rope_scaling` must be a dictionary with with two fields, `type` and `factor`, got {'factor': 8.0, 'low_freq_factor': 1.0, 'high_freq_factor': 4.0, 'original_max_position_embeddings': 8192, 'rope_type': 'llama3'} Traceback (most recent call last): File "D:\funasr_test\main6-8b-5g.py", line 103, in _load_model self.model = AutoModelForCausalLM.from_pretrained( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\QwQ\PyCharmMiscProject\.venv\Lib\site-packages\transformers\models\auto\auto_factory.py", line 526, in from_pretrained config, kwargs = AutoConfig.from_pretrained( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\QwQ\PyCharmMiscProject\.venv\Lib\site-packages\transformers\models\auto\configuration_auto.py", line 1099, in from_pretrained return config_class.from_dict(config_dict, **unused_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\QwQ\PyCharmMiscProject\.venv\Lib\site-packages\transformers\configuration_utils.py", line 774, in from_dict config = cls(**config_dict) ^^^^^^^^^^^^^^^^^^ File "C:\Users\QwQ\PyCharmMiscProject\.venv\Lib\site-packages\transformers\models\llama\configuration_llama.py", line 160, in __init__ self._rope_scaling_validation() File "C:\Users\QwQ\PyCharmMiscProject\.venv\Lib\site-packages\transformers\models\llama\configuration_llama.py", line 180, in _rope_scaling_validation raise ValueError( ValueError: `rope_scaling` must be a dictionary with with two fields, `type` and `factor`, got {'factor': 8.0, 'low_freq_factor': 1.0, 'high_freq_factor': 4.0, 'original_max_position_embeddings': 8192, 'rope_type': 'llama3'}
最新发布
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦贝仁Lincoln

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值