Magma:微软推出的多模态AI代理基础模型,可实现多场景代理
Magma是什么?
Magma 是微软推出的一款多模态 ai 代理基础模型,能够处理虚拟和现实环境中的复杂交互,实现图像字幕和问答、视频字幕和问答、UI导航、机器人操作等多种任务。
Magma功能特点
多模态能力:支持图像字幕和问答、视频字幕和问答、UI 导航、机器人操作等任务。
数字与物理世界的交互:能够处理虚拟和现实环境中的任务。
多功能性:单一模型具备通用的图像和视频理解能力,同时能生成目标驱动的视觉计划和动作。
先进性能:在多模态任务上表现出色,特别是在空间理解和推理方面。
可扩展的预训练策略:能够从未标记的视频中学习,具有很强的泛化能力。
Magma的技术原理
多模态预训练:结合图像、视频和动作数据,通过统一框架进行大规模预训练,学习跨模态的连接。
Set-of-Mark (SoM):标记图像中的可操作对象,帮助模型实现动作落地。
Trace-of-Mark (ToM):标记视频中物体的运动轨迹,增强时间动态理解能力。
视觉与语言结合:使用卷积网络将视觉信息编码为标记序列,与语言模型结合,生成动作或语言描述。
泛化与微调:预训练后的模型具备零样本泛化能力,可通过微调进一步提升性能。
跨任务适应:适用于多种任务(如UI导航、机器人操作、图像和视频理解),展现出强大的泛化能力。
安装与使用
克隆项目:
git clone https://github.com/microsoft/Magma.git cd Magma
安装依赖:
conda create -n magma python=3.10 -y conda activate magma pip install --upgrade pip pip install -e .
推理例子
from PIL import Image import torch from transformers import AutoModelForCausalLM, AutoProcessor model = AutoModelForCausalLM.from_pretrained("microsoft/Magma-8B", trust_remote_code=True) processor = AutoProcessor.from_pretrained("microsoft/Magma-8B", trust_remote_code=True) model.to("cuda") image = Image.open("example.jpg").convert("RGB") convs = [ {"role": "system", "content": "You are an agent that can see, talk and act."}, {"role": "user", "content": "\nWhat is in the image?"} ] prompt = processor.tokenizer.apply_chat_template(convs, tokenize=False, add_generation_prompt=True) inputs = processor(images=[image], texts=prompt, return_tensors="pt").to("cuda") with torch.inference_mode(): generate_ids = model.generate(**inputs) response = processor.decode(generate_ids[0], skip_special_tokens=True).strip() print(response)
Magma的应用领域
智能监控与安防:实时分析视频流,预测行为,提升安全监控能力。
自动驾驶:处理多模态数据,辅助自动驾驶系统。
机器人操作:指导机器人完成复杂任务,适应不同硬件。
UI导航与交互:高效完成网页或设备界面的多步骤操作。
教育与个性化学习:分析学生表现,提供定制化教学方案。
医疗诊断:结合影像和病历,辅助医生制定诊疗方案。
内容创作:结合图像生成和文本创作,提供创意灵感。
智能助手:为虚拟助手提供任务导航,指导复杂操作。
视频分析与预测:描述视频内容,预测下一步动作。
智能家居与自动化:帮助家庭机器人学习新任务,提升自动化水平。
Magma GitHub 仓库:https://github.com/microsoft/Magma
Magma项目官网:https://microsoft.github.io/Magma/
MagmaArxiv论文:https://www.arxiv.org/pdf/2502.13130