Cosmos 3实战:世界模型赋能智慧城市与机器人数据合成 Cosmos 3 这次带出来的关键词不是“生成视频多惊艳”而是“世界模型能不能为真实行业场景产出有用数据”。官方把重心放在了三件事上物理感知的视频生成、能够理解视频内容的视觉语言模型VLM、以及面向机器人后训练的数据合成闭环。这意味着你不仅可以让它生成一段“农场机械臂摘番茄”的视频还可以把一个智慧城市监控画面的抽象语义变成可推理、可回答、可训练的结构化数据。本文直接围绕两个实战场景展开智慧城市视频监控的 VLM 推理以及农业机器人抓取场景的合成数据生成全程按“环境准备 - 部署启动 - 模型调用 - 后训练数据组装 - 批量任务 - 坑点排查”的顺序来写。能直接上手的部分都会给出代码模板不能确定的具体显存数字和模型参数量我不会硬编。Cosmos 3 是 NVIDIA 开源世界基础模型平台Cosmos上的新一代模型产品。它做的事情从单体模型扩展成了“可服务化”的物理 AI 体系提供文生世界、图生世界World Generation也提供视频 Tokenizer 和视觉语言模型推理能力。结合后训练工作流你可以把自己的行业数据智慧城市监控视频、农业机器人的机械臂轨迹视频、自动驾驶路采数据转成训练样本也可以直接用内置 VLM 对视频内容做多轮问答。核心卖点可以概括为视频生成和视频理解统一在同一个物理世界模型体系里配套 NVIDIA NeMo、PyTorch、Docker 等主流部署工具输出适合做后训练或者机器人策略训练的合成数据服务化接口清晰适合批量任务和管线集成。本文不是单纯的模型评测也不是只有文生视频演示。我会带你看完Cosmos 3 本地化启动需要什么环境、怎么用 VLM 对一段智慧城市监控视频做推理问答中英文提示词都演示、怎么用图生世界方式扩大农业机器人数据集的场景多样性、后训练数据集的格式怎么组装以及如何用 Python 脚本批量生成样本并检查效果。如果你正在做机器人相关项目、自动监控系统或者给 VLM 找高质量训练数据这一篇值得收藏备用。1. 核心能力速览能力项说明项目类型世界基础模型平台集成视频生成、视频 Tokenizer、VLM 推理、后训练工具链主要功能文生世界、图生世界、视频理解、视觉语言问答、合成数据生成、机器人后训练数据管线典型场景智慧城市 VLM 推理、自动驾驶数据合成、农业机器人抓取数据生成、Embodied AI 训练推理方式GPU 推理数据中心级显卡优先本地小规模验证需按实际模型和显存调整视频输入支持图片、文本、视频以及视频 Tokenizer 转换后的 token 输入输出形式生成视频、视频 token 序列、VLM 文本问答结果、结构化数据记录是否支持 API支持可通过 NVIDIA NIM 微服务或本地部署的服务接口调用是否支持批量任务支持可通过 Python 脚本批量生成视频样本并组织后训练数据集适合读者机器人算法工程师、自动驾驶数据团队、VLM 微调研究者、智慧城市方案开发者许可证与合规注意数据来源需合法涉及人脸、车辆、农业地块等需确认授权生成内容不得用于侵权或误导有一点需要单独说因为 Cosmos 3 的完整并行训练和微调通常需要较大的 GPU 集群对于个人开发者来说更合适的路径是利用官方提供的容器镜像、NIM 微服务或在云端租用 GPU 实例不建议在笔记本上直接尝试跑大规模后训练。但 VLM 推理和部分小样本数据生成在配置足够的单卡或双卡环境上是可以验证的。2. 适用场景与使用边界2.1 智慧城市 VLM 推理适合做什么很多智慧城市项目已经积累了大量的摄像头视频但大多数时候这些视频只完成了“存储”和“简单回看”。要从中抽取“人群密度”“车辆逆行”“物品遗落”“夜间异常光源”等语义信息传统 CV 模型需要针对每个任务单独标注和训练。而 Cosmos 3 的 VLM 路线提供了一种更接近“人看视频后回答问题”的方式输入一段监控视频或一组帧序列通过 Prompt 让模型描述交通状态、识别异常行为输出结构化文本接后端报警或报表系统。这种模式并不是要替代所有传统感知算法而是适合做长尾事件的开放集识别给已有结构化检测结果做二次语义汇总快速生成视频内容摘要辅助人工复核。2.2 农业机器人合成数据生成解决什么问题农业机器人的数据瓶颈很典型真实果园、温室、大棚里采集数据受季节、光照、作物品种限制很难在几个月内收集到覆盖全部抓取姿态和光照条件的数据。Cosmos 3 的合成数据生成就是给这种场景补充“虚拟但物理合理”的训练样本。举例来说你要训练一个番茄采摘机械臂输入一张真实番茄藤蔓图像用图生世界模型生成不同光照、不同遮挡程度、不同成熟度的视频片段结合视频 Tokenizer 和文本描述组成后训练数据集再用这些数据对抓取模型或 VLM 进行微调。相比逐帧手工标注这种管线确实能大幅降低数据准备时间。2.3 使用边界与合规提醒合成数据不是“随便生成的假数据就能直接训练”。以下边界必须明确涉及人物面部、车牌、可识别个人身份的信息必须先做脱敏或获得明确授权农业地块、商业园区、私有设施等视频素材确认来源合法生成的合成视频如果在公开平台发布需要标明“AI 合成”或“仿真数据”模型生成的物理规律并不保证 100% 正确尤其是机械臂末端执行器与物体的接触形变需要做质量筛选后训练过程应在测试环境验证效果不要直接上生产环节特别是涉及人员安全或农用机械控制的场景。3. 环境准备与前置条件3.1 硬件与运行方式选择从公开资料看Cosmos 3 系列模型面向物理 AI 和机器人场景推理开销与视频长度、分辨率、token 数量直接相关。具体显存占用会因模型分支、输入输出长度而异。比较稳妥的做法是分两个阶段验证阶段一用 NVIDIA API 或者 NIM 微服务做小样本推理确认效果阶段二用自己的 GPU 服务器跑本地容器逐步放大批量。硬件建议按以下顺序检查至少一张支持 CUDA 的 NVIDIA 显卡优先推荐 A100、H100、L40S 等数据中心级别产品如果是个人开发者可以先租用云 GPU 实例不建议直接买卡显存大小至少满足单视频片段的短期推理完整微调通常需要多卡并行。3.2 软件依赖清单直接使用 Docker 是更省心的方式官方 Cosmos 镜像里会预装大部分依赖。你自己准备时至少需要依赖项作用版本建议NVIDIA 驱动GPU 驱动推荐 525 或更高以官方容器要求为准Docker容器运行环境20.10NVIDIA Container Toolkit让容器访问 GPU安装最新稳定版CUDAGPU 计算库优先使用镜像内置 CUDAPyTorch模型推理框架使用 NGC 镜像内置版本NGC CLI 或 API Key拉取私有模型和镜像在 NVIDIA NGC 网站生成Python 3.10运行自定义调用脚本本机或容器均可3.3 数据准备无论是智慧城市 VLM 推理还是农业机器人数据生成你都需要准备一份“可用的来源数据”智慧城市场景一段不带敏感信息的监控视频或者一组连续帧图片农业场景至少一张目标作物的真实照片用于图生世界生成文本描述建议同时准备中英文描述方便做多语言 Prompt 对照实验。如果连初始素材都没有可以先从官方示例数据开始。但对行业项目来说用自己的数据才能真正验证后训练价值。4. Cosmos 3 部署启动与 NIM 服务访问4.1 拉取 Cosmos 镜像并启动容器下面给出一个通用启动模板。实际命令需要根据你在 NGC 上看到的模型路径、镜像标签和你本地的 GPU 编号进行调整。# 登录 NGC用户名和 API Key 由你的 NGC 账号生成 docker login nvcr.io # 拉取 Cosmos 相关镜像镜像名和 Tag 以 NGC 页面为准 # 这里只展示通用结构不要照抄 docker pull nvcr.io/nvidia/cosmos/cosmos-3:v1 # 启动容器挂载数据目录 docker run -it --rm \ --gpus all \ --shm-size16g \ -v /mnt/data:/data \ -v /mnt/models:/models \ nvcr.io/nvidia/cosmos/cosmos-3:v1 \ bash启动后在容器内检查 GPU 是否可见nvidia-smi python -c import torch; print(torch.cuda.device_count(), torch.cuda.get_device_name(0))如果能看到显卡型号说明容器基础环境没有问题。如果报错找不到 CUDA 驱动多半是 NVIDIA Container Toolkit 没装好。4.2 使用 NIM 微服务方式启动推理接口NIM 微服务的好处是不用自己维护模型权重加载逻辑启动后得到一个 HTTP 服务方便接入现有系统。通用启动方式如下# 启动一个 VLM 推理 NIM 服务 # 注意端口、模型名称、镜像名称需要替换成实际可用的版本 docker run -it --rm \ --gpus all \ -p 8000:8000 \ -e NGC_API_KEY你的NGC_API_KEY \ nvcr.io/nvidia/cosmos/cosmos3-vlm-nim:v1启动后通过接口健康检查curl http://127.0.0.1:8000/v1/health如果返回正常状态说明服务已经可以接收请求。4.3 直接加载模型权重的方式如果不用 NIM也可以从 NGC 下载权重然后在 Python 里加载。下面的代码是伪结构重点在于体现“加载、推理、保存结果”的流程具体类名和函数需要以你下载的模型仓库 README 为准。# 伪代码示例实际上需要替换为 Cosmos 3 仓库的具体 API from cosmos_3 import Cosmos3VLM, Cosmos3Tokenizer model Cosmos3VLM.from_pretrained(/models/cosmos-3) tokenizer Cosmos3Tokenizer.from_pretrained(/models/cosmos-3) result model.run( video_path/data/smart_city_001.mp4, promptDescribe any abnormal event in the video., ) print(result)需要明确的是不同的模型分支VLM 推理、视频 tokenizer、世界生成对应的加载方式不同务必先阅读官方仓库说明。不要在还没有确认 API 的情况下直接跑否则容易遇到函数不存在或者参数不匹配的问题。5. 智慧城市 VLM 推理实战中英文双语 Prompt5.1 实测思路智慧城市场景的 VLM 推理最关心的不是“模型能不能看懂视频”而是“模型能不能把视频转换成可执行的结构化结果”。我在这里设计了一套比较通用的验证流程你可以在自己的数据上照看准备一小段 5 到 15 秒的城市监控视频先用中文 Prompt 理解视频再用英文 Prompt 做同样理解对比两次结果是否语义一致最后让模型输出 JSON 结构验证是否能直接对接业务系统。5.2 调用 NIM 服务的 Python 示例假设你已经启动了本地 NIM 服务监听 8000 端口。下面是一个通过 HTTP 请求调用 VLM 推理的示例import requests import json url http://127.0.0.1:8000/v1/chat/completions headers { Content-Type: application/json } payload { model: cosmos-3-vlm, video: /data/smart_city_001.mp4, messages: [ { role: user, content: 请描述这段视频中的交通状况并判断是否有异常事件。 } ], temperature: 0.2, max_tokens: 512, response_format: {type: json_object} } response requests.post(url, headersheaders, jsonpayload, timeout120) if response.status_code 200: result response.json() print(json.dumps(result, ensure_asciiFalse, indent2)) else: print(请求失败:, response.status_code, response.text)这里的video字段路径、model名称要根据你启动的 NIM 服务实际配置来调整。如果服务不接受本地视频路径改成传 base64 编码的帧序列或上传文件接口。5.3 英文 Prompt 对照实验对于双语发布或海外业务场景可以再跑一组英文 Promptpayload_en { model: cosmos-3-vlm, video: /data/smart_city_001.mp4, messages: [ { role: user, content: Analyze the traffic situation in this video. Identify whether any abnormal event occurs and return JSON. } ], temperature: 0.2, max_tokens: 512, response_format: {type: json_object} } response_en requests.post(url, headersheaders, jsonpayload_en, timeout120) print(response_en.json())这种对照实验很有价值因为很多智慧城市项目的实际需求就是中英文双语输出比如面向海外园区的安防系统或者给跨国物流园区生成多语言巡检摘要。5.4 判断成功与失败成功的标准比较容易判断返回文本与视频画面内容基本一致中文和英文回答的语义一致没有明显的虚构事件如果要求 JSON 结构化输出字段内容能被后续脚本直接读取。常见的失败原因视频太长超出模型最大帧数限制要切片分段处理Prompt 过于模糊模型只给出泛泛描述没有事件判断视频内容包含敏感信息或水印影响模型理解服务端超时需要拆分视频或者增加timeout。6. 农业机器人合成数据生成实战6.1 从单图到多场景视频农业机器人场景中最常见的数据生产路径是“图生世界”输入一张真实环境照片让 Cosmos 3 生成一段或多段符合物理规律的视频。比如你有一张温室内番茄藤蔓的图片可以通过 Prompt 控制光照、遮挡、成熟度生成多段虚拟采摘场景视频再把这些视频交给机械臂视觉模型做后训练。下面是一个模拟调用示例import requests url http://127.0.0.1:8000/v1/world/generate payload { task: image_to_video, image_path: /data/tomato_greenhouse_001.jpg, prompt: A robotic arm picking ripe tomatoes in a greenhouse, natural lighting, slight leaf occlusion, 8 seconds., negative_prompt: distorted tomato shape, broken arm, flickering, num_frames: 96, fps: 12, seed: 42 } response requests.post(url, jsonpayload, timeout180) if response.status_code 200: data response.json() video_path data.get(video_path) print(生成视频保存在:, video_path) else: print(生成失败:, response.status_code, response.text)实际模型接口的字段名不一定完全一致但核心参数逃不出这几种输入图像路径、Prompt、负向 Prompt、帧数和帧率。你可以先用一帧真实图像试生成 2 到 3 秒短视频确认画面质量后再扩大规模。6.2 批量生成多光照多姿态样本农业场景需要注意一个点真实机器人训练需要大量由多样光照、多角度、多遮挡组成的样本。单一 Prompt 生成几十段视频场景同质化很高。正确做法是把 Prompt 写成配置模板然后循环生成。例如使用一个简单的 JSON 配置{ base_image: /data/tomato_greenhouse_001.jpg, variations: [ { name: morning, prompt: A robotic arm picking tomatoes in the morning, soft sunlight, moderate dew on leaves, 8 seconds., negative_prompt: distorted tomato shape, seed: 101 }, { name: noon, prompt: A robotic arm picking tomatoes at noon, strong sunlight, clear leaf structure, 8 seconds., negative_prompt: overexposed image, blurred arm, seed: 102 }, { name: occlusion, prompt: A robotic arm picking tomatoes with partial leaf occlusion, some tomatoes hidden behind leaves, 8 seconds., negative_prompt: fully visible all objects, static scene, seed: 103 } ] }对应的批量生成脚本可以这样写import json import requests import time import pathlib with open(farm_batch_config.json, r, encodingutf-8) as f: config json.load(f) url http://127.0.0.1:8000/v1/world/generate output_root pathlib.Path(/data/synthetic_farm) output_root.mkdir(parentsTrue, exist_okTrue) for i, var in enumerate(config[variations]): payload { task: image_to_video, image_path: config[base_image], prompt: var[prompt], negative_prompt: var[negative_prompt], num_frames: 96, fps: 12, seed: var[seed] } try: resp requests.post(url, jsonpayload, timeout180) if resp.status_code 200: video_path resp.json().get(video_path) # 记录生成日志方便后续追溯 log { index: i, name: var[name], seed: var[seed], video_path: video_path, status: ok } print(json.dumps(log, ensure_asciiFalse)) else: print(f任务 {i} 失败: {resp.status_code} {resp.text}) except Exception as e: print(f任务 {i} 异常: {e}) time.sleep(1)这个脚本解决了两个工程问题一是批量任务的可复现性通过固定 seed二是日志追踪每个任务都输出状态。真正跑生产任务时建议把日志写入文件而不是只打印到终端。6.3 生成结果与后训练数据的组装合成视频生成后不能直接拿去训练模型。你还需要把视频转换成适合后训练的格式。对于 VLM 后训练来说常见格式是视频片段 文本描述的配对。一个简化的数据集条目可以是这样{ id: farm_001_morning, video: /data/synthetic_farm/farm_001_morning.mp4, instruction: Detect the target crop and estimate the grasping position., response: The target is a ripe tomato, located at the left middle area, suitable for grasping from the top-front direction. }有了这些配对就可以用 NeMo Curator 或自写脚本清洗、去重、划分训练集和验证集。后训练阶段再加载 Cosmos 3 的预训练 VLM 权重在这个小数据集上做指令微调让模型学会针对农业场景的特定输出格式。6.4 合成数据筛选批量生成不等于全量使用。生成结果里一定存在物理不合理片段机械臂穿模、番茄悬浮场景重复或镜头抖动严重目标被大面积遮挡导致难以标注。建议预留筛选步骤先用视频抽帧方式快速浏览去掉明显损坏的样本再通过 CLIP 相似度筛选文本和视频内容一致性过低的样本。这个环节虽然简单但直接影响后训练效果。7. 后训练工作流与 VLM 微调注意事项7.1 后训练不是“跑个脚本”那么简单Cosmos 3 的价值在于提供了一个从数据到微调模型的闭环底座。一个标准后训练流程大致如下准备原始数据真实视频、监控视频、农业机器人录像用 Cosmos 3 生成或扩展合成数据清洗并整理成文本标注对使用 NeMo Framework 或 PyTorch 脚本加载预训练模型配置 LoRA 或全参数微调评估微调效果部署回 NIM 服务。这个过程里最容易踩的坑是“跳过数据清洗直接训练”。合成数据里如果混入大量低质量视频模型学到的不是任务能力而是生成噪声。7.2 LoRA 与全参数微调的选择对大多数应用场景先尝试 LoRA 更稳妥。它只训练一部分参数显存占用更低迭代速度快适合智慧城市、农业机器人这类垂直领域的小规模定制。全参数微调适合你真的拥有较大训练集群、并且要改变模型基础能力的情况。LoRA 训练命令没有统一示例因为不同框架接口不同。你可以参考 NeMo Framework 的 PEFT 配置# 伪配置具体字段要按 NeMo 版本调整 model: pretrained_model_path: /models/cosmos-3-vlm trainer: max_steps: 1000 precision: bf16 peft: type: lora r: 16 alpha: 32 dropout: 0.05 data: train_path: /data/farm_train.jsonl val_path: /data/farm_val.jsonl启动训练时要重点观察 loss 是否下降、验证集指标是否同步提升。如果 loss 不断下降但验证集指标变化很小大概率是过拟合需要增加数据量或降低 LoRA rank。7.3 评估方式VLM 后训练的效果评估不能只看 loss。建议做三件事用一组固定 prompt 评测视频理解能力对比微调前后模型对农业/城市场景术语的准确率抽取 50 条验证样本人工检查输出是否结构化、是否出现幻觉。8. 资源占用与性能观察方法在没有实测数据的情况下我不会给一个精确的“占用 XX GB”结论。但可以给出观察方法和判断标准。8.1 观察显存占用在容器里跑推理时另开一个终端持续监控nvidia-smi -l 2这样每 2 秒刷新一次显存占用。重点观察加载模型后显存占用是否迅速上升输入较长视频或较大批次时显存峰值是否逼近上限推理完成后显存是否释放。如果显存不够优先降低分辨率、减少帧数、缩小 batch size。8.2 推理时间与瓶颈视频生成和 VLM 推理都属于计算密集型任务。推理时间受以下因素影响明显视频帧数越多耗时越长分辨率越高显存和计算量同时上升close-set 的 prompt 比开放问答可能更快输出 token 数量会影响响应时间。建议在小规模测试时记录一份“帧数 / 分辨率 / 耗时”对照表方便后续估算批量任务时间。8.3 进程残留与端口清理Docker 部署时如果服务异常退出端口可能无法立即释放。排查方式lsof -i :8000找到占用进程后按情况重启容器或清理进程。这一步在处理批量任务长期运行时尤其重要。9. 接口 API 与批量任务组织方式9.1 API 启动与调用如果你的 NIM 服务已经启动对外只需要暴露一个 HTTP 接口。内部可以组织成统一请求格式{ task_id: task_20250101_001, type: vlm_inference, video_path: /data/city_001.mp4, prompt: Describe traffic status, output_path: /results/task_20250101_001.json }通过这种方式你可以把批量任务的数据源、Prompt、结果输出路径统一管理起来。9.2 批量任务队列设计批量生产环境下不建议一次性并发几十个请求。一方面显存不够另一方面任务失败不好追踪。更稳妥的做法是使用队列比如 Redis Queue 或后台线程池逐个消费任务每个任务记录开始时间、结束时间、状态失败任务自动重试 2 到 3 次每次只跑一个 batch结果写入独立目录。一个简化版 Python 批量控制脚本import queue import threading import time import json task_queue queue.Queue() results [] def worker(): while True: task task_queue.get() if task is None: break try: # 这里替换成实际请求逻辑 resp call_cosmos_api(task) results.append({task: task[task_id], status: ok, result: resp}) except Exception as e: results.append({task: task[task_id], status: failed, error: str(e)}) finally: task_queue.task_done() # 启动 2 个线程 threads [threading.Thread(targetworker) for _ in range(2)] for t in threads: t.start() for item in your_task_list: task_queue.put(item) task_queue.join() with open(/data/batch_results.json, w, encodingutf-8) as f: json.dump(results, f, ensure_asciiFalse, indent2)这个结构解决了两个问题避免显存峰值过高同时也能记录失败任务。10. 常见问题与排查方法问题现象可能原因排查方式解决方案容器启动后 nvidia-smi 无 GPUNVIDIA Container Toolkit 未安装或驱动不匹配在宿主机执行 nvidia-smi重新安装 NVIDIA Container Toolkit并确认驱动版本满足容器要求拉取镜像失败NGC 未登录或 API Key 过期检查 docker login 状态重新登录 NGC并检查账号是否有 Cosmos 模型权限模型加载时显存不足显卡显存低于模型最低要求观察 nvidia-smi 峰值降低视频分辨率、减少帧数、使用更小 batch 或选择云端高显存实例VLM 回答与视频内容无关Prompt 不明确或视频被过度压缩检查输入视频分辨率、帧率、时长分段输入、降低压缩率、用更具体的 Prompt 重试中英文回答不一致Prompt 设计差异或模型对中文理解较弱对比同一语义下中英文描述统一英文指令中文结果做后处理翻译图生世界生成视频出现扭曲Prompt 负向词不够或输入图像质量差检查原始图像清晰度增加负向提示词选择清晰、无遮挡的初始图像批量任务中途卡住下游服务超时或请求队列积压查看服务日志和队列长度加大超时时间、减少并发数、增加任务重试机制端口被占用之前服务未正确退出lsof -i :端口号杀掉残留进程或换端口启动后训练 loss 下降但效果差合成数据质量不均或验证集划分问题抽样检查训练样本清洗数据、去除低质量样本、增加验证集样本量11. 最佳实践与工程建议11.1 先小规模跑通再扩展第一次接触 Cosmos 3不要直接做几百段视频的批量生成。先用一张真实图片、一个 Prompt、一个短片段跑通整个链路。确认接口、字段、输出格式都正常之后再扩展到批量任务。11.2 数据目录标准化建议按如下目录结构管理/data /raw_city /raw_farm /synthetic_farm /results /models /logs这样做的价值在于合成数据、真实数据、模型权重、日志互不干扰后续清洗和训练时不会搞混。11.3 固定随机种子合成数据生成和后训练都需要固定 seed。否则同一个 Prompt 每次生成不同视频后训练实验无法复现也很难判断模型改进到底来自数据还是来自随机性。11.4 注意授权与合规这个值得再强调一次城市监控视频如果包含行人面部信息、车牌号需要做脱敏处理农业机器人数据如果包含农场主承包地信息也要确认使用范围。发布到公开平台或用于商用项目前建议进行合规复核。11.5 保留最小可运行配置当你终于跑通一个可用的推理或生成流程立刻保存一份“最小可运行配置”包括镜像版本、启动命令、依赖版本、输入样例、输出样例。这样即使后续环境变化也可以快速恢复。12. 总结与下一步Cosmos 3 最值得尝试的点不是单独某个视频生成功能而是它把“视频生成、视频理解、后训练数据管线”放进了同一个框架里。对于智慧城市项目你可以先验证 VLM 对本地视频的理解质量对于农业机器人项目你可以先做一条“单图 - 图生世界 - 批量生成 - 数据清洗”的合成数据流水线。最先应该验证的功能是 VLM 推理接口是否能在你的环境上稳定跑通。这个功能门槛相对可控投入产出比最高。最容易踩的坑主要集中在三个地方环境依赖没配对导致 GPU 不可用、Prompt 写得太模糊导致模型输出答非所问、批量生成后没有筛选直接进入后训练导致效果变差。后续值得继续扩展的方向包括把 Cosmos 生成的合成数据接入 NeMo 做 LoRA 微调构建中英文双语的智慧城市巡检报告自动生成系统以及把农业机器人抓取场景扩展到温室、果园、大田等多环境类型。建议先把今天的验证流程跑通再决定要不要投入更重的后训练资源。