快速获取hugging face的LLM推理时的中间层attention weights的办法

以GPT-2为例,只需要在推理时加上output_attentions = True即可:

from transformers import GPT2Model, GPT2Config
configuration = GPT2Config(

            n_positions= 200,
            n_embd=256,
            n_layer=12,
            n_head=8,
            resid_pdrop=0.0,
            embd_pdrop=0.0,
            attn_pdrop=0.0,
            use_cache=False,
        ) # GPT-2配置
model = GPT2Model(configuration)
input_embedding = torch.randn(64, 200, 256) # [bsz, sequence_len, n_embd]
pred = model(inputs_embeds=embeds, output_attentions = True) #前传加上output_attentions = True即可

加上output_attentions = True,则返回的pred为包含logits, attentions等key的字典。其中的 attentions 是一个长度为模型层数的元组,其中第i个元素是一个形状为[bsz, n_head, sequence_len, sequence_len]的tensor,即为第i层的attention weight。这是transformer库的模型自带的功能,用起来很方便。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值