实现大语言模型 SFT(Supervised Fine-Tuning)阶段的损失函数计算。
给定一个长度为 L 的 token 序列和模型输出的 logits 矩阵(L×V,V 为词表大小),计算自回归语言模型的交叉熵损失。
关键细节:
第一行包含两个整数 L,V(2≤L≤64,2≤V≤32)。
第二行 L 个整数,表示 token 序列(0≤tokeni<V,或 −1 表示 padding)。
接下来 L 行,每行 V 个浮点数,表示模型输出的 logits 矩阵。
输出 SFT 损失值,保留 4 位小数。若无有效 token,输出 0.0000。
输入
4 3
0 1 2 -1
0.5 0.3 0.2
0.1 0.8 0.1
0.2 0.3 0.5
0.4 0.4 0.2
输出
1.2648
说明
Shift right 后:logits 取前 3 行(位置 0,1,2),labels 取后 3 个 token(1,2,−1)。位置 2 的 label 是 −1(padding),跳过。有效位置:位置 0 预测 token 1,位置 1 预测 token 2。实际损失 ≈1.2648。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册