BAAI/BGE-VL多模态模型部署、原理、代码详解(实现图像文本混合检索),包含BEG-VL多模态模型的本地部署详细步骤及代码原理解析

本文包含BGE-VL多模态模型的本地部署详细步骤及代码原理解析

文章目录

  • 前言
  • 一、模型下载
  • 二、计算流程解析
    • 1.BGE-VL-base/Large
    • 2.BGE-VL-MLLM-s1/s2
  • 三、总结


前言

提示:这里可以添加本文要记录的大概内容:

包含四个模型及数据集,数据集未开源,四个模型可以分别下载:
BAAI/BGE-VL多模态模型部署、原理、代码详解(实现图像文本混合检索),包含BEG-VL多模态模型的本地部署详细步骤及代码原理解析_第1张图片
其中,BGE-VL-base/Large是基于CLIP训练的模型,BGE-VL-MLLM-S1/S2是基于LLM训练的二者参数量相差较大。


一、模型下载

huggingface链接
https://huggingface.co/BAAI/BGE-VL-base
modelscope链接
https://www.modelscope.cn/models/BAAI/BGE-VL-base

二、计算流程解析

1.BGE-VL-base/Large

该模型基于CLIP,支持多模态检索任务,其中包含Base(参数量149M)和Large(参数量428M)两个模型(较小)。

根据官方提供的使用代码,模型计算主要步骤是:
①通过encode方法,生成查询数据(图像和文本)的嵌入(embedding):

with torch.no_grad():
    query = model.encode(
        images="./assets/cir_query.png",
        text="Make the background dark, as if the camera has taken the photo at night"
    )

②对候选图像生成嵌入(可以为多个,此处为2个):

candidates = model.encode(
        images=["./assets/cir_candi_1.png", "./assets/cir_candi_2.png"]
    )

③计算查询嵌入(query)和每个候选嵌入(candidates)之间的相似度(此处为2个):

scores = query @ candidates.T

④输出scores结果(以张量形式输出):
输出结果示例

2.BGE-VL-MLLM-s1/s2

模型流程与1中基本相同,并且我发现在cpu上跑速度也还可以,条件不足的话可以把输入数据移到cpu,通过以下代码:

# 将输入数据移动到 CPU
    for key in query_inputs:
        query_inputs[key] = query_inputs[key].cpu()
    for key in candidate_inputs:
        candidate_inputs[key] = candidate_inputs[key].cpu()

该模型输出结果也为张量行式,每个元素依次反映查询嵌入和每个候选嵌入的相似度得分。

三、总结

通过以上操作,即可实现BGE-VL多模态模型部署与基本使用,可以自己替换样例进行测试。

你可能感兴趣的:(python,语言模型,自然语言处理,nlp,人工智能)