有关于decoder中的past_key_values参数

news2025/7/17 9:20:35

我们都知道,encoder-decoder模型在进行generate的时候,会重复地调用decoder (i.e., auto-regressive)。

也就是,上一个step decoder的预测结果,作为下一个step decoder的输入。

这个时候,由于encoder_output是一模一样的,只不过就是decoder_inputs发生了变化。在进行decoding的时候,K、V就不会有任何数值上的差异,我们就可以直接使用上一个step已经计算好的K、V,而不用再进行重复的encoder_output ==> k_v_states的计算。

所以huggingface decoder的代码,就会传入一个past_key_values参数。在进行第一次decoding的时候(i.e., first pass),会利用k_projector和v_projector把encoder_outputs进行投射,成为k,v向量;之后这两个向量就会在随后的step,作为past_key_values,被重复地利用。
在这里插入图片描述
如下所示,在计算decoder的cross attention的时候,若存在past_key_values,就会直接把past_key_values作为最终的hidden(i.e., k_staes or v_states)
在这里插入图片描述
这个道理,其实和重用encoder_output是一样的。关键就在于,模型training的时候,decoder只用forward一次(因为有teacher forcing,提前有了答案);而testing / generate的时候,decoder会forward多次(因为需要auto-regressively生成tokens),这个时候encoding_output 和上述的 k、v在整个decoding过程中,数值都不会变化(输入没变,模型参数也没变),因此它们就可以直接重用。

不然的话会显著增加testing的时间开销。


具体参见文档:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Axios(一) +Promise自定义封装36-42

1. axios 是什么? 1. 前端最流行的 ajax 请求库 2. react/vue 官方都推荐使用 axios 发 ajax 请求 3. 文档: https://github.com/axios/axios 1.2. axios 特点 1. 基于 xhr promise 的异步 ajax 请求库 2. 浏览器端/node 端都可以使用 3. 支持请求/响应拦截器 4…

从零开始,开启属于你的 RTE 漫游之旅!丨漫游指南 x 即将启航

🤔 什么是「开发者漫游指南」? 「开发者漫游指南」邀请热爱前端开发、关心音视频领域发展、希望进入音视频行业、乐于和大家一起交流成长的小伙伴,通过「开发者漫游指南」与社区共同成长,帮助更多的开发者在实时音视频领域取得进…

Linux中gdb的使用

文章目录gdb的使用方法启动gdb之前的准备工作下载gdb拥有一个带有调试信息的可执行程序正式启动gdb展示源码(要先看到源码才知道接下来的步骤……)打断点显示所有断点信息运行程序逐过程(VS中的F10)逐语句(VS中的F11&a…

实验四、格子世界(Grid World)

一、实验目的 (1)熟悉动态规划算法中策略评估过程; (2)了解如何对问题进行建模处理,包括环境、状态、动作、奖惩值的初始化; 二、实验内容与要求 (1)掌握动态算法基本…

华为机试_HJ27 查找兄弟单词【中等】

目录 描述 输入描述: 输出描述: 解题过程 提交代码 学习代码 代码一 收藏点 描述 定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字…

Linux系统 PHP安装expect扩展详解

今天继续给大家介绍服务器运维相关知识,本文主要内容是Linux系统 PHP安装expect扩展详解。 一、expect简介 expect是基于tcl语言开发的,用于实现自动和交互式任务进行通信,而无须人的干预。expect是建立在tcl基础上的一个工具,还…

Navicat--对比和同步MySQL表结构的方法

原文网址:Navicat--对比和同步MySQL表结构的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用Navicat对比和同步MySQL表结构的方法。 实际项目中会遇到这样的场景:将测试环境的表结构同步到生产环境。 工具> 结构同步 选择源数据库和目标数据…

tensorflow 基本概念和基本操作

op和tensor之间的关系 op是graph上的节点,线就是tensor。 op输入tensor,同时也产出下游的tensor 作为每一个tensor,都会有一个op的属性(attribute),该op就代表着这个tensor是被什么计算产出的。举个例子: In [74]: w…

Redis6 主从复制

Redis6 主从复制1. 什么是主从复制2. 能做什么3. 配置1主2从3.1 配置3.2 启动redis3.3 配置主从关系4.常见问题4.1 一主二仆5. 主从复制原理6. 薪火相传7. 反客为主1. 什么是主从复制 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制&#xff0c…

C++--数据结构--最短路径--Dijkstra--Bellman-Ford算法--Floyd-Warshall算法--高阶0713 14

注:本篇所用的某些未在本文中实现的函数,或不明确的类,均在上篇博客中有详细过程,因篇幅问题不再赘述。 C--数据结构--图的相关概念及模拟实现--高阶0712_Gaze!的博客-CSDN博客 1. Dijkstra算法 Dijkstra算法需要开辟…

spring-boot 接收form表单 多文件加多字段数据(postman在form-data格式下传数组和集合)

前言 该博客多用于记录自己的问题 在写项目的时候遇到这种业务情况: 需要保存整个页面的数据,数据包含多个字段信息和多个文件 结合网上的处理思路,我最终实现了这种业务需求并整理一下 前端单独提交字段和文件比较方便简单,本人…

带你读AI论文丨针对文字识别的多模态半监督方法

摘要:本文提出了一种针对文字识别的多模态半监督方法,具体来说,作者首先使用teacher-student网络进行半监督学习,然后在视觉、语义以及视觉和语义的融合特征上,都进行了一致性约束。本文分享自华为云社区《一种针对文字…

构建高性能内存队列:Disruptor

1、 背景 Java中有哪些队列 ArrayBlockingQueue 使用ReentrantLock LinkedBlockingQueue 使用ReentrantLock ConcurrentLinkedQueue 使用CAS 等等 我们清楚使用锁的性能比较低,尽量使用无锁设计。接下来就我们来认识下Disruptor。 2、Disruptor简单使用 github地…

Web3中文|可判115年监禁的FTX创始人SBF即将被引渡到美国

巴哈马总检察长办公室在宣布逮捕FTX前CEO Sam Bankman-Fried时,指出他很可能应美国要求被引渡。 一个多星期后,美国广播公司新闻报道称 ,SBF于12月20日签署了引渡文件。 另据彭博社12月20日的一份报告称,该交易所创始人SBF于12月…

Centos7安装配置Minio

Background 官方下载地址:https://github.com/minio/minio/releases 这里给出本次使用的一个版本:minio-2021-05-11T23:27:41Z,提取码:king 1、下载minio文件夹 其他的版本的相关命令可能发生变化,这里只是针对我提供…

基于GIS的生态安全格局构建之生态阻力面的建立

GIS前沿 一、数据来源介绍 (一)土地利用数据 土地利用数据来自国土资源三次调查数据(2018年),根据研究需要对其进行分析处理。 (二)生态安全等级数据 利用对从生态属性和生态干扰两方面选择的…

Junit5 + YAML 轻松实现参数化和数据驱动,让 App 自动化测试更高效(一)

登录:不同的用户名,不同的密码,不同的组合都需要做登录场景的测试,正常的排列组合下可能会产生多个用例 搜索:不同的搜索条件产生不同的搜索结果,搜索也是常见的测试项,单个搜索参数或者多种搜…

Java---正则表达式

目录 一、正则表达式的介绍 二、正则表达式的基本语法 (1)字符类 (2)预定义符 (3)数量词 三、正则表达式的具体实例 (1)判断电话号码是否符合规则 (2)…

git push踩坑记录【看注意事项】

记录一次git push的踩坑过程(详细在注意事项里,列出了具体的解决办法)。 push远程仓库命令 使用命令 git init git add . git commit -m "提交说明写在这里" git remote add origin gitgithub.com:xxx/surgical-robot.git git p…

4、常用类和对象

文章目录4、常用类和对象4.1 Object4.2 数组4.3 二维数组4.4 二维数组 九层妖塔4.5 冒泡排序4.6 选择排序4.7 二分法查找4.8 字符串4.9 字符串拼接4.10 字符串比较4.11 字符串截断4.12 字符串替换4.13 字符串大小写转换4.14 字符串查询4.15 StringBuilder4.16 包装类4.17 日期类…