筛选

卡片视图

//

抓到一个会“假装训练”的 bug:TRL 1.9.2 续训 LoRA 时优化器是空的

TRL 1.9.2 的 GRPOTrainer 有一个“静默”的bug,如果先SFT再RL就可能碰到。使得模型可能并没有真的从已有的 LoRA adapter 继续训练,但是看起来仍然一切正常。 怎么个“静默”法呢?训练能完整跑完,日志看起来一切正常:loss 在降、reward 在涨、grad_norm 非零,wandb 曲线漂漂亮亮。可你把训练前后的权重拿去一对比,发现保存下来的 adapter 和你喂进去的初始 adapter…
//

结合nanovllm的FlashAttention和PagedAttention主要原理概述

总结:FlashAttention用于降低Attention计算阶段预存的显存消耗(内部计算范畴), PagedAttention用于高效管理推理的KV Cache(外部推理范畴)。 FlashAttention: 问题:标准 Attention 需要存储 N×N 的中间矩阵,显存 O(N²) ; 解决:分块 + 在线 softmax,显存降到 O(N) ; 关键:外循环 Q 块,内循环 K、V 块,在线更新 m、l、O ; PagedAttention: -…
//

给 tensorzero 提的第一个 PR:object_storage.endpoint 支持环境变量

tensorzero 是一个做 LLM 推理和优化的框架,配置里的 [object_storage] 用来管多模态推理时图片之类文件的存储。原来这个段的 endpoint 只能写死一个地址,我提的 PR 让它也能写成 env::SOME_ENV_VAR,启动的时候从环境变量里读。这样内网地址、测试和生产的存储端点就不用都摊在配置文件里了。 当时提的 PR 是…
//

从SGD到AdamW,优化器怎么发展过来的?

Adam = Momentum + RMSProp 本文可以省流成以下几句话: SGD往梯度下降的方向更新权重。 SGD+Momentum把梯度累积起来、得到了方向,一直同向就更新快一点,变向就慢一点。 AdaGrad把梯度的平方累积起来,让出现得频繁却梯度值很小的步长更大。 RMSProp给AdaGrad加了一个衰减系数,不看整个历史、只看近期历史,防止学习率消失。 Adam = Momentum +…