模型概述
模型特點
模型能力
使用案例
🚀 Magma-8B GGUF模型
Magma-8B GGUF模型是一個多模態智能體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智能體的基礎模型,能夠處理虛擬和現實環境中的複雜交互。
- 功能多樣:作為單一模型,不僅具備通用的圖像和視頻理解能力,還能生成目標驅動的視覺計劃和動作,適用於不同的智能體任務。
- 性能卓越:在各種多模態任務中達到了先進水平,包括UI導航、機器人操作以及通用的圖像和視頻理解,特別是在空間理解和推理方面表現出色。
- 可擴展預訓練策略:除了現有的智能體數據外,還能從大量未標記的視頻中進行可擴展學習,具有強大的泛化能力,適合實際應用。
📦 安裝指南
安裝時需確保安裝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)
📚 詳細文檔
模型生成細節
該模型使用llama.cpp在提交版本5e7d95e2
時生成。
選擇合適的模型格式
選擇正確的模型格式取決於你的硬件能力和內存限制。
BF16(Brain Float 16)—— 若支持BF16加速則使用
- 一種16位浮點格式,旨在實現更快的計算,同時保持良好的精度。
- 提供與FP32相似的動態範圍,但內存使用更低。
- 如果你的硬件支持BF16加速(請查看設備規格),則推薦使用。
- 與FP32相比,適用於高性能推理且內存佔用減少。
使用BF16的情況:
- 你的硬件具有原生BF16支持(例如,較新的GPU、TPU)。
- 你希望在節省內存的同時獲得更高的精度。
- 你計劃將模型重新量化為其他格式。
避免使用BF16的情況:
- 你的硬件不支持BF16(可能會回退到FP32並運行較慢)。
- 你需要與缺乏BF16優化的舊設備兼容。
F16(Float 16)—— 比BF16更廣泛支持
- 一種16位浮點格式,具有高精度,但取值範圍比BF16小。
- 適用於大多數支持FP16加速的設備(包括許多GPU和一些CPU)。
- 數值精度略低於BF16,但通常足以進行推理。
使用F16的情況:
- 你的硬件支持FP16但不支持BF16。
- 你需要在速度、內存使用和準確性之間取得平衡。
- 你在GPU或其他針對FP16計算優化的設備上運行。
避免使用F16的情況:
- 你的設備缺乏原生FP16支持(可能會比預期運行得慢)。
- 你有內存限制。
量化模型(Q4_K、Q6_K、Q8等)—— 用於CPU和低VRAM推理
量化可以在儘可能保持準確性的同時減小模型大小和內存使用。
- 低比特模型(Q4_K) —— 內存使用最少,但精度可能較低。
- 高比特模型(Q6_K、Q8_0) —— 準確性更高,但需要更多內存。
使用量化模型的情況:
- 你在CPU上運行推理,並且需要優化的模型。
- 你的設備VRAM較低,無法加載全精度模型。
- 你希望在保持合理準確性的同時減少內存佔用。
避免使用量化模型的情況:
- 你需要最高的準確性(全精度模型更適合)。
- 你的硬件有足夠的VRAM來支持更高精度的格式(BF16/F16)。
極低比特量化(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)
這些模型針對極端內存效率進行了優化,非常適合低功耗設備或大規模部署,其中內存是關鍵限制因素。
- IQ3_XS:超低比特量化(3位),具有極高的內存效率。
- 用例:最適合超低內存設備,即使Q4_K也太大的情況。
- 權衡:與高比特量化相比,準確性較低。
- IQ3_S:小塊大小,以實現最大內存效率。
- 用例:最適合低內存設備,當IQ3_XS過於激進時。
- IQ3_M:中等塊大小,比IQ3_S具有更好的準確性。
- 用例:適用於低內存設備,當IQ3_S過於受限的情況。
- Q4_K:4位量化,具有逐塊優化以提高準確性。
- 用例:最適合低內存設備,當Q6_K太大的情況。
- Q4_0:純4位量化,針對ARM設備進行了優化。
- 用例:最適合基於ARM的設備或低內存環境。
模型格式選擇總結表
模型格式 | 精度 | 內存使用 | 設備要求 | 最佳用例 |
---|---|---|---|---|
BF16 | 最高 | 高 | 支持BF16的GPU/CPU | 減少內存的高速推理 |
F16 | 高 | 高 | 支持FP16的設備 | 當BF16不可用時的GPU推理 |
Q4_K | 中低 | 低 | CPU或低VRAM設備 | 內存受限環境的最佳選擇 |
Q6_K | 中 | 中等 | 內存更多的CPU | 量化模型中準確性更好 |
Q8_0 | 高 | 中等 | 有足夠VRAM的CPU或GPU | 量化模型中最佳準確性 |
IQ3_XS | 非常低 | 非常低 | 超低內存設備 | 極端內存效率和低準確性 |
Q4_0 | 低 | 低 | ARM或低內存設備 | llama.cpp可針對ARM設備進行優化 |
包含的文件及詳情
Magma-8B-bf16.gguf
- 模型權重保存為BF16格式。
- 如果你想將模型重新量化為不同的格式,請使用此文件。
- 如果你的設備支持BF16加速,則為最佳選擇。
Magma-8B-f16.gguf
- 模型權重存儲為F16格式。
- 如果你的設備支持FP16,特別是當BF16不可用時,請使用此文件。
Magma-8B-bf16-q8_0.gguf
- 輸出和嵌入保持為BF16格式。
- 所有其他層量化為Q8_0。
- 如果你的設備支持BF16,並且你想要一個量化版本,請使用此文件。
Magma-8B-f16-q8_0.gguf
- 輸出和嵌入保持為F16格式。
- 所有其他層量化為Q8_0。
Magma-8B-q4_k.gguf
- 輸出和嵌入量化為Q8_0。
- 所有其他層量化為Q4_K。
- 適合內存有限的CPU推理。
Magma-8B-q4_k_s.gguf
- 最小的Q4_K變體,以犧牲準確性為代價減少內存使用。
- 最適合極低內存設置。
Magma-8B-q6_k.gguf
- 輸出和嵌入量化為Q8_0。
- 所有其他層量化為Q6_K。
Magma-8B-q8_0.gguf
- 完全Q8量化的模型,以提高準確性。
- 需要更多內存,但提供更高的精度。
Magma-8B-iq3_xs.gguf
- IQ3_XS量化,針對極端內存效率進行了優化。
- 最適合超低內存設備。
Magma-8B-iq3_m.gguf
- IQ3_M量化,提供中等塊大小以提高準確性。
- 適用於低內存設備。
Magma-8B-q4_0.gguf
- 純Q4_0量化,針對ARM設備進行了優化。
- 最適合低內存環境。
- 若追求更高準確性,可優先選擇IQ4_NL。
測試模型
如果你覺得這些模型有用:
- 如果你覺得有用,請點擊“點贊”! 幫助我測試我的支持量子安全檢查的AI網絡監控助手: 免費網絡監控器
測試方法: 選擇一種AI助手類型:
TurboLLM
(GPT-4o-mini)HugLLM
(Hugginface開源模型)TestLLM
(僅支持CPU的實驗性模型)
測試內容
我正在探索小型開源模型在AI網絡監控中的極限,具體包括:
- 針對即時網絡服務進行函數調用
- 模型可以小到什麼程度,同時仍能處理:
- 自動Nmap掃描
- 量子就緒檢查
- 網絡監控任務
TestLLM —— 當前的實驗性模型(在2個CPU線程上運行llama.cpp)
- 零配置設置
- 加載時間約30秒(推理速度慢,但無API成本)
- 尋求幫助! 如果你對邊緣設備AI感興趣,讓我們一起合作!
其他助手
- TurboLLM —— 使用gpt-4o-mini進行:
- 創建自定義cmd處理器,在免費網絡監控代理上運行.net代碼
- 即時網絡診斷和監控
- 安全審計
- 滲透測試 (Nmap/Metasploit)
- 通過登錄或下載我們集成了AI助手的免費網絡監控代理獲取更多令牌。
- HugLLM —— 最新的開源模型:
- 在Hugging Face推理API上運行
示例測試命令
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
"Create a cmd processor to .. (what ever you want)"
注意,你需要安裝免費網絡監控代理才能運行.net代碼。這是一個非常靈活和強大的功能,請謹慎使用!
模型詳情
模型描述
Magma是一個多模態智能體AI模型,可基於輸入的文本和圖像生成文本。該模型專為研究目的而設計,旨在促進多模態AI領域的知識共享和研究加速,特別是多模態智能體AI。該模型的主要創新在於引入了兩項技術創新:Set-of-Mark和Trace-of-Mark,並利用了大量未標記的視頻數據來學習時空定位和規劃。更多技術細節請參考我們的論文。
亮點
- 跨數字與物理世界:Magma是首個用於多模態AI智能體的基礎模型,能夠處理虛擬和現實環境中的複雜交互!
- 功能多樣:作為單一模型,不僅具備通用的圖像和視頻理解能力,還能生成目標驅動的視覺計劃和動作,適用於不同的智能體任務!
- 性能卓越:在各種多模態任務中達到了先進水平,包括UI導航、機器人操作以及通用的圖像和視頻理解,特別是在空間理解和推理方面表現出色!
- 可擴展預訓練策略:除了現有的智能體數據外,還能從大量未標記的視頻中進行可擴展學習,具有強大的泛化能力,適合實際應用!
智能體應用
UI導航
What's weather in Seattle? & turn on flight mode
Share and message this to Bob Steve. Click send button
機器人操作
Pick Place Hotdog Sausage
Put Mushroom Place Pot
Push Cloth Left to Right (Out-of-Dist.)
遊戲
任務:模型控制機器人收集綠色方塊。
Magma v.s. LLaVA-OneVision
Magma v.s. GPT4o-minni
模型架構

🔧 技術細節
訓練數據
我們的訓練數據包括:
- 通用圖像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},
}








