Infimm Zephyr
モデル概要
モデル特徴
モデル能力
使用事例
🚀 InfiMM
InfiMMは、Flamingoアーキテクチャにインスパイアされており、独自の学習データと多様な大規模言語モデル(LLM)を持つことで際立っています。このアプローチにより、InfiMMはFlamingoの核心的な強みを維持しながら、強化された機能を提供することができます。この分野で最初のオープンソース版として、InfiMMはコミュニティの協力により、アクセシビリティと適応性に優れています。これはFlamingoの模倣に留まらず、視覚言語処理における革新です。
当社のモデルは、DeepMindによる論文「Flamingo: A Large-scale Visual Language Model for Multimodal Understanding」で報告された結果を再現する別の試みです。以前のオープンソースの試み(OpenFlamingo と IDEFIC)と比較して、InfiMMはより柔軟なモデルを提供し、幅広いアプリケーションが可能です。特に、InfiMMは最新のLLMモデルを視覚言語モデル(VLM)分野に統合し、異なる規模とアーキテクチャのLLMの影響を明らかにします。
なお、InfiMMは現在ベータ版であり、継続的に改善を行っています。
🚀 クイックスタート
以下のコードを使用して、ベースモデルを開始します。
import torch
from transformers import AutoModelForCausalLM, AutoProcessor
processor = AutoProcessor.from_pretrained("Infi-MM/infimm-zephyr", trust_remote_code=True)
prompts = [
{
"role": "user",
"content": [
{"image": "assets/infimm-logo.webp"},
"Please explain this image to me.",
],
}
]
inputs = processor(prompts)
# use bf16
model = AutoModelForCausalLM.from_pretrained(
"Infi-MM/infimm-zephyr",
local_files_only=True,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
).eval()
inputs = inputs.to(model.device)
inputs["batch_images"] = inputs["batch_images"].to(torch.bfloat16)
generated_ids = model.generate(
**inputs,
min_generation_length=0,
max_generation_length=256,
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(generated_text)
✨ 主な機能
InfiMMは、Flamingoアーキテクチャを採用し、EVA CLIPを視覚エンコーダーとして利用し、LLaMA2、Vicuna、Zephyrを言語モデルとして使用しています。視覚と言語のモダリティは、クロスアテンションモジュールを介して接続されています。
📦 インストール
READMEにインストール手順に関する具体的な内容が記載されていないため、このセクションをスキップします。
💻 使用例
基本的な使用法
import torch
from transformers import AutoModelForCausalLM, AutoProcessor
processor = AutoProcessor.from_pretrained("Infi-MM/infimm-zephyr", trust_remote_code=True)
prompts = [
{
"role": "user",
"content": [
{"image": "assets/infimm-logo.webp"},
"Please explain this image to me.",
],
}
]
inputs = processor(prompts)
# use bf16
model = AutoModelForCausalLM.from_pretrained(
"Infi-MM/infimm-zephyr",
local_files_only=True,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
).eval()
inputs = inputs.to(model.device)
inputs["batch_images"] = inputs["batch_images"].to(torch.bfloat16)
generated_ids = model.generate(
**inputs,
min_generation_length=0,
max_generation_length=256,
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(generated_text)
高度な使用法
READMEに高度な使用法のコード例が記載されていないため、このセクションをスキップします。
📚 ドキュメント
モデルの詳細
属性 | 详情 |
---|---|
開発者 | 中国科学院自動化研究所とByteDance |
モデルタイプ | 視覚言語モデル(VLM) |
言語 | 英語 |
大規模言語モデル(LLMs) | Zephyr、LLaMA2-13B、Vicuna-13B |
ビジョンモデル | EVA CLIP |
言語(NLP) | 英語 |
ライセンス | ライセンスセクションを参照 |
モデルファミリー
当社のモデルはいくつかの異なるモデルで構成されています。詳細は以下の通りです。
モデル | 大規模言語モデル(LLM) | ビジョンエンコーダー | 命令微調整(IFT) |
---|---|---|---|
InfiMM-Zephyr | Zehpyr-7B-beta | ViT-L-336 | いいえ |
InfiMM-Llama-13B | Llama2-13B | ViT-G-224 | いいえ |
InfiMM-Vicuna-13B | Vicuna-13B | ViT-E-224 | いいえ |
InfiMM-Zephyr-Chat | Zehpyr-7B-beta | ViT-L-336 | はい |
InfiMM-Llama-13B-Chat | Llama2-13B | ViT-G-224 | はい |
InfiMM-Vicuna-13B-Chat | Vicuna-13B | ViT-E-224 | はい |
デモ
近日公開予定です。
学習の詳細
当社はモデルを学習するために3つの段階を採用しています:事前学習(PT)、マルチタスク学習(MTT)、および命令微調整(IFT)。各段階の詳細な設定については、以下の表を参照してください。事前学習データにはかなりのノイズがあるため、より高品質なデータを組み込むことでモデルの精度を向上させることを目指しました。マルチタスク学習(MTT)フェーズでは、多様なデータセットから大量の学習データを利用しました。ただし、これらのデータの回答は主に単語またはフレーズで構成されていたため、モデルの会話能力は限られていました。したがって、第3段階では、大量の画像テキスト対話データ(llava665k)を導入して、モデルの命令を微調整しました。
事前学習(PT)
IDEFICS で使用されている類似の学習手順に従っています。
モデルは、画像テキストペアと非構造化マルチモーダルウェブドキュメントの混合物で学習されます。すべてのデータは公開ソースから取得されています。多くの画像URLリンクが期限切れになっているため、一部のサンプルのみをダウンロードすることができます。低品質のデータをフィルタリングした結果、以下のデータを使用しました。
データソース | データの種類 | ソース内のトークン数 | ソース内の画像数 | サンプル数 | エポック数 |
---|---|---|---|---|---|
OBELICS | 非構造化マルチモーダルウェブドキュメント | - | - | 101M | 1 |
MMC4 | 非構造化マルチモーダルウェブドキュメント | - | - | 53M | 1 |
LAION | 画像テキストペア | - | 115M | 115M | 1 |
COYO | 画像テキストペア | - | 238M | 238M | 1 |
LAION-COCO | 画像テキストペア | - | 140M | 140M | 1 |
PMD* | 画像テキストペア | - | 20M | 20M | 1 |
*PMDは、13BのLLMを持つモデルでのみ使用され、7BのZephyrモデルでは使用されません。
画像とテキストが交互に並ぶサンプルの事前学習中には、マスクされたクロスアテンションを適用しますが、Flamingoのように画像のアテンションを前のテキストまたは後のテキストに0.5の確率で切り替えることは厳密には行っていません。
以下のハイパーパラメータを使用しています。
カテゴリ | パラメータ | 値 |
---|---|---|
パーシーバーリサンプラー | レイヤー数 | 6 |
潜在変数の数 | 64 | |
ヘッド数 | 16 | |
リサンプラーヘッド次元 | 96 | |
学習 | シーケンス長 | 384 (13B) / 792 (7B) |
有効バッチサイズ | 40*128 | |
サンプルあたりの最大画像数 | 6 | |
重み減衰 | 0.1 | |
オプティマイザ | Adam(0.9, 0.999) | |
勾配累積ステップ | 2 | |
学習率 | 初期最大 | 1e-4 |
減衰スケジュール | 一定 | |
ウォームアップステップ率 | 0.005 | |
大規模最適化 | 勾配チェックポインティング | False |
精度 | bf16 | |
ZeRO最適化 | ステージ2 |
マルチタスク学習(MTT)
ここでは、mix_cap_vqaを使用して、COCOキャプション、TextCap、VizWizキャプション、VQAv2、OKVQA、VizWiz VQA、TextVQA、OCRVQA、STVQA、DocVQA、GQA、およびScienceQA-imageからの混合学習セットを表しています。キャプションの場合、質問の前に「Please describe the image.」などの接頭辞を追加します。また、QAの場合、「Answer the question using a single word or phrase.」を追加します。具体的には、VizWiz VQAの場合、「When the provided information is insufficient, respond with 'Unanswerable'. Answer the question using a single word or phrase.」を使用します。一方、ScienceQA-imageの場合、「Answer with the option's letter from the given choices directly.」を使用します。
命令微調整(IFT)
命令微調整段階では、最近公開された LLaVA-MIX-665k を使用しています。
以下のハイパーパラメータを使用しています。
カテゴリ | パラメータ | 値 |
---|---|---|
パーシーバーリサンプラー | レイヤー数 | 6 |
潜在変数の数 | 64 | |
ヘッド数 | 16 | |
リサンプラーヘッド次元 | 96 | |
学習 | シーケンス長 | 384 (13B) / 792 (7B) |
有効バッチサイズ | 64 | |
サンプルあたりの最大画像数 | 6 | |
重み減衰 | 0.1 | |
オプティマイザ | Adam(0.9, 0.999) | |
勾配累積ステップ | 2 | |
学習率 | 初期最大 | 1e-5 |
減衰スケジュール | 一定 | |
ウォームアップステップ率 | 0.005 | |
大規模最適化 | 勾配チェックポインティング | False |
精度 | bf16 | |
ZeRO最適化 | ステージ2 |
IFT中は、事前学習と同様に、会話ベースのLLM(VicunaとZephyr)の場合、ViTとLLMを凍結したままにしています。Llamaモデルの場合、IFT段階中にLLMを学習可能な状態にしています。また、学習サンプルを処理するためにチャットテンプレートを適用しています。
評価
事前学習評価
事前学習されたモデルを以下の下流タスクで評価します:画像キャプショニングとVQA。また、IDEFICS との結果も比較しています。
モデル | ショット数 | COCO CIDEr | Flickr30K CIDEr | VQA v2 精度 | TextVQA 精度 | OK-VQA 精度 |
---|---|---|---|---|---|---|
IDEFICS-9B | 0 | 46 | 27.3 | 50.9 | 25.9 | 38.4 |
4 | 93 | 59.7 | 55.4 | 27.6 | 45.5 | |
IDEFICS-80B | 0 | 91.8 | 53.7 | 60 | 30.9 | 45.2 |
4 | 110.3 | 73.7 | 64.6 | 34.4 | 52.4 | |
InfiMM-Zephyr-7B | 0 | 78.8 | 60.7 | 33.7 | 15.2 | 17.1 |
4 | 108.6 | 71.9 | 59.1 | 34.3 | 50.5 | |
InfiMM-Llama2-13B | 0 | 85.4 | 54.6 | 51.6 | 24.2 | 26.4 |
4 | 125.2 | 87.1 | 66.1 | 38.2 | 55.5 | |
InfiMM-Vicuna13B | 0 | 69.6 | 49.6 | 60.4 | 32.8 | 49.2 |
4 | 118.1 | 81.4 | 64.2 | 38.4 | 53.7 |
IFT評価
分析では、MLLMを評価するための2つの主要なベンチマークに焦点を当てています:1)多肢選択質問応答(QA)と2)オープンエンド評価。視覚質問応答(VQA)やText-VQAなどのタスクの評価指標は、正確な回答の一致に過度に敏感であることがわかりました。このアプローチは、モデルが同義語であるが技術的に正しい応答を提供する場合に誤解を招く可能性があります。したがって、これらの指標は、より正確な評価のために比較から除外されています。評価結果は以下の表に示されています。
モデル | ScienceQA-Img | MME | MM-VET | InfiMM-Eval | MMbench | MMMU-Val | MMMU-Test |
---|---|---|---|---|---|---|---|
Otter-9B | - | 1292/306 | 24.6 | 32.2 | - | 22.69 | - |
IDEFICS-9B-Instruct | 60.6 | -/- | - | - | - | 24.53 | - |
InfiMM-Zephyr-7B | 71.1 | P: 1406 C:327 |
32.8 | 36.0 | 59.7 | 39.4 | 35.5 |
InfiMM-Llama-13b | 73.0 | P: 1444.5 C: 337.6 |
39.2 | 0.4559/0.414 | 66.4 | 39.1 | 35.2 |
InfiMM-Vicuna-13B | 74.0 | P: 1461.2 C: 323.5 |
36.0 | 40.0 | 66.7 | 37.6 | 34.6 |
🔧 技術詳細
READMEに技術的な実装の詳細が記載されている内容が50文字以上あり、具体的な技術説明があるため、このセクションを表示します。技術的な内容は「学習の詳細」セクションに含まれています。
📄 ライセンス
READMEにライセンスに関する具体的な内容が記載されていないため、このセクションをスキップします。








