NVIDIA Cosmos现已在Hugging Face上推出,用于物理AI推理
Cosmos Reason 是一款用于物理 AI 的世界基础模型 (WFM)——其构建目的不仅是为了“看”,更是为了“推理”。该模型能够理解物理常识,在给定文本提示和输入视频的情况下,它能够思考、运行一系列思维推理过程,并生成文本提示的答案。该模型可用于评估合成视频数据,并创建带有准确字幕的更好数据集,以训练机器人和自动驾驶汽车。
在本文中,我们将探讨该模型的工作原理、构建方式以及如何使用它。
Cosmos Reason 内部解析
Cosmos Reason 采用监督式微调 (SFT) 和强化学习构建,旨在弥合多模态感知与现实世界决策之间的鸿沟。
物理 AI SFT:专注于现实世界推理。利用精选的物理交互数据集,学习物体可用性(例如,“平底锅导热”)、动作链(多步计划)和空间可行性(例如,“人不能穿墙而过”)。
具身决策的强化学习:Cosmos Reason 中长链思维推理能力使其能够以少量训练数据进行训练,并泛化到未见过的测试场景。可验证的物理 AI 奖励(如“时间之箭”)能够无需人工标注即可学习世界动态。
在常识任务上测试 Cosmos Reason
Cosmos Reason 擅长利用视频和文本理解现实世界中的物理情况,例如物体和人在动态环境中的交互方式。在 BridgeData V2、RoboVQA 和 Agibot 等基准测试中,该模型表现出强大的常识推理和态势感知能力。
在物理 AI 任务上进行微调可将基础视觉语言模型的性能提升 10% 以上,而强化学习则进一步提升 5%。平均而言,Cosmos-Reason 在关键基准测试中取得了 65.7 分的成绩,为机器人、自动驾驶汽车和具身智能体中的 AI 系统设定了高标准。
仍有改进空间:对高质量、任务特定的精选数据进行后期训练以及持续的强化学习可以进一步提升 Cosmos Reason 的性能。
数据集 | 分数 |
---|---|
常识 | 56.2 |
BridgeData V2 | 73.5 |
RoboVQA | 86.8 |
Agibot | 54.2 |
HoloAssist | 60.0 |
AV | 67.0 |
RoboFail | 62.0 |
平均 | 65.7 |
在 Hugging Face 上探索这些基准测试:nvidia/Cosmos-Reason1-Benchmark
如何使用 Cosmos Reason
您可以从 Hugging Face 下载模型检查点,并使用 GitHub 上提供的推理和后期训练脚本。
输入
输入类型:文本+视频/图像
输入格式
文本:字符串 视频:mp4 图像:jpg 输入参数
文本:一维 (1D) 视频:三维 (3D) 图像:二维 (2D) 其他与输入相关的属性
输入视频请使用 FPS=4 以匹配训练设置。在系统提示中追加“Answer the question in the following format: \nyour reasoning\n\n\n\nyour answer\n.”,以鼓励长链思维推理响应。
输出
输出类型:文本
输出格式:字符串
输出参数:文本:一维 (1D)
其他与输出相关的属性:建议使用 4096 或更多的输出最大标记数,以避免长链思维响应被截断。
我们的 AI 模型旨在和/或优化为在 NVIDIA GPU 加速系统上运行。通过利用 NVIDIA 的硬件(例如 GPU 核心)和软件框架(例如 CUDA 库),该模型实现了比仅使用 CPU 解决方案更快的训练和推理时间。
使用 Cosmos Reason 对视频输入进行推理
以下是使用 Cosmos Reason 对以下视频进行推理的代码片段
📺 视频链接: 在此下载
from transformers import AutoProcessor
from vllm import LLM, SamplingParams
from qwen_vl_utils import process_vision_info
# You can also replace the MODEL_PATH by a safetensors folder path mentioned above
MODEL_PATH = "nvidia/Cosmos-Reason1-7B"
llm = LLM(
model=MODEL_PATH,
limit_mm_per_prompt={"image": 10, "video": 10},
)
sampling_params = SamplingParams(
temperature=0.6,
top_p=0.95,
repetition_penalty=1.05,
max_tokens=4096,
)
video_messages = [
{"role": "system", "content": "You are a helpful assistant. Answer the question in the following format: <think>\nyour reasoning\n</think>\n\n<answer>\nyour answer\n</answer>."},
{"role": "user", "content": [
{"type": "text", "text": (
"Is it safe to turn right?"
)
},
{
"type": "video",
"video": "assets/sample.mp4",
"fps": 4,
}
]
},
]
# Here we use video messages as a demonstration
messages = video_messages
processor = AutoProcessor.from_pretrained(MODEL_PATH)
prompt = processor.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
image_inputs, video_inputs, video_kwargs = process_vision_info(messages, return_video_kwargs=True)
mm_data = {}
if image_inputs is not None:
mm_data["image"] = image_inputs
if video_inputs is not None:
mm_data["video"] = video_inputs
llm_inputs = {
"prompt": prompt,
"multi_modal_data": mm_data,
# FPS will be returned in video_kwargs
"mm_processor_kwargs": video_kwargs,
}
outputs = llm.generate([llm_inputs], sampling_params=sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
所有 Cosmos World 基础模型均可在 Hugging Face 上获得
Cosmos Predict 1 - 多模态世界基础模型,用于根据输入提示生成下一帧。请访问 GitHub 仓库以获取推理和后期训练脚本。
Cosmos Transfer 1 - 多控制世界基础模型,用于从结构化视频输入进行数据增强。请访问 GitHub 以获取推理和后期训练脚本。
加入我们的社区,获取定期更新、问答、直播和动手教程!