内容提要
freeCodeCamp发布课程,讲解如何用Python在普通CPU上从零构建并训练一个2500万参数的小型多模态语言模型。模型采用字节级词表、线性与稀疏注意力结合、专家混合及视觉编码器,将图像转为token。课程涵盖分词嵌入、注意力机制、预训练数据策略和强化学习;经强化学习后,模型在24个Python任务中的表现从0个提升到16个。
延伸解读
小模型的大设计:字节级词表与权重共享
课程中的模型仅2500万参数,却采用260个token的字节级词表,这能减少嵌入矩阵规模,更适合小模型。同时,嵌入层与输出头共享权重(weight tying),进一步压缩参数。这种设计让模型在普通CPU上可训练,也说明小模型需在词表大小和参数效率间权衡,而非简单缩小大模型配置。
线性注意力与稀疏注意力的混合策略
模型结合线性注意力和稀疏注意力:线性注意力以固定大小内存保留近期token信息,每四层插入稀疏注意力,借助索引器查找远距离细节。这种混合结构在有限算力下平衡了效率与长程依赖,但稀疏注意力的索引器设计可能影响细节捕捉能力,课程通过实验展示其实际效果。
视觉编码与多模态融合的轻量实现
视觉部分使用小型编码器将32x32图像切分为patch,经2D RoPE编码后转为16个图像token,与文本token共同输入模型。这种轻量方案使模型能识别数字,但图像分辨率低、token数少,可能限制复杂视觉任务的表现。课程以此演示多模态融合的基本流程,而非追求视觉性能。
强化学习带来的显著提升与实验要点
经过强化学习,模型在24个Python任务上的解决数从0提升到16,显示后训练对小模型能力的关键作用。课程强调奖励函数设计、GRPO式优势计算、仅更新最后几层,以及测试组大小、温度和随机种子。这些细节表明,强化学习效果高度依赖超参数和实验设置,需谨慎调优。
Q&A
GLM-5.3-Flash模型有什么特点?
GLM-5.3-Flash结合了线性注意力与稀疏注意力、专家混合设计以及流形约束超连接。其缩小版拥有2500万参数,可在Python中构建并在标准CPU上训练。
这个课程主要教什么内容?
课程教授如何用Python从零构建并训练一个多模态语言模型,涵盖预训练和后训练,包括分词嵌入、线性与稀疏注意力、专家混合、视觉编码器、预训练数据策略和强化学习。
模型的分词和嵌入有什么特别设计?
模型使用260个token的字节级词表,上下文长度为192个token。通过权重绑定在嵌入和输出头之间共享一个矩阵,以适应小模型的需求。
线性注意力和稀疏注意力是如何结合的?
线性注意力保持最近token的固定大小记忆,而每第四层使用带索引器的稀疏注意力来查找远处细节。
模型如何处理图像输入?
图像被分割成小块,使用2D RoPE,并合并为图像token,使模型能够识别数字。视觉编码器将32x32图像转换为16个token。
强化学习后模型表现提升多少?
经过强化学习,模型在24个Python任务中的表现从解决0个提升到解决16个。