溯源 • 求索 • 笃行
未读
衔言渡意:中英法,六个方向
衔言渡意:中英法,六个方向 引言:简历上缺一块 简历上有两个NLP项目。 韵染流光是序列生成,Encoder-Decoder,中文描述到颜色DSL的映射。数语觅类是多标签分类,Encoder-only,列名和样本到语义类型的识别。两个项目,两种架构,两类任务。但有个明显的空白:我没碰过跨语言。 机器
AI
未读
NLP评估指标:你的模型到底好在哪
数语觅类的评估从来没让我纠结过。精度、召回、F1、完全匹配率——四个指标各管一个维度,算起来也简单:模型输出一组标签,标签要么对要么错,逐个比完就有数了。我甚至做了个加权 score 把它们合成一个数,直接塞进训练循环当监控信号: @property
def score(self) -> float
AI
未读
训练控制的统计化——当 loss 和评估分数开始撒谎
衔言渡意第二轮训练(15.5M)的末期,val loss 从 2.461 一路降到 2.422,模型还在学。但同一段时间里 BLEU 的表现是这样的: 19.95 → 17.91 → 18.96 → 16.56 → 18.14 → 18.30 → 18.51
上蹿下跳,epoch 间跳两三分是常态
AI
未读
KV Cache 实现手记——高估了,低估了,然后搞懂了
在衔言渡意的训练收尾阶段,我给自己的最后一项技术任务是给推理加上 KV Cache。 我对这个东西的第一印象来自行业讨论——到处都在说 KV Cache 管理、PagedAttention、prefix sharing。脑子里自动补全了一整套分布式系统的画面:用户登录鉴权,会话状态持久化,多轮对话中
AI
未读
模型容量不够——下一步是加层还是加宽?
模型容量不够——下一步是加层还是加宽? 衔言渡意是一个中英法三语互译的小模型。训练到第二版(15.5M 参数,192 维,6+6 层),BLEU 到 15.6 后走平,val loss 不再下降——容量到顶了。 需要扩容,但往哪个方向扩? 加层和加宽不是同一件事。层数管的是串行处理深度——嵌套从句需
AI
未读
从数据反推模型架构:一个小模型训练的经验公式
引言:差了一个数量级 韵染流光是6060万参数,数语觅类是420万参数。同样是从零训练的小语言模型,参数量差了14倍。 我知道数语觅类更简单。韵染流光的DSL是我多次推翻重新设计的结果,自然语言理解、多轮上下文追踪、近似方法调用的DSL解析——这些东西叠在一起,学习难度很高。数语觅类就是给列名和样本
AI
未读
通用 Tokenizer 评估方案——从项目专用到任务无关
引言 数语觅类(我的第二个项目,数据库列语义分类)里写了一个 verify 函数,用来评估 tokenizer 的词表大小是否合理。核心逻辑是对样本做编码,统计平均 token 数,然后给建议: # 评估建议(基于样本)
if avg_length > 20:
print(f"⚠️ 建议:
溯源 • 求索 • 笃行
未读
数语觅类:"nl是什么?27是年龄吗?"
引言:VARCHAR(255)没告诉你的 数据库里有几百张表,每张表几十个列。 VARCHAR(255)告诉你它是字符串,INT告诉你它是整数,但这些只是物理类型。它们不回答真正重要的问题: 这个VARCHAR是邮箱、手机号、还是普通文本? 这个INT是年龄、金额、还是状态码? nl 这个列名是什么
溯源 • 求索 • 笃行
未读
韵染流光 • 其一:代码三百行
引言:写不出的第一行 韵染流光完成后,我能清楚地说出训练循环的每个环节。 dataset从文件中提取第idx个样本,dataloader通过sampler控制采样顺序,collate把样本组装成batch,模型接收batch开始前向传播。为什么要padding?因为GPU需要形状一致的数据。为什么要
溯源 • 求索 • 笃行
未读
韵染流光 • 其一:"亮一些的蓝"
引言:一个看似简单的想法 “红色,深一点,再偏蓝一些。” 当我试图让计算机理解这句话时,以为这会是件简单的事情——就算不简单,也不会太难。 我的想法很理所当然:颜色词是有限的,修饰词也是有限的。把它们的关系建立起来,训练一个模型,应该就可以了——最多,再加上一些修饰组合的不同方式。这和让AI写文章、