LLM学习笔记

Q1:SFT时,计算LOSS

​ LLM是自回归生成模型,每次只会生成一个 token,难道 SFT 时,对于一个 (L, D) 的数据,要调用 L 次LLM去计算loss?

A1:

​ 在每个前向传播过程,模型一次性生成整个序列的概率分布,而不是逐个生成令牌。对于一个(L, D)的输入,那么Attention后,我们还是会得到一个(L, D)输出。只不过(i, D)这个向量中存着1~i中间所有的信息,那么用它就可以生成第 i + 1 个位置的内容。这也是为什么generate函数中每次会取 logits:, -1 去生成新的内容。

Q2: SFT时,数据为什么prompt+input+output

​ LLM是自回归生成模型,在训练时候为什么不是用 prompt + input 作为输入,然后得到 output 再去与真实的 label 计算 loss 更新参数呢?

A2:

​ 首先,如果要是像问题中这种策略去训练,一来每次要调用 l e n g t h o u t p u t length_{output} lengthoutput 次模型,二来模型生成的内容和 label 长度不一定一样,计算 loss 会出问题。其中这主要是因为我们在计算loss时,pytorch中要求loss_function(input, label)中的 input, label 的shape要一致。然后为了加速收敛,这里其实是一种teacher force 的策略,就在第i个位置,我们会得到一个hidden_state,然后第i+1个位置的token应该由这个hidden_state去生成,但是我们强制让第i+1个位置的token和label中这个位置的token一样,也就是在相对正确的环境下再去生成生成第i+1个位置的hidden_state。

Q3:SFT时,构造lable

​ SFT时,构造的lable为什么要把prompt+input部分mask掉。

A3:

​ 像Q1中那样,我们生成的时候是一次性把整个序列的概率分布拿到。然后我们其实不想模型去学会对齐prompt+input这部分的能力(因为没用),所以把prompt+input mask 掉,只计算output部分的loss。

相关推荐
La Pulga4 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
楚山之石5 小时前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
Peter-OK8 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道9 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
橙橙笔记10 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
成都蜀味缘餐饮技术培训学校10 小时前
手撕烤兔技术培训实战指南,秘制腌料配方比例与调制手法
大数据·经验分享·笔记·其他·微信公众平台
希和202712 小时前
免费AI视频生成工具汇总(国内优先,适合做漫剧、短视频,Obsidian笔记版)
人工智能·笔记·音视频
蒸蒸yyyyzwd13 小时前
秋招学习笔记 day109
笔记·八股
Hhy_110714 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
山甫aa14 小时前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web