A380-从零开始构建多模态大模型MLLMfromScratch

A380-从零开始构建多模态大模型MLLMfromScratch

导出时间:2025/12/16 11:30:32

1、项目简介

一、项目目标

本项目旨在从零开始、纯手工实现一个多模态大模型(Multimodal Large Language Model, MLLM),不依赖 timmtransformers 等高度封装的深度学习框架组件,而是通过逐步实现底层模块,完整构建:
  • Transformer 基础架构
  • Vision Transformer(ViT)视觉模型
  • GPT-style 自回归语言模型(LLM)
  • 融合视觉与语言的多模态大模型(MLLM)
最终目标是实现一个能够理解图像并生成自然语言描述的“看图说话”模型,并通过实验与报告展示模型的训练与推理效果。

二、总体技术要求

  1. 从零实现核心模块
    • 不允许直接调用 transformerstimm 等库中封装好的 Transformer、ViT、GPT 等模型。
    • 必须手工实现注意力机制、Transformer Block、位置编码等核心组件。
  2. 模块化设计
    • Transformer、ViT、LLM、MLLM 各部分应逻辑清晰、模块解耦。
    • 视觉模块、语言模块与多模态融合模块应具备清晰的接口。
  3. 端到端可运行
    • 每个阶段(Transformer / ViT / LLM / MLLM)都应具备完整的训练与推理流程。
    • 代码应能够在合理配置下复现实验结果。

三、功能性要求(按模块划分)

1. Transformer 基础模块(必做)

要求内容:
  • 实现完整的 Transformer 架构组件,包括但不限于:
    • Scaled Dot-Product Attention
    • Multi-Head Attention
    • Position-wise Feed Forward Network
    • Positional Encoding(正弦/余弦或可学习)
    • Layer Normalization
    • Encoder Block 与 Decoder Block
  • 能够正确堆叠形成 Transformer Encoder / Decoder。
验证方式:
  • 提供单元测试(tests 文件夹)。
  • 所有测试必须通过,并在报告中给出测试通过的截图。

2. Vision Transformer(ViT)模块

要求内容:
  • 基于已实现的 Transformer Encoder,构建 Vision Transformer。
  • 必须实现 Patch Embedding,将图像从 [B, C, H, W] 转换为序列形式。
  • 在 CIFAR-10 数据集上完成图像分类训练与测试。
实验要求:
  • 展示训练过程中 Loss 的变化曲线。
  • 报告 CIFAR-10 测试集上的最终分类准确率。

3. 语言模型(LLM)模块

要求内容:
  • 构建一个 GPT-style 自回归语言模型。
  • 使用因果掩码(Causal Mask)确保自回归生成。
  • 实现简单的字符级分词器(Tokenizer)。
实验要求:
  • 在 Tiny Shakespeare 数据集上完成训练。
  • 展示训练过程中 Loss 的变化曲线。
  • 提供至少 2 个文本生成样本,并与原始莎士比亚文本风格进行对比分析。

4. 多模态大模型(MLLM)模块

要求内容:
  • 实现视觉与语言之间的连接器(Connector),用于对齐模态空间。
  • 将 ViT、Connector 和 LLM 组合成完整的多模态模型。
  • 支持输入图像 + 文本提示,输出自然语言描述。
实验要求:
  • 在 Flickr8k 图文对数据集上完成训练或微调。
  • 展示训练过程中 Loss 的变化曲线。
  • 提供至少 2 个“看图说话”示例(测试图片 + 模型生成描述)。

四、实验与报告要求

提交时需提供一份完整的实验报告,报告至少应包含以下内容:
  1. 实验结果展示
    • Transformer 单元测试通过截图
    • ViT 和 LLM 的训练 Loss 曲线
    • ViT 在 CIFAR-10 上的测试准确率
    • LLM 文本生成样本
    • MLLM 的训练 Loss 曲线
    • 图像描述生成结果展示(图片 + 文本)
  2. 结果分析
    • 对模型训练过程和生成效果进行简要分析
    • 可讨论模型收敛情况、生成质量、失败案例等
  3. 问题与解决方案(Challenges and Solutions)
    • 记录实现过程中遇到的主要问题,例如:
      • Attention 维度错误
      • Mask 实现问题
      • 训练不收敛
      • 多模态对齐困难
    • 说明对应的解决思路与方法

五、代码与工程规范要求

  1. 代码结构
    • 可参考给定的目录结构,但不强制要求完全一致。
    • 不允许将所有代码集中在少数文件中。
  2. 代码质量
    • 变量命名规范、逻辑清晰
    • 关键实现部分应有必要注释
    • 风格保持一致,避免随意拼凑
  3. 可复现性
    • 提供 requirements.txt
    • 训练和推理脚本应可直接运行
    • 配置文件(如 YAML)清晰明确

六、评分标准(总分 20 分)

模块
分值
评分依据
Transformer
5 分
实现正确性 + 单元测试
Vision Transformer
5 分
代码正确性 + CIFAR-10 表现
Language Model
5 分
生成文本质量 + 训练过程
Multimodal Model
5 分
多模态融合正确性 + 看图说话效果



2、结果展示:

image.png

Transformer (5 points)

attention.py

image.png

blocks.py


image.png

test_transformer.py


image.png

Vision Transformer (5 points)


python main.py --config configs/vit_config.yaml --task train_vit

image.png

image.png

python main.py --config configs/vit_config.yaml --task predict_vit

image.png


Language Model (5 points)

python main.py --config configs/llm_config.yaml --task train_llm

image.png

image.png

python main.py --config configs/llm_config.yaml --task generate_text
image.png
--- Generated Text ---
You are all resolved to rash: they go, let him come
your good queen.

LEONTES:
Go on, go to;
You are all sensest no quarrel of.

PAULINA:
If at my just wonders than the extremes
That do sad the thee was no more behind
But such a day of Ireland told as man
As well as her dead as to make her queen:
I shall shear it so. But what say you to Catesby?

CATESBY:
My lord?

KING RICHARD III:
Send out a pursuivant at arms
To Stanley's regiment; bid him bring his power
Before sunrising, lest his son George fall
Into the blind

--- End of Generation ---


Multimodal Model (5 points)

python main.py --config configs/mllm_config.yaml --task train_mllm


image.png


image.png
示例:
--- Generating Sample Caption ---
Ground Truth: A rugby player defends the ball against a member of the other team attempting to tackle him .
Generated: The boy is sitting by a standing in front of a building .
--- End of Sample ---



--- Generating Sample Caption ---
Ground Truth: A rugby player defends the ball against a member of the other team attempting to tackle him .
Generated: A man in a white shirt plays with a camel .
--- End of Sample ---