在笔记本上自制多模态小语言模型指南
前言
(这个模型的hf仓库地址:https://huggingface.co/Duoia/duovlm-40m-v1)
话说前天主包的自制SLM的文章居然上了48小时热榜

于是主包也是趁着热度来更新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阶段再救回来,反正我们也不指望它能生成长文本

到了第二阶段,我这里选用的是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
成果

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

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

Q:Is this indoor or outdoor?
A:outdoor
(图源:COCO)
总结
这个模型现在最大的问题是stage1训练时语料多少有点问题,导致讲话并不如我们上次那样流畅,比如这个问答

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)
浙公网安备 33010602011771号