はじめに
NVIDIA が 2026 年 6 月 1 日に発表した Cosmos 3 Nano。前バージョン(Cosmos 2.x)では GeForce GPU での動作は困難でしたが、Cosmos 3 は diffusers 経由でインストールでき、RTX 5090(32GB)での動作が可能になりました。
検証として RTX 5090 マシンに Cosmos 3 Nano をインストールし、テキストから動画を生成するまでの過程を記録します。途中いくつか追加の設定が必要だったので、合わせて記録しておきたいと思います。
環境
| 項目 | 内容 |
|---|---|
| マシン | NVIDIA GeForce RTX 5090 32GB / Ubuntu 24.04 |
| Python | 3.11(conda 新規環境) |
| conda 環境名 | cosmos3 |
| CUDA | 13.0(Driver 580.126.09) |
Cosmos 3 と Cosmos 2.x の違い
Cosmos 2.x(Transfer / Reason)は NIM(NVIDIA Inference Microservices)コンテナとして提供されており、TRT(TensorRT)エンジンのビルドが内部で走ります。このキャリブレーションに H100 / H200 クラスのデータセンター GPU が必要だったので、2026年5月に検証した時点では RTX 5090 では実質動作しませんでした。
この度発表された Cosmos 3 Nano は diffusers / vLLM 経由で配布されており、量子化キャリブレーションが不要です。そのため GeForce GPU でも pip インストールだけで動作を確認することができました。
インストール手順
1. conda 環境の作成
依存関係の衝突を避けるため、既存の Isaac Sim 環境とは分離した conda 環境をまず作ります。
conda create -n cosmos3 python=3.11 -y
conda activate cosmos3
2. 依存パッケージのインストール
pip install transformers accelerate
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130
pip install opencv-python # python スクリプトの export_to_video() に必要
# diffusers は git 版が必要(後述)
conda run -n cosmos3 pip install "diffusers @ git+https://github.com/huggingface/diffusers.git" -q
注意(サプライチェーン): 上記はリポジトリの最新 HEAD を取得します。PyPI の安定版リリースが出たらバージョン固定(
diffusers==X.Y.Z)に切り替えることを推奨します。git 版を使い続ける場合は、実行前に huggingface/diffusers の最新コミット を確認してください。
3. HuggingFace 認証
hf auth login # HF トークンを入力
トークンスコープ: モデルのダウンロードには read(読み取り)スコープのみ のトークンで十分です。write 権限を持つトークンを使うと、HuggingFace アカウント上のリポジトリが誤操作で変更されるリスクがあります。HuggingFace トークン設定 から read 専用トークンを発行することを推奨します。
huggingface-cli は deprecated のため、hf コマンドを使います。
4. モデルのダウンロード(約 32GB)
長時間かかるため tmux 内で実行します。
tmux new -s cosmos3-dl
hf download nvidia/Cosmos3-Nano \
--local-dir /home/<username>/models/cosmos3-nano
動作確認スクリプト
最終的に動作したコードは以下の通りです。以降のセクションでなぜこの形になったのかを解説します。
# test_cosmos3.py
import os
import torch
# フラグメンテーション対策(torch import 前に設定)
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True"
from diffusers import Cosmos3OmniPipeline
from diffusers.utils import export_to_video
pipe = Cosmos3OmniPipeline.from_pretrained(
"/home/<username>/models/cosmos3-nano",
torch_dtype=torch.bfloat16,
enable_safety_checker=False, # 検証環境のみ可。公開サービスでは cosmos_guardrail を有効化すること
)
pipe.enable_sequential_cpu_offload() # サブモジュール単位で逐次 CUDA 移動
result = pipe(
prompt='{"text": "A robotic arm picking up a red cube on a table"}',
num_frames=49,
height=480,
width=640,
num_inference_steps=20,
guidance_scale=6.0,
generator=torch.Generator(device="cuda").manual_seed(42),
)
export_to_video(result.video, "cosmos3_test.mp4", fps=24)
print("完了: cosmos3_test.mp4 に保存されました")
python test_cosmos3.py
エラーと解決策
エラー 1: diffusers の PyPI 安定版に Cosmos3OmniPipeline が存在しない
ImportError: cannot import name 'Cosmos3OmniPipeline' from 'diffusers'
Cosmos3OmniPipeline は 2026 年 6 月時点で PyPI の安定版に未収録です。git 版をインストールします。
conda run -n cosmos3 pip install "diffusers @ git+https://github.com/huggingface/diffusers.git" -q
注意: このコマンドはリポジトリの最新 HEAD を取得します。インストール手順 2 の注意書きも参照してください。
エラー 2: device_map="auto" が未対応
NotImplementedError: The 'auto' device is not supported.
Supported strategies are: balanced, cuda, cpu
Cosmos3OmniPipeline は device_map="auto" をサポートしていません。device_map="balanced" に変更します。ただし、これも後続のエラー(エラー 4)を引き起こすため最終的には別の方法を取ります。
エラー 3: cosmos_guardrail が未インストール
ImportError: cosmos_guardrail is not installed.
Please install it with: pip install cosmos_guardrail
Safety Checker はオプション機能です。pip install cosmos_guardrail でインストールするか、from_pretrained() に enable_safety_checker=False を追加してスキップします。
pipe = Cosmos3OmniPipeline.from_pretrained(
"...",
torch_dtype=torch.bfloat16,
enable_safety_checker=False, # ← 追加
)
重要(Safety Checker について):
enable_safety_checker=Falseは ローカル検証環境でのみ 使用してください。Safety Checker は暴力・有害コンテンツなどの生成を抑止する機能です。不特定多数のユーザーが入力できるサービスや公開 API として利用する場合は、必ずcosmos_guardrailをインストールして有効化してください。
エラー 4: device_map="balanced" でデバイス不一致
RuntimeError: Input type (CUDABFloat16Type) and weight type (CPUBFloat16Type) should be the same
device_map="balanced" は一部の重みを CPU に配置しますが、入力テンソルは CUDA のまま → デバイス不一致になります。
device_map を削除し、代わりに enable_model_cpu_offload() を使います。各コンポーネントを推論時だけ CUDA に移動し、終わったら CPU に戻すため、デバイスが常に一致します。
# from_pretrained から device_map を削除
pipe = Cosmos3OmniPipeline.from_pretrained("...", torch_dtype=torch.bfloat16, ...)
pipe.enable_model_cpu_offload() # ← 追加
エラー 5: enable_model_cpu_offload() でも VRAM 不足
torch.OutOfMemoryError: CUDA out of memory.
Tried to allocate 1.16 GiB. GPU 0 has a total capacity of 31.87 GiB ...
472.19 MiB is free.
enable_model_cpu_offload() はパイプライン内コンポーネント単位でオフロードします。しかし Cosmos 3 Nano の Transformer だけで 29GB 超を使うため、コンポーネント単位では粒度が粗すぎます。
enable_sequential_cpu_offload() はさらに細かいサブモジュール単位で逐次 CUDA に移動するため、ピーク VRAM を大幅に削減できます。加えて、メモリフラグメンテーション対策として PYTORCH_CUDA_ALLOC_CONF を設定します(torch import 前に設定する必要があります)。
import os
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True" # ← import 前
import torch
from diffusers import Cosmos3OmniPipeline
pipe = Cosmos3OmniPipeline.from_pretrained(...)
pipe.enable_sequential_cpu_offload() # ← model_cpu_offload から変更
補足: Xorg などの GUI プロセスが GPU メモリを 1.3GB 程度占有します。VRAM がギリギリの場合はこれらを終了してから実行するといいです。
エラー 6: export_to_video() で OpenCV が見つからない
ImportError: export_to_video requires the OpenCV library but it is not installed.
conda run -n cosmos3 pip install opencv-python -q
結果
上記のエラーを踏み越えた末、RTX 5090(32GB)上でテキストプロンプトから動画(MP4)の生成に成功しました。VRAM はピーク時でも収まりました。試しに二つのプロンプトを実行してみました。
A robotic arm picking up a red cube on a table

A robot arm picking up a small object from a conveyor belt in a factory setting

これは、雰囲気はありますけど詳細なところは調整が必要ですね😅
まとめ
Cosmos 2.x(NIM)が GeForce で動かない理由は TRT エンジンのキャリブレーションにあります。Cosmos 3 はこの制約を回避し、diffusers でインストールできるようになったことで、GeForce GPU を持つ個人・中小規模の開発者にも選択肢が広がりました。
今回のテストは動作検証が主な目的で、プロンプト検証は深く入らなかったので、サンプルスクリプトにある1行程度のプロンプトではさすがに実用向きとはいえない出力でした。ロボット向けのシナリオ(ピッキング・工場環境)でどこまで使えるかは、プロンプト実験を重ねていく必要がありそうです。また、Image-to-Video モードの検証も必要ですね。
でも、Cosmos がどのような結果を出力するかを手元で確認できたのは大きな収穫でした。
応用時の注意:ユーザー入力を受け付ける場合
本記事のサンプルコードはプロンプトをハードコードしており、そのままでは問題ありません。ただし、このコードを改造して外部からのユーザー入力をプロンプトに渡す場合は、プロンプトインジェクション(悪意あるプロンプトによるモデルの悪用)への対策が必要です。
- ユーザー入力は長さ・文字種を制限する
- Safety Checker(
cosmos_guardrail)を有効化する - 生成コンテンツをサービス公開前にモデレーションする
参考
- nvidia/Cosmos3-Nano — HuggingFace
- huggingface/diffusers — GitHub
- PyTorch
enable_sequential_cpu_offload()ドキュメント
