AIパーソナル・ラーニング
と実践的なガイダンス
サイバーナイフ用ドローイングミラー

メガペア:BGEによる新しいマルチモーダルベクトル埋め込みモデル

はじめに

MegaPairsはVectorSpaceLabチームによるGitHub上のオープンソースプロジェクトで、大規模なデータ合成技術によって画像-テキスト-画像検索タスクのためのマルチモーダル埋め込みモデルを生成する。このプロジェクトは、2,600万以上の異種KNNトライアッドデータセットと、BGE-VL-CLIP(ベースバージョンとラージバージョン)、BGE-VL-MLLM(S1バージョンとS2バージョン)を含むBGE-VLシリーズモデルの学習に基づいています。このうち、BGE-VL-MLLM-S1は、CIRCOゼロサンプル画像検索ベンチマーク(mAP@5)で8.1%の性能向上を示し、MMEBマルチモーダル埋め込みベンチマークでも良好な結果を示しています。コードとモデルはGitHubとHugging Faceからオープンソースで提供されており、データセットはMITライセンスの下でリリースされる予定である。

メガペア:BGE-1からの新しいマルチモーダルベクトル埋め込みモデル


 

機能一覧

  • 大規模データセットの生成マルチモーダル埋め込みモデルの学習に2,600万以上の異種KNNトリプルを提供。
  • BGE-VL-CLIP埋め込みモデル画像やテキストの埋め込み表現を生成し、効率的な検索をサポートします。
  • BGE-VL-MLLM埋め込みモデルゼロサンプル検索をサポートする高性能なマルチモーダル埋め込みを生成します。
  • ゼロサンプル検索をサポート埋め込みを生成し、学習なしで画像-テキスト検索タスクを実行します。
  • オープンソースと拡張モデルHugging Faceでは、事前に学習されたモデルを提供し、ダウンロード、使用、微調整をサポートします。

 

ヘルプの使用

MegaPairsはGitHubとHugging Faceを通じてコードとモデルを配布しており、ユーザーは素早くマルチモーダル埋め込みを生成し、検索タスクを完了することができます。以下は、BGE-VL-MLLM-S1 (Hugging Face)の公式インストラクションに基づいた、詳細なハウツーガイドです。

取得と設置

  1. GitHubリポジトリへのアクセスオープン https://github.com/VectorSpaceLab/MegaPairsプロジェクトの詳細を見る。
  2. クローン倉庫ターミナルで以下のコマンドを実行し、コードをダウンロードする:
git clone https://github.com/VectorSpaceLab/MegaPairs.git
cd MegaPairs
  1. 依存関係のインストールPython 3.10を使って仮想環境を作り、必要なライブラリをインストールする:
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows
pip install torch transformers==4.41.2 sentencepiece

ハグ顔リクエスト transformers==4.41.2 歌で応える sentencepiece.
4. ダウンロードモデルハギング・フェイスからBGE-VL-MLLM-S1を入手:

  • https://huggingface.co/BAAI/BGE-VL-MLLM-S1
  • Pythonスクリプトによる自動ダウンロード(下記参照)。

主要機能の使用

1.データセットの使用

MegaPairsデータセットは、マルチモーダル埋め込みモデルを学習するための2,600万トリプルを含むが、まだ完全にはリリースされていない。 ハグする顔 オファー

  • 取得方法公式アップデートに注目し、ダウンロードしてモデルのトレーニングや検証に使ってください。
  • データ形式(クエリ画像、テキスト記述、ターゲット画像) 埋め込み生成と検索をサポート。

2.マルチモーダル埋め込み(BGE-VL-MLLM-S1)の生成

BGE-VL-MLLM-S1は、画像やテキストの埋め込み表現を生成し、検索を完了するためのコア埋め込みモデルです。以下は公式コードです:

  • 積載モデル:
import torch
from transformers import AutoModel, AutoProcessor
model_name = "BAAI/BGE-VL-MLLM-S1"
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
model.eval()
model.cuda()  # 使用 GPU 加速
  • エンベッディングの生成と検索:
    from PIL import Image
    # 准备输入
    query_image = Image.open("./cir_query.png").convert("RGB")
    query_text = "Make the background dark, as if the camera has taken the photo at night"
    candidate_images = [Image.open("./cir_candi_1.png").convert("RGB"), Image.open("./cir_candi_2.png").convert("RGB")]
    # 处理查询数据
    query_inputs = processor(
    text=query_text,
    images=query_image,
    task_instruction="Retrieve the target image that best meets the combined criteria by using both the provided image and the image retrieval instructions: ",
    return_tensors="pt",
    q_or_c="q"
    )
    query_inputs = {k: v.cuda() for k, v in query_inputs.items()}
    # 处理候选数据
    candidate_inputs = processor(
    images=candidate_images,
    return_tensors="pt",
    q_or_c="c"
    )
    candidate_inputs = {k: v.cuda() for k, v in candidate_inputs.items()}
    # 生成嵌入并计算相似度
    with torch.no_grad():
    query_embs = model(**query_inputs, output_hidden_states=True).hidden_states[-1][:, -1, :]
    candi_embs = model(**candidate_inputs, output_hidden_states=True).hidden_states[-1][:, -1, :]
    query_embs = torch.nn.functional.normalize(query_embs, dim=-1)
    candi_embs = torch.nn.functional.normalize(candi_embs, dim=-1)
    scores = torch.matmul(query_embs, candi_embs.T)
    print(scores)  # 输出相似度得分
    
    • 結果の解釈scores はクエリ埋め込みと埋め込み候補の類似度を表し、スコアが高いほど一致度が高い。

3.BGE-VL-CLIPによる埋め込み生成

BGE-VL-CLIP(base/large)はマルチモーダル埋め込みも生成できる:

  • ロード&ラン:
    from transformers import AutoModel
    model_name = "BAAI/BGE-VL-base"
    model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
    model.set_processor(model_name)
    model.eval()
    with torch.no_grad():
    query = model.encode(images="./cir_query.png", text="Make the background dark")
    candidates = model.encode(images=["./cir_candi_1.png", "./cir_candi_2.png"])
    scores = query @ candidates.T
    print(scores)
    

4.モデルの微調整

ユーザーはデータセットを使ってモデルを微調整できる:

  • データ準備画像とテキストのペアまたはトリプルを準備します。
  • 微調整プロセス微調整されたコードが公開される。 transformers な Trainer API。
  • 糺すCIRCOまたはMMEBベンチマークを使用して効果を検証する。

注目の機能操作

ゼロサンプルの埋め込み生成と検索

BGE-VL-MLLM-S1はゼロサンプル動作をサポートしています:

  • 画像やテキストを入力し、埋め込みを生成し、学習なしで直接検索します。
  • CIRCOで8.1%のmAP@5をアップグレード。

高性能とスケーラビリティ

  • パフォーマンスMMEB 上で優れたマルチモーダル埋め込みを生成し、S2 用にさらに最適化。
  • スケーラビリティエンベッディングの品質は、データ量が増えるにつれて向上し、50万サンプルはすでに従来のモデルを凌駕しています。

ほら

  • ハードウェア要件推奨GPU(16GB以上のビデオメモリ)。
  • 依存バージョン使用 transformers==4.41.2 歌で応える sentencepiece.
  • ドキュメンテーション・サポートGitHubとHugging Faceのページをチェックしてください。
  • コミュニティ・ヘルプGitHub IssuesまたはHugging Face Discussionsで質問してください。

以上の手順で、ユーザーはマルチモーダル埋め込みを生成し、検索タスクを完了することができる。

無断転載を禁じます:チーフAIシェアリングサークル " メガペア:BGEによる新しいマルチモーダルベクトル埋め込みモデル
ja日本語