• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Duoia的博客
博客园    首页    新随笔    联系   管理    订阅  订阅

在笔记本上自制多模态小语言模型指南

前言

(这个模型的hf仓库地址:https://huggingface.co/Duoia/duovlm-40m-v1)

话说前天主包的自制SLM的文章居然上了48小时热榜

微信图片_20260927011441_148_1

于是主包也是趁着热度来更新VLM的制作指南了好吧

(其实主包之前一个星期都在研究小模型做lean 4证明,本来在minif2f拿到了32%的正确率,结果发现全是harness贡献的tactic,甚至关了模型分数不降速度更快,也是十分之幽默,所以说的lean prover的文章只能缓一缓了)

关于VLM你需要知道的一切

话说2021年openai有一群灵珠,他们写了一篇论文叫 Learning Transferable Visual Models From Natural Language Supervision

那这么复杂的论文必然不是我等渣渣可以看懂的,你只需要知道几件事就可以了:

  • 他们做了一个东西叫 CLIP(Contrastive Language-Image Pre-training)
  • CLIP是用图片加图片的描述性文本这样一对一对训练的
  • CLIP有一个图片编码器和一个文本编码器(双塔)
  • 给图片编码器一张图,它就吐出一个向量,给一个句子,它就吐出一个向量
  • 小猫图片和小猫这个词的向量差不多,小狗图片和小狗这个词的向量也差不多

那么这样的话,图片和文本都被映射到一个向量空间了,就自然实现了图像到文本的对齐,这样LLM就可以理解图片了

而早期很多比较流行的VLM的本质,就是LLM接上了一个CLIP,图片被CLIP转换成了隐藏层的向量,LLM本身只需要做一点点指令上的微调就可以了,当然现在很多模型会一起训练了

我们要做些什么

因为主包的目标是小参数,快速出原型,所以主包直接选用了这种LLM+CLIP的经典方案,主包直接选了2021年1月的ViT-B/16,我们只需要打开图像塔就行了,图像塔的参数量是80多M

我们需要训练三个东西:

  • 第一阶段:训练LLM,让它会说话
  • 第二阶段:让这个CLIP输出的向量和我们的层对齐
  • 第三阶段:SFT让模型理解问题以及应该用什么形式回答

训练阶段

主包给模型设计的架构:512维,8头,12层,GQA 8Q-2KV,SwiGLU 1408,词表 8192,上下文 512,RoPE(base 10000),RMSNorm,权重绑定,bf16精度,差不多38M

第一阶段主包准备的是minipile数据集,这个数据集包含很多新闻,维基百科,网页等各式各样的文本,开局先训个tokenizer,然后前世记忆告诉我给文章切成512token的小块,避免模型一直说话不停(虽然事实证明收益渺茫)

我花了四个半小时训练,结果发现模型虽然语法是对的,但是它不断重复,而且讲话逻辑很乱,不开抑制几乎用不了,没关系,我们到23阶段再救回来,反正我们也不指望它能生成长文本

ScreenShot_2026-09-27_161806_415

到了第二阶段,我这里选用的是llava cc3m数据集,原版比较大,我裁剪出了一个五万条的子集(子集地址:https://huggingface.co/datasets/Duoia/llava-cc3m-50k )因为clip和我们的模型并不兼容,所以我们需要一个翻译官把clip出来的向量翻译成我们的层,第二阶段的主要任务是训这个翻译官,差不多1.3M

在这里,CLIP把224 * 224的图片切成196个小块,然后输出768维向量,这个翻译官就是一个两层的小网络,768-1024-512,输入这个向量输出隐藏层,训练时就用图文对就行了

这个几十分钟就行了,最后是SFT,这个大家老熟悉了,用了vqa2的一个一万条的小子集,目的就是对齐一下作答方式

至此,我们的模型已经训练完成了,显存峰值在第一阶段,是5.3G

成果

COCO_val2014_000000044642

Q:Render a clear and concise summary of the photo.
A:a giraffe is walking in the park
(图源:COCO)

COCO_val2014_000000017927

Q:What sport is the person performing?
A:tennis
(图源:COCO)

COCO_val2014_000000448243

Q:Is this indoor or outdoor?
A:outdoor
(图源:COCO)

总结

这个模型现在最大的问题是stage1训练时语料多少有点问题,导致讲话并不如我们上次那样流畅,比如这个问答

COCO_val2014_000000046812

Q:Render a clear and concise summary of the photo.
A:food is a good food for the food .
(图源:COCO)

下次如果想要改进,应该尝试更纯净的语料,因为毕竟它学论文版权头网页结构并没有用,很多权重都浪费了

(这个模型的hf仓库地址:https://huggingface.co/Duoia/duovlm-40m-v1)

posted on 2026-09-27 17:03  Duoia  阅读(38)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3