模型概述
模型特點
模型能力
使用案例
🚀 Magma-8B模型卡片
Magma是一款多模態智能AI模型,能夠基於輸入的文本和圖像生成文本。該模型專為研究目的設計,旨在促進多模態AI領域的知識共享和研究加速,尤其專注於多模態智能AI的發展。
🚀 快速開始
要開始使用該模型,你首先需要確保已安裝transformers
和torch
,以及以下依賴項:
pip install torchvision Pillow open_clip_torch
⚠️ 請注意,你需要安裝我們定製的transformers庫:
pip install git+https://github.com/jwyang/transformers.git@dev/jwyang-v4.48.2
有關為何需要此庫的原因,請參閱此處。
然後,你可以運行以下代碼:
import torch
from PIL import Image
from io import BytesIO
import requests
from transformers import AutoModelForCausalLM, AutoProcessor
# 加載模型和處理器
dtype = torch.bfloat16
model = AutoModelForCausalLM.from_pretrained("microsoft/Magma-8B", trust_remote_code=True, torch_dtype=dtype)
processor = AutoProcessor.from_pretrained("microsoft/Magma-8B", trust_remote_code=True)
model.to("cuda")
# 推理
url = "https://assets-c4akfrf5b4d3f4b7.z01.azurefd.net/assets/2024/04/BMDataViz_661fb89f3845e.png"
image = Image.open(BytesIO(requests.get(url, stream=True).content))
image = image.convert("RGB")
convs = [
{"role": "system", "content": "You are agent that can see, talk and act."},
{"role": "user", "content": "<image_start><image><image_end>\nWhat is in this image?"},
]
prompt = processor.tokenizer.apply_chat_template(convs, tokenize=False, add_generation_prompt=True)
inputs = processor(images=[image], texts=prompt, return_tensors="pt")
inputs['pixel_values'] = inputs['pixel_values'].unsqueeze(0)
inputs['image_sizes'] = inputs['image_sizes'].unsqueeze(0)
inputs = inputs.to("cuda").to(dtype)
generation_args = {
"max_new_tokens": 128,
"temperature": 0.0,
"do_sample": False,
"use_cache": True,
"num_beams": 1,
}
with torch.inference_mode():
generate_ids = model.generate(**inputs, **generation_args)
generate_ids = generate_ids[:, inputs["input_ids"].shape[-1] :]
response = processor.decode(generate_ids[0], skip_special_tokens=True).strip()
print(response)
✨ 主要特性
- 數字與物理世界融合:Magma是首個用於多模態AI智能體的基礎模型,旨在處理虛擬和現實環境中的複雜交互!
- 多功能能力:作為單一模型,Magma不僅具備通用的圖像和視頻理解能力,還能生成目標驅動的視覺計劃和動作,適用於不同的智能體任務!
- 先進性能:Magma在各種多模態任務中取得了先進的性能,包括UI導航、機器人操作以及通用的圖像和視頻理解,特別是空間理解和推理!
- 可擴展預訓練策略:除了現有的智能體數據外,Magma還設計為可從野外的無標籤視頻中進行可擴展學習,使其具有強大的泛化能力,適合實際應用!
📦 安裝指南
要開始使用該模型,你首先需要確保已安裝transformers
和torch
,以及以下依賴項:
pip install torchvision Pillow open_clip_torch
⚠️ 請注意,你需要安裝我們定製的transformers庫:
pip install git+https://github.com/jwyang/transformers.git@dev/jwyang-v4.48.2
有關為何需要此庫的原因,請參閱此處。
💻 使用示例
基礎用法
import torch
from PIL import Image
from io import BytesIO
import requests
from transformers import AutoModelForCausalLM, AutoProcessor
# 加載模型和處理器
dtype = torch.bfloat16
model = AutoModelForCausalLM.from_pretrained("microsoft/Magma-8B", trust_remote_code=True, torch_dtype=dtype)
processor = AutoProcessor.from_pretrained("microsoft/Magma-8B", trust_remote_code=True)
model.to("cuda")
# 推理
url = "https://assets-c4akfrf5b4d3f4b7.z01.azurefd.net/assets/2024/04/BMDataViz_661fb89f3845e.png"
image = Image.open(BytesIO(requests.get(url, stream=True).content))
image = image.convert("RGB")
convs = [
{"role": "system", "content": "You are agent that can see, talk and act."},
{"role": "user", "content": "<image_start><image><image_end>\nWhat is in this image?"},
]
prompt = processor.tokenizer.apply_chat_template(convs, tokenize=False, add_generation_prompt=True)
inputs = processor(images=[image], texts=prompt, return_tensors="pt")
inputs['pixel_values'] = inputs['pixel_values'].unsqueeze(0)
inputs['image_sizes'] = inputs['image_sizes'].unsqueeze(0)
inputs = inputs.to("cuda").to(dtype)
generation_args = {
"max_new_tokens": 128,
"temperature": 0.0,
"do_sample": False,
"use_cache": True,
"num_beams": 1,
}
with torch.inference_mode():
generate_ids = model.generate(**inputs, **generation_args)
generate_ids = generate_ids[:, inputs["input_ids"].shape[-1] :]
response = processor.decode(generate_ids[0], skip_special_tokens=True).strip()
print(response)
📚 詳細文檔
模型描述
Magma是一個多模態智能AI模型,能夠根據輸入的文本和圖像生成文本。該模型專為研究目的而設計,旨在促進多模態AI領域的知識共享和加速研究,特別是多模態智能AI。該模型的主要創新在於引入了兩項技術創新:Set-of-Mark和Trace-of-Mark,並利用了大量未標記的視頻數據來學習時空定位和規劃。有關更多技術細節,請參閱我們的論文。
亮點
- 數字與物理世界:Magma是首個用於多模態AI智能體的基礎模型,旨在處理虛擬和現實環境中的複雜交互!
- 多功能能力:作為單一模型,Magma不僅具備通用的圖像和視頻理解能力,還能生成目標驅動的視覺計劃和動作,適用於不同的智能體任務!
- 先進性能:Magma在各種多模態任務中取得了先進的性能,包括UI導航、機器人操作以及通用的圖像和視頻理解,特別是空間理解和推理!
- 可擴展預訓練策略:除了現有的智能體數據外,Magma還設計為可從野外的無標籤視頻中進行可擴展學習,使其具有強大的泛化能力,適合實際應用!
訓練數據
我們的訓練數據包括:
- 通用圖像SFT數據:LLaVA-Next、InfoGrpahicVQA、ChartQA_Augmented、FigureQA、TQA、ScienceQA。
- 通用視頻SFT數據:ShareGPT4Video和LLaVA-Video。
- 教學視頻數據:Ego4d、Somethingv2、Epic-Kitchen和其他相關教學視頻。
- 機器人操作數據:Open-X-Embodiment。
- UI定位數據:SeeClick。
- UI導航數據:Mind2web和AITW。
數據收集過程涉及從公開可用的文檔中獲取信息,並精心過濾掉不良文檔和圖像。為了保護隱私,我們仔細過濾了各種圖像和文本數據源,以從訓練數據中刪除或清理任何潛在的個人數據。
更多詳細信息請參閱我們的論文。
訓練過程
預處理
除了與文本相關的預處理外,我們主要進行以下圖像和視頻預處理步驟:
- UI定位和導航數據:對於每個UI截圖,我們提取UI元素的邊界框,並應用Set-of-Mark Prompting在原始圖像上疊加數字標記。模型根據圖像和Set-of-Mark提示生成UI定位文本。
- 教學視頻數據:對於每個視頻剪輯,我們應用Co-Tracker提取網格軌跡,然後應用過濾算法去除嘈雜或靜態點。對於有相機運動的視頻,我們進一步應用單應性變換來穩定視頻剪輯。最後,我們為每個軌跡分配一個數字標記,得到一組trace-of-mark。模型根據視頻剪輯和教學文本生成trace-of-mark。
- 機器人操作數據:對於Open-X Embodiment中的機器人數據,我們提取7自由度機器人抓手狀態,並從視頻剪輯中提取trace-of-mark。對視頻剪輯應用類似的過濾和穩定步驟。模型根據視頻剪輯和教學文本生成機器人操作動作以及trace-of-mark。
完成所有這些預處理後,我們將它們與現有的文本註釋相結合,形成最終的多模態訓練數據。有關更多技術細節,請參閱我們的論文。
訓練超參數
我們在H100和MI300上使用bf16混合精度進行訓練。我們使用以下超參數進行訓練:
- 批量大小:1024
- 學習率:1e-5
- 最大序列長度:4096
- 分辨率:圖像最大為1024x1024,視頻幀最大為512x512。
- 預訓練輪數:3
評估
我們在廣泛的任務上以零樣本方式評估模型,主要是與智能體相關的任務。
測試數據、因素和指標
零樣本測試數據
我們在以下數據集上評估模型的零樣本性能:
- UI定位:ScreenSpot和VisualWebArena。
- 機器人操作:SimplerEnv和WidowX真實機器人。
- 空間理解和推理:VSR、BLINK和SpatialEval。
微調測試數據
我們在以下數據集上評估模型微調後的性能:
- UI導航:Mind2Web和AITW。
- 機器人操作:SimplerEnv和WidowX真實機器人。
- 多模態圖像理解和推理:VQAv2、GQA、MME、POPE、TextVQA、ChartQA、DocVQA。
- 多模態視頻理解和推理:Next-QA、VideoMME、MVBench。
指標
我們遵循各個數據集的評估指標進行評估。有關更多詳細信息,請參閱原始數據集。
智能體智能的評估結果
對智能體智能進行零樣本評估。我們報告了未進行任何特定領域微調的預訓練Magma的結果。Magma是唯一能夠完成完整任務範圍的模型。
模型 | VQAv2 | TextVQA | POPE | SS-Mobile | SS-Desktop | SS-Web | VWB-Ele-G | VWB-Act-G | SE-Google Robot | SE-Bridge |
---|---|---|---|---|---|---|---|---|---|---|
GPT-4V | 77.2 | 78.0 | n/a | 23.6 | 16.0 | 9.0 | 67.5 | 75.7 | - | - |
GPT-4V-OmniParser | n/a | n/a | n/a | 71.1 | 45.6 | 58.5 | - | - | - | - |
LLava-1.5 | 78.5 | 58.2 | 85.9 | - | - | - | 12.1 | 13.6 | - | - |
LLava-Next | 81.3 | 64.9 | 86.5 | - | - | - | 15.0 | 8.7 | - | - |
Qwen-VL | 78.8 | 63.8 | n/a | 6.2 | 6.3 | 3.0 | 14.0 | 0.7 | - | - |
Qwen-VL-Chat | 78.2 | 61.5 | n/a | - | - | - | - | - | - | - |
Fuyu | 74.2 | n/a | n/a | 21.2 | 20.8 | 19.2 | 19.4 | 15.5 | - | - |
SeeClick | - | - | - | 65.0 | 51.1 | 44.1 | 9.9 | 1.9 | - | - |
Octo | - | - | - | - | - | - | - | - | - | - |
RT-1-X | - | - | - | - | - | - | - | - | 6.0 | 15.9 |
OpenVLA | - | - | - | - | - | - | - | - | 34.2 | 1.1 |
Magma-8B | 80.0 | 66.5 | 87.4 | 59.5 | 64.1 | 60.6 | 96.3 | 71.8 | 52.3 | 35.4 |
注意:SS - ScreenSpot,VWB - VisualWebArena,SE - SimplerEnv
技術規格
模型架構和目標
- 語言模型:我們使用Meta LLama-3作為骨幹大語言模型。
- 視覺編碼器:我們使用由LAION團隊訓練的CLIP-ConvneXt-XXLarge作為視覺編碼器,對圖像和視頻進行標記化。
整個流程遵循多模態大語言模型的常見做法,即使用視覺編碼器對圖像和視頻進行標記化,然後將視覺標記與文本標記一起輸入到大語言模型中生成文本輸出。
計算基礎設施
我們使用Azure ML進行模型訓練。
硬件
我們的模型在兩個GPU上進行訓練:
- Nvidia H100
- AMD MI300
軟件
我們的模型基於以下軟件構建:
預期用途
直接使用
該模型以圖像和文本作為輸入,並生成文本輸出,用於以下用途:
- 圖像/視頻條件文本生成:模型可以根據輸入的文本和圖像生成文本(例如,描述、答案)。
- 視覺規劃能力:模型還可以生成視覺軌跡作為未來規劃,以完成任務(例如,將物體從一個地方移動到另一個地方)。
- 智能體能力:模型還可以生成UI定位(例如,點擊“搜索”按鈕)和機器人操作(例如,機器人抓手的7自由度)。
下游使用
該模型可以進一步針對不同的下游任務進行微調,例如:
- 圖像字幕和問答:我們可以在多模態大語言模型的框架下進一步微調該模型,以進行圖像字幕和問答任務。根據我們的實驗,該模型在這些任務上可以取得有競爭力的性能,同時具有更好的空間理解和推理能力。
- 視頻字幕和問答:我們可以在多模態大語言模型的框架下進一步微調該模型,以進行視頻字幕和問答任務。根據我們的實驗,該模型在這些任務上可以取得有競爭力的性能,同時具有更好的時間理解和推理能力。
- UI導航:我們可以針對特定的UI導航任務微調該模型,例如網頁導航或移動導航。該模型在這些任務上可以取得卓越的性能。
- 機器人操作:鑑於我們的模型作為視覺語言動作模型具有一般的智能體能力,它可以進一步針對機器人任務進行微調。微調後,我們的模型在機器人操作任務上顯著優於OpenVLA等先進模型。
偏差、風險和侷限性
請注意,該模型並非專門為所有下游用途而設計或評估。
該模型不適合部署在生產環境中。它不應在高風險場景中使用,例如軍事和國防、金融服務和關鍵基礎設施系統。
開發者在選擇用例時應考慮多模態模型的常見侷限性,並在特定下游用例中使用之前評估和緩解準確性、安全性和公平性問題。
開發者應瞭解並遵守與其用例相關的適用法律或法規(包括隱私、貿易合規法律等)。與其他多模態模型一樣,Magma可能會以不公平、不可靠或冒犯性的方式表現。
模型的輸出不反映微軟的意見。
需要注意的一些限制行為包括:
- 服務質量:該模型主要在英語文本上進行訓練。非英語語言的性能會較差。訓練數據中代表性較少的英語變體的性能可能比標準美式英語差。Magma不支持多語言使用。
- 傷害表示和刻板印象延續:這些模型可能會過度或不足地代表某些人群,抹去某些群體的代表性,或強化貶低性或負面的刻板印象。儘管進行了安全後訓練,但由於不同群體的代表性水平不同或訓練數據中反映現實世界模式和社會偏見的負面刻板印象示例普遍存在,這些侷限性可能仍然存在。
- 不適當或冒犯性內容:這些模型可能會產生其他類型的不適當或冒犯性內容,這可能使其在沒有針對特定用例的額外緩解措施的情況下不適合在敏感環境中部署。
- 信息可靠性:多模態模型可能會生成無意義的內容或編造聽起來合理但不準確或過時的內容。
開發者應應用負責任的AI最佳實踐,並負責確保特定用例符合相關法律和法規(例如隱私、貿易等)。強烈建議使用Azure AI Content Safety等具有先進防護機制的安全服務。
建議
Magma僅用於研究目的。用戶(直接用戶和下游用戶)應瞭解模型的風險、偏差和侷限性。
微調模型的推薦使用場景是在其訓練的研究環境中,即:
- 運行在計算機上的安卓模擬器,用於UI操作。
- 配備機械臂和日常物品的封閉空間,用於機器人操作。
對於UI導航任務,研究人員應確保有人在迴路中,並控制智能體系統生成的每個動作。由於模型本身無法行動,研究人員用於實際執行UI導航動作的子模塊應確保執行模型提出的UI動作不會產生意外後果。
對於機器人操作任務,在操作機械臂時,為保障人類安全可採用以下緩解策略:
- 安全區域和屏障:在機器人工作空間周圍設置物理屏障或安全區域,防止未經授權的進入。
- 緊急停止系統:為機械臂配備易於操作的緊急停止按鈕。實施故障安全機制,在緊急情況下立即停止操作。
- 安全標準和合規性:遵守工業機器人和協作機器人的既定安全標準(例如,ISO 10218、ISO/TS 15066)。
- 用戶培訓和意識:為所有在機械臂周圍工作的人員提供全面的培訓,使其瞭解機械臂的功能、安全特性和應急程序。提高對機器人操作潛在風險的認識。
📄 許可證
該模型由微軟開發,並由微軟研究院資助。該模型由微軟研究院共享,並遵循MIT許可證。
📚 引用
@misc{yang2025magmafoundationmodelmultimodal,
title={Magma: A Foundation Model for Multimodal AI Agents},
author={Jianwei Yang and Reuben Tan and Qianhui Wu and Ruijie Zheng and Baolin Peng and Yongyuan Liang and Yu Gu and Mu Cai and Seonghyeon Ye and Joel Jang and Yuquan Deng and Lars Liden and Jianfeng Gao},
year={2025},
eprint={2502.13130},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2502.13130},
}








