模型简介
模型特点
模型能力
使用案例
🚀 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},
}








