书生大模型第四期-InternVL 部署微调实践闯关任务 L2G4000

151 阅读4分钟

一、多模态大模型的基本原理

  1. 模态表示(Modal Representation)
    不同模态的数据通常具有异构性(例如,文本是序列化的数据,图像是像素矩阵)。为了统一处理,多模态模型首先需要将不同模态的数据转换为通用的嵌入表示:

    • 文本模态:通过预训练的语言模型(如 Transformer、GPT)生成文本嵌入。
    • 图像模态:通过卷积神经网络(如 ResNet)或视觉 Transformer(ViT)提取图像特征。
    • 音频模态:通过音频编码器(如 Wav2Vec、HuBERT)生成音频嵌入。
  2. 跨模态对齐(Cross-Modal Alignment)
    使用对齐机制在不同模态之间建立语义关联:

    • 共享嵌入空间:通过对比学习(Contrastive Learning),将不同模态的数据映射到共享的特征空间中,使得相同语义的内容在嵌入空间中靠近。

    • 对齐方式

      • 图像-文本对齐(如 CLIP):最大化图像和文本描述之间的相似度。
      • 音频-文本对齐:利用字幕或时间戳进行对齐。
  3. 融合机制(Modality Fusion)
    在需要同时处理多模态信息时,模型会融合不同模态的特征。常见的融合方式包括:

    • 早期融合(Early Fusion) :在模型的输入阶段直接融合模态特征(如拼接或加权平均)。
    • 中期融合(Intermediate Fusion) :通过多层 Transformer 等模块交互处理模态特征。
    • 晚期融合(Late Fusion) :在各模态的任务输出结果之后再进行融合。
  4. 任务处理(Task-Specific Heads)
    针对不同任务,模型会使用特定的解码头(Task Heads):

    • 分类任务:如多模态情感分析(使用线性层)。
    • 生成任务:如图像生成或文本生成(通过自回归解码器)。

二、多模态大模型的设计模式

  1. 单流(Single-Stream)架构
    将所有模态的特征统一输入到一个 Transformer 模型中处理。

    • 优点:模型结构简单,模态间交互紧密。
    • 缺点:不同模态可能有冲突,学习难度较大。
    • 示例:Unified-IO。
  2. 双流(Dual-Stream)架构
    各模态使用独立的编码器生成特征表示,然后通过交互模块(如 Cross-Attention)进行模态融合。

    • 优点:对模态特定特征的学习更充分。
    • 缺点:需要设计额外的交互模块,可能增加计算复杂度。
    • 示例:CLIP、ALIGN。
  3. 模块化设计(Modular Design)
    为每个模态设计专用模块,并通过统一框架将它们集成。

    • 示例:Flamingo 使用冻结的图像编码器与语言模型。

三、工作流程概述

以一个多模态问答任务为例:

  1. 输入阶段:接收用户输入的文本问题和相关图像。

    • 文本模态通过语言模型编码为嵌入。
    • 图像模态通过视觉模型提取特征。
  2. 跨模态对齐:将图像和文本嵌入对齐到统一空间,以建立语义关联。

  3. 模态融合:通过多层交互模块(如 Transformer)对图像和文本特征进行深度融合。

  4. 任务解码:通过生成器或分类器,生成答案或其他输出。

InternVL 是一种用于多模态任务的深度学习模型,旨在处理和理解多种类型的数据输入,如图像和文本。它结合了视觉和语言模型,能够执行复杂的跨模态任务,比如图文匹配、图像描述生成等。通过整合视觉特征和语言信息,InternVL 可以在多模态领域取得更好的表现。

image.png

按照命令行进行启动,发现踩坑了,图片全部都404

image.png 经过排查后 发现 需要在本地做一下端口映射

ssh -CNg -L 1096:127.0.0.1:1096 root@ssh.intern-ai.org.cn -p 32322

不能直接在控制台点击,手动到http://127.0.0.1:1096/

这一次 成功了,也可以正确识别出来 ✅

image.png

按照教程配置出来,成功完成训练

image.png

最后成功生成转换后的文件

image.png

微调前

image.png

image.png

微调后

我这图片不知道为什么加载不出来

image.png