近日,NVIDIA 开源其物理 AI 平台NVIDIA Cosmos中的关键模型——NVIDIA Cosmos Reason-1-7B。这款先进的多模态大模型能够理解视频、进行物理推理,并规划下一步行动。本文将一步步带你在本地服务器上完成该模型的部署,并搭建一个直观的 Web 交互界面,亲身体验前沿 AI 的“思考”过程。
1NVIDIA Cosmos 平台
所谓物理 AI,即赋予机器人、无人机、辅助驾驶汽车等自主机器感知、推理并与物理世界交互的能力。开发物理 AI 始终面临两大核心挑战:
数据瓶颈:获取训练复杂模型所需的海量、高质量真实世界数据,成本高昂且难以规模化。
测试困境:在安全可控的环境中验证模型的有效性与安全性,较为困难。
NVIDIA Cosmos 专为构建物理 AI 而生。作为一个整合前沿生成式世界基础模型(WFM)先进分词器、护栏以及用于加速数据处理和管理的高效工作流的集成平台。该技术为世界模型训练提供支持,并加速智能汽车(AV)和机器人的物理 AI 开发。
为攻克物理 AI 开发难题,NVIDIA Cosmos 引入了核心策略——合成数据(Synthetic Data)。通过在NVIDIAOmniverse及其Isaac Sim模拟平台中创建高度逼真的数字孪生世界,Cosmos 能够大规模、低成本地生成用于训练和测试的结构化数据。其目标是实现“模拟到现实的零样本部署”(Sim-to-Real Zero-Shot Deployment),在模拟环境中充分训练和验证的模型,无缝、高效且安全地应用于现实世界。
NVIDIA Cosmos 并非单一模型,而是一个由多个世界基础模型(World Foundation Models)和配套工具组成的综合性平台,其三大支柱各司其职:
Cosmos Predict:根据文本、图像或视频输入,生成符合物理规律且视觉逼真的未来场景。这允许开发者在安全的虚拟环境中,无限次地测试 AI 代理的反应,避免昂贵且危险的实体实验。
Cosmos Transfer:能将低保真或非视觉输入(如分割图、CAD 模型、激光雷达点云)转换为照片般逼真的高保真视频,加速了高质量合成数据的生产效率。
Cosmos Reason:作为多模态推理模型,能够理解复杂场景,进行基于物理和因果关系的推理,并以自然语言形式输出下一步的行动建议,可称作自主系统的“大脑”。
2NVIDIA Cosmos Reason-1-7B
本文的主角Cosmos Reason-1-7B(70 亿参数),正是 Cosmos Reason 家族目前发布的两款先进多模态大语言模型之一,另一版本为 Cosmos Reason-1-56B(560 亿参数)。
Cosmos Reason-1-7B 基于“思维链”(Chain of Thoughts)推理模式,能将复杂问题层层分解,赋予 AI 系统在复杂的物理世界中进行时空感知和推理的能力。
简而言之,它能“看懂”摄像头捕捉到的视频流,结合人类的文本指令,进行深入的逻辑思考,最终生成最佳的决策或行动方案。
3实战教程:部署 Cosmos Reason-1-7B
接下来将带你完成 Cosmos Reason-1-7B 模型的本地化部署,并为其创建一个简洁的前端交互界面。整个过程分为三大核心步骤:
模型准备:从 Hugging Face Hub 下载 Cosmos-Reason1-7B 的模型权重。
后端部署:使用 vLLM 框架加载模型,以提供高性能的推理服务。
前端开发:集成 Gradio 库,创建一个用户友好的 Web 界面,便于模型交互。
注意:
你需要一块或多块性能强劲的 NVIDIA GPU 来运行此模型(部署演示中使用了 4 张NVIDIA RTX 5880 Ada);
请确保已安装 vllm、gradio、transformers、torch 等必要的 Python 库。
下面的 Python 脚本整合了上述所有步骤,可供直接参考使用。
importgradioasgr fromtransformersimportAutoProcessor fromvllmimportLLM, SamplingParams fromqwen_vl_utilsimportprocess_vision_info # --- 1. 配置模型路径 --- # 请将此路径修改为您在本地服务器上下载的模型权重文件夹路径 MODEL_PATH ="/data/Cosmos-Reason1-7B" # --- 2. 初始化vLLM引擎 --- # tensor_parallel_size 可根据您的GPU数量进行调整 llm = LLM( model=MODEL_PATH, tensor_parallel_size=4, pipeline_parallel_size=1, limit_mm_per_prompt={"image":10,"video":10}, ) # --- 3. 设置采样参数 --- sampling_params = SamplingParams( temperature=0.6, top_p=0.95, repetition_penalty=1.05, max_tokens=4096, ) # --- 4. 加载处理器 --- processor = AutoProcessor.from_pretrained(MODEL_PATH) # --- 5. 定义核心处理函数 --- defparse_model_output(generated_text): """解析模型的输出,分离思考过程和最终答案。""" think, answer ="","" # 分离标签 if" "ingenerated_text: think_split = generated_text.split("") think = think_split[0].replace("","").strip() answer_part =" ".join(think_split[1:]).strip() else: answer_part = generated_text # 分离标签 if" "inanswer_partand" "inanswer_part: answer = answer_part.split("")[1].split(" ")[0].strip() else: answer = answer_part.strip() returnthink, answer defvideo_chat(video_path, user_prompt): """处理视频和文本输入,并返回模型的推理结果。""" ifnot video_path ornot user_prompt: return"请输入视频和问题!","请输入视频和问题!" messages = [ {"role":"system","content":"You are a helpful assistant. Answer the question in the following format:your thought process your answer ."}, { "role":"user", "content": [ {"type":"text","text": user_prompt}, {"type":"video","video": video_path,"fps":4} ] }, ] # 构建Prompt 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 = {} ifimage_inputs isnotNone: mm_data["image"] = image_inputs ifvideo_inputs isnotNone: mm_data["video"] = video_inputs llm_inputs = { "prompt": prompt, "multi_modal_data": mm_data, "mm_processor_kwargs": video_kwargs, } # 生成结果 outputs = llm.generate([llm_inputs], sampling_params=sampling_params) generated_text = outputs[0].outputs[0].text # 解析并返回结果 think, answer = parse_model_output(generated_text) returnthink, answer # --- 6. 构建Gradio Web界面 --- withgr.Blocks(theme=gr.themes.Soft())asdemo: gr.Markdown("# Cosmos-Reason1-7B 视频理解Demo") gr.Markdown("上传一段视频,提出你的问题,看看AI如何“思考”和回答。") withgr.Row(): withgr.Column(scale=1): video_input = gr.Video(label="上传视频 (MP4)") prompt_input = gr.Textbox(label="请输入你的问题", lines=2, placeholder="例如:视频里的人正在干什么?他接下来最可能做什么?") submit_btn = gr.Button(" 提交", variant="primary") withgr.Column(scale=1): withgr.Accordion(" AI的思考过程(点击展开/收起)",open=False): think_output = gr.Textbox(label="Thinking Process", lines=10, interactive=False) answer_output = gr.Textbox(label=" 最终答案", lines=6, interactive=False) submit_btn.click( video_chat, inputs=[video_input, prompt_input], outputs=[think_output, answer_output] ) if__name__ =="__main__": demo.launch(server_name="0.0.0.0", server_port=7860)
4模型实测:是否能理解真实意图?
实测中拍摄了一段 MP4 格式视频作为输入:视频中,一只手正准备启动电风扇。
我们向模型提出一个微妙的问题:
Question:what is the most plausible next immediate subtask?(最可能的下一个直接子任务是什么?)
模型的回答堪称惊艳。为了更清晰地了解其思考方式,输出结果整理如下:
AI 的思考过程(摘要)
好的,我们来分析一下。用户询问手启动风扇后的下一个直接子任务。视频显示,手触摸风扇后,扇叶开始旋转,说明风扇被打开了。
既然已经打开,下一步是什么?通常,人们会检查风扇是否正常工作,比如调节风速或方向。考虑到这是一个“子任务”,下一个动作应该与风扇直接相关。
视频中的风扇底座上有指示灯,这很可能对应着不同的设置。因此,在“打开”这个宏观动作完成后,一个非常合理的、更精细化的交互就是去调整这些设置。所以,最可能的下一个子任务是调节风扇的速度。
最终答案
Adjust the fan's speed using the indicators on its base.(根据风扇底座上的指示灯调节风扇转速。)
从这个简单的例子可以看出,模型的回答已经超越了“打开风扇”这一基本预判,直接推断出更具体、更符合真实使用场景的交互动作——“调节风速”。
这表明模型不仅识别了视频中的物体(手和风扇),还深刻理解了该电器的功能属性(可调节的风速)以及精细化的操作逻辑。这种基于对物体功能的认知,准确“理解”视频中人的意图并给出高度合理预测的能力,充分展现了其在运动、人机交互以及功能逻辑关系上的强大理解与预测能力。
-
机器人
+关注
关注
213文章
30618浏览量
219682 -
NVIDIA
+关注
关注
14文章
5496浏览量
109116 -
AI
+关注
关注
89文章
38184浏览量
296963
原文标题:本地部署物理 AI!一文玩转 NVIDIA Cosmos Reason-1-7B
文章出处:【微信号:Leadtek,微信公众号:丽台科技】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
英伟达Cosmos-Reason1 模型深度解读
如何本地部署大模型
NVIDIA Cosmos世界基础模型平台发布
NVIDIA发布Cosmos™平台,助力物理AI系统发展
NVIDIA发布Cosmos平台,加速物理AI开发
行芯完成DeepSeek-R1大模型本地化部署
英伟达GTC2025亮点 NVIDIA推出Cosmos世界基础模型和物理AI数据工具的重大更新
在阿里云PAI上快速部署NVIDIA Cosmos Reason-1模型
通过NVIDIA Cosmos模型增强机器人学习
利用NVIDIA Cosmos模型训练通用机器人
NVIDIA通过全新 Omniverse库、Cosmos物理AI模型及AI计算基础设施,为机器人领域开启新篇章

如何本地部署NVIDIA Cosmos Reason-1-7B模型
评论