当前位置: 首页 > news >正文

多模态大模型常见问题

1.视觉编码器和 LLM 连接时,使用 BLIP2中 Q-Former那种复杂的 Adaptor 好还是 LLaVA中简单的 MLP 好,说说各自的优缺点?

Q-Former(BLIP2):

  • 优点:Q-Former 通过查询机制有效融合了视觉和语言特征,使得模型能够更好地处理视觉-语言任务,尤其是在多模态推理任务中表现优秀。

  • 缺点:Q-Former 结构较为复杂,计算开销较大。

MLP(LLaVA):

  • 优点:MLP 比较简单,计算量小,易于实现,适用于一些较为简单的任务。

  • 缺点:相较于 Q-Former,MLP 在处理复杂的视觉-语言融合任务时效果较差,尤其是在推理任务中。

2.代码:实现多头自注意力

多头注意力代码实现如下:

import torch
import torch.nn.functional as F

class MultiHeadAttention(torch.nn.Module):   
     def __init__(self, embed_size, heads):        
        super(MultiHeadAttention, self).__init__()        
        self.embed_size = embed_size        
        self.heads = heads        
        self.head_dim = embed_size // heads               
        assert self.head_dim * heads == embed_size, "Embedding size must be divisible by heads"                

        self.values = torch.nn.Linear(embed_size, embed_size)       
        self.keys = torch.nn.Linear(embed_size, embed_size)        
        self.queries = torch.nn.Linear(embed_size, embed_size)        
        self.fc_out = torch.nn.Linear(embed_size, embed_size)        
   def forward(self, values, keys, query, mask):        
        N = query.shape[0]                
        value_len, key_len, query_len = values.shape[1], keys.shape[1], query.shape[1]                    
        values = values.reshape(N, value_len, self.heads, self.head_dim)        
        keys = keys.reshape(N, key_len, self.heads, self.head_dim)        
        query = query.reshape(N, query_len, self.heads, self.head_dim)                
        values = values.permute(2, 0, 1, 3)        
        keys = keys.permute(2, 0, 1, 3)        
        query = query.permute(2, 0, 1, 3)                
        energy = torch.matmul(query, keys.permute(0, 1, 3, 2))                
        if mask is not None:            
            energy = energy.masked_fill(mask == 0, float('-1e20'))                        
        attention = torch.nn.functional.softmax(energy / (self.head_dim ** (1 / 2)), dim=-1)                
        out = torch.matmul(attention, values)                
        out = out.permute(1, 2, 0, 3).contiguous().reshape(N, query_len, self.heads * self.head_dim)                
        out = self.fc_out(out)               
        return out

3、Qwen-VL的三个训练流程分别是什么,有什么作用

Qwen-VL 是一款基于视觉和语言的预训练大模型,其训练流程分为以下三个阶段:

      a.视觉-语言联合训练:使用大量的图像-文本对进行联合训练,以学习图像和文本之间的对齐。

       b.图像生成与理解训练:模型被训练以生成描述图像的文本,并理解不同的视觉任务。

      c.增强推理能力训练:进一步训练模型以增强其处理复杂推理任务(如图像中的逻辑推理)的能力。

4.了解哪些多模态大模型,简要介绍几个

常见的多模态大模型包括:

  • CLIP:已经介绍过,处理图像和文本之间的关系。

  • VisualBERT:将图像和文本的信息结合到同一个模型中,使用 BERT 作为编码器。

  • FLIP(Fused Latent Image-Text Pretraining):通过融合图像和文本特征来进行多模态预训练。

  • DALL-E:图像生成模型,通过文本描述生成图像。

目前多模态大模型的挑战在于:

  • 模型规模庞大,计算资源需求高。

  • 多模态数据处理的复杂性,如何有效地融合来自不同模态的信息。

  • 数据偏差问题,尤其是文本和图像之间的语义不一致。

相关文章:

  • 模型整合-cherry studio+mysql_mcp_server服务配置
  • Flink实战教程从入门到精通(基础篇)(一)Flink简介
  • 从PGC到AIGC:海螺AI多模态内容生成系统架构一站式剖析
  • VS010生成可由MATLAB2016调用的DLL文件方法
  • 实现MySQL的横向扩展
  • kubernetes pod控制器 DaemonSet
  • 第P8周:YOLOv5-C3模块实现
  • 【漫话机器学习系列】152.ReLU激活函数(ReLU Activation Function)
  • ARM 汇编基础
  • FPGA中串行执行方式之状态机
  • AWS CDK实战:用代码重新定义云基础设施部署
  • 基于RAG(Retrieval Augmented Generation)架构的简单问答系统的Python实现示例
  • xcode中移除安装的package dependency
  • Spring 事务传播方式
  • 解决Popwindow宽高的问题。
  • 大模型sft-数据构建和选择
  • [特殊字符] 2025蓝桥杯备赛Day7——B2117 整理药名
  • Q2 电商订单数据分析优化
  • WPF UI元素保存为图像文件
  • ip2region与express最佳实践
  • 赡养纠纷个案推动类案监督,检察机关保障特殊群体胜诉权
  • 四川内江警方通报一起持刀伤人致死案:因车辆停放引起,嫌犯被抓获
  • 河南信阳:对违规吃喝问题不遮丑不护短,露头就打、反复敲打
  • 龚正会见哥伦比亚总统佩特罗
  • “大型翻车现场”科技满满,黄骅打造现代化港口和沿海新城典范
  • 《求是》杂志发表习近平总书记重要文章《锲而不舍落实中央八项规定精神,以优良党风引领社风民风》