近日,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文章
29691瀏覽量
212576 -
NVIDIA
+關注
關注
14文章
5298瀏覽量
106245 -
AI
+關注
關注
88文章
34990瀏覽量
278612
原文標題:本地部署物理 AI!一文玩轉 NVIDIA Cosmos Reason-1-7B
文章出處:【微信號:Leadtek,微信公眾號:麗臺科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
英偉達Cosmos-Reason1 模型深度解讀
基于NVIDIA Triton的AI模型高效部署實踐
如何本地部署大模型

NVIDIA Cosmos世界基礎模型平臺發布
NVIDIA發布Cosmos?平臺,助力物理AI系統發展
NVIDIA發布Cosmos平臺,加速物理AI開發
DeepSeek R1模型本地部署與產品接入實操

評論