YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Diy-VLM(迷你视觉语言模型)
教学用最小 VLM:ViT 视觉编码器 + LLaVA 式 2 层 MLP 投影层 + RoPE-GPT 语言模型, 可训练参数 183,406(约 18.3 万,词表 36)。MNIST 手写数字的 VQA / 图像描述任务, CPU 约 10 分钟完成全部四阶段训练。
代码与练习:https://github.com/vicfei/Diy-VLM
参数构成
| 模块 | 参数量 |
|---|---|
| ViT 编码器 | 70,858 |
| 投影层(2 层 MLP) | 8,320 |
| LLM(2 层 RoPE-GPT) | 104,228 |
| 合计(可训练) | 183,406 |
注:state_dict 另含位置编码 buffer 2,112 元素(ViT pos_encoding 1,088 + 两层 RoPE cos/sin 2×512),state_dict 总计 185,518。
训练(本轮实测)
| 阶段 | 内容 | 结果 |
|---|---|---|
| 0a | ViT 分类预训练 | acc 95.2% |
| 0b | LLM 模板预训练 | — |
| 1 | 冻结 ViT+LLM,只训投影层(8,320 参数) | loss 0.795 → 0.242 |
| 2 | 解冻 LLM,VQA:描述 2:1 混合微调 | loss 0.235 → 0.064 |
评测(MNIST 测试集前 1000 张,torchvision 自动下载)
VQA 准确率 **88.6%**,图像描述准确率 **89.7%**。
用法
# 依赖 torch;模型定义见 GitHub 仓库 mini_vlm.py
ckpt = torch.load("mini_vlm_final.pt", map_location="cpu")
model = MiniVLM(vocab_size=len(ckpt["stoi"]) + 3)
model.load_state_dict(ckpt["model"])
词表另附 stoi.json(36 词),不用 torch 也可读取。
局限
MNIST 域的教学演示,不具备通用视觉语言能力;字级分词仅覆盖本项目词表。
许可
MIT(代码)。权重随代码同许可发布。
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support