nvidia-cosmos-video について
NVIDIA Cosmosで動画の世界状態を生成・シミュレーションする開発者や研究者向けのガイドです。生成、予測、構造制御、推論の用途に応じてモデル、成果物、実行環境を選び、各インターフェースの違いを整理します。
主な機能
- 01タスクに応じてCosmosモデルを選択
- 02生成、予測、制御の用途を区別
- 03オープンチェックポイントとNIMを比較
- 04実行環境ごとのリクエスト仕様を解説
活用シーン
- 01テキストや画像から動画を生成
- 02初期動画から後続状態を予測
- 03動画の構造を保って外観や環境を変更
- 04セルフホストNIMのリクエストを準備・検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ calesthio/ generative-media-skills --skill nvidia-cosmos-videoインストール後、Claude Code で/nvidia-cosmos-videoを入力して読み込まれたか確認します。
同梱ファイルEVAL.md
詳細
NVIDIA Cosmos の動画
Cosmos は世界生成・世界シミュレーションシステムとして使用し、物理法則の証明として扱わないでください。タスク、成果物、ランタイムをまとめて選択してください。名称、スキーマ、ライセンス、パラメーター数、ハードウェアに関する記述は、利用するサーフェスによって異なります。
このガイドは、2026-07-10 に NVIDIA の一次リポジトリ、モデルカード、NIM ドキュメント、ライセンス、技術レポートを確認して作成しています。ダウンロード、デプロイ、追加学習、サービングを行う直前に、リンク先のモデルカード、リリースノート、サポートマトリックス、同梱ライセンスをすべて再確認してください。
ファミリーとタスクに応じた選択
| ファミリー/成果物 | 機能 | 入力と出力 | ステータス/範囲 |
|---|---|---|---|
Cosmos 3 Generator (Cosmos3-Nano, Cosmos3-Super) | 汎用のオムニモーダル世界生成。テキスト/画像から動画を生成し、対応するオープンランタイムでは動画、音声、アクションの各モードにも対応 | 完全なオープンチェックポイントのモデルカードには、テキスト/画像/動画/音声/アクションの入力と、画像/動画/音声/アクションの出力が記載されています | 最新のオープンファミリー。2026-05-31 にリリース。メディア生成には Generator を使用してください。別製品の Reasoner はテキスト推論を行うもので、動画を生成しません |
| Cosmos3-Super-Image2Video | 画像から動画を生成する専用チェックポイント | 画像 1 枚 + テキスト → 動画 | Nano/Super とこの特化モデルを、互換性のあるモデルとして扱わないでください |
| Cosmos-Predict2.5 2B/14B | 将来の世界の予測。Text2World/Image2World/Video2World を統合 | テキストに加え、任意で最初の画像/動画を入力。一部のバリアントはアクションやマルチビュー入力を使用 | 現行の Predict2.5 リポジトリ。2B と 14B の事前学習済み/追加学習済みベースモデル、蒸留モデル、ドメイン別チェックポイントは、それぞれ機能が異なります |
| Cosmos-Transfer2.5-2B | 構造制御を用いた世界間変換 | ソース RGB 動画 + プロンプト + エッジ/深度/セグメンテーション/視覚的ぼかし制御 → 変換後の動画 | 現行の制御モデル。Sim2Real/Real2Real で構造を維持する場合に使用し、制約のないテキストから動画への生成には使用しないでください |
| Predict2 / Predict1 / Transfer1 | 旧世代のファミリー | テキスト/画像/動画/制御の入出力仕様はさまざま | Predict2 リポジトリはアーカイブされており、Predict2.5 への移行を明示的に推奨しています。Predict1 は引き続き NIM で利用できます。全製品共通の公開 EOL 日は確認できていません。正確な成果物にそう記載されていない限り、未サポートではなく旧世代/レガシーと表現してください |
| Cosmos Reason, Embed, Tokenizer, Curator, Evaluator | 推論、埋め込み、圧縮/データ/評価 | 動画生成エンドポイントではありません | Cosmos という名称が付いているだけで、動画生成リクエストをこれらに振り分けないでください |
Cosmos 3 のサイズ表記は相互に置き換えられません
- Hugging Face のモデルカードでは、完全なオムニチェックポイントは 16B Nano および 64B Super として数えられています。
cosmos3-generatorNIM では、生成経路は 8B nano および 32B super としてパッケージ化されており、NIM_MODEL_SIZE=nano|superで選択します。- 正確な成果物とサーフェスを記録してください。片方の数を使ってもう片方を「訂正」したり、必要なメモリが同じだと仮定したりしないでください。
本番環境向けの経路を選ぶ
| ニーズ | 推奨される経路 | 理由 |
|---|---|---|
| 新規の一般的なテキスト/画像から動画への生成 | Cosmos 3 Generator。開発には Nano を使用し、品質を確認して容量の承認を得た後にのみ Super を検討します | 現行の汎用ファミリーです。NIM は nano/super で同じ T2V/I2V リクエスト形式を公開しています |
| 初期動画から将来の状態を予測する | Predict2.5 Video2World | 仕様で動画による条件付けとスライディングウィンドウによる継続を明示的に受け付けています |
| ドメイン、天候、素材、外観を変更しながらジオメトリを維持する | Transfer2.5 | エッジ/深度/セグメンテーション/ぼかしの制御で構造を直接指定できます |
| 7 台のカメラによる AV またはロボットのマルチビュー | 対応する Predict2.5/Transfer2.5 の特化型チェックポイント | 汎用の単一ビュー用チェックポイントでは、プロンプトだけでキャリブレーション済みのマルチビューデータを生成できません |
| アクション条件付きのロールアウト | 対応する Predict2.5 ロボット/アクション、または Cosmos 3 対応エンボディメント | アクション次元、正規化、カメラビュー、チェックポイントは、エンボディメントと正確に一致している必要があります |
| 同期された音声の生成 | 音声モジュールを含む Cosmos 3 のオープンな Framework/Diffusers/vLLM-Omni 経路 | 現行の Cosmos3 Generator NIM /v1/infer 仕様は、動画のみの T2V/I2V を記載しています。オープンランタイム向けの音声フィールドを送信しないでください |
| テキスト分析、グラウンディング、計画 | Cosmos3-Reasoner または Cosmos-Reason2 | 専用の VLM/NIM であり、Generator の代替にはなりません |
ランタイムの仕様を分けて管理する
オープンチェックポイントとリポジトリ
- 研究、決定論的なリビジョンの固定、ローカルでのデータ管理、追加学習、特化型バリアントに適しています。
- Hugging Face モデルにはアクセス制限がある場合があります。ライセンスへの同意とアカウント/連絡先情報の共有は、ダウンロード手順の一部です。承認済みの不変キャッシュを指定しない場合、初回推論時にチェックポイントが自動ダウンロードされることがあります。
- 40 文字の Hugging Face コミットリビジョンまたは不変のローカルスナップショット、リポジトリのコミット/タグ、依存関係のロックファイル、コンテナダイジェストを固定します。本番環境の記録では、変更可能な
mainやlatestを決して使用しないでください。 - 事前取得後は、不変のスナップショットパスと
local_files_only=Trueを使用し、対応環境ではHF_HUB_OFFLINE=1を設定します。独立したコードレビューを実施し、正確なコミットを固定していない限り、trust_remote_codeを有効にしないでください。
セルフホスト型 NVIDIA NIM
- NIM は
POST /v1/inferで動作する、コンテナ化された同期 HTTP サービスです。base64 MP4(b64_video)を含む JSON を返します。NIM の出力 MP4 は VP9 として記載されています。 - モデルファミリーごとに専用のコンテナがあります。現行のリリースノートには、
cosmos-predict1-7b-*、cosmos-transfer2.5-2b、cosmos-predict2.5-2b、cosmos3-generatorが記載されています。 - ハードウェアに基づいて NIM が最適化プロファイルを選択します。
NIM_MODEL_PROFILEまたはNIM_TAGS_SELECTORで固定することもできます。/v1/metadata、利用可能な場合は/v1/version、イメージタグ とダイジェスト、有効なプロファイル、チェックポイント参照、精度、ガードレール設定を記録してください。 - コンテナの起動時に NGC からモデルアーティファクトがダウンロードされる場合があります。別途承認を得てキャッシュをウォームアップし、検証したうえで、選択したコンテナが対応している場合は
NIM_DISABLE_MODEL_DOWNLOAD=1を使用して、管理されたオフライン環境で起動してください。 - NIM ソフトウェア/コンテナの使用には、チェックポイントおよびコンポーネントの通知に加えて、
/opt/nim/LICENSEに含まれる正確な契約が適用されます。Developer Program による NIM の利用は、プロトタイピング/研究/開発/テストを対象としています。本番環境向けのライセンス/サポートには、別途 NVIDIA AI Enterprise またはプロバイダーとの契約が必要です。
NVIDIA ホスト型プレビュー API/API カタログ
build.nvidia.comの利用可否、エンドポイント URL、認証、クォータ、価格、保持期間、処理リージョン、SLA は、アカウントと日付によって異なります。サインイン後にカタログで生成されたエンドポイント/スキーマと最新の規約のみを使用してください。モデル名から URL を推測して作成しないでください。- Cosmos3 Nano のカタログカードには、ホスト型プレビューの出力に安全ガードレールと SynthID が含まれると記載されています。この主張をローカルのオープンチェックポイントに当てはめないでください。
- 公開ドキュメントでは、ホスト型サービスの安定した共通価格、保持期間、リージョン、冪等性キーは確認できませんでした。機密情報または規制対象のデータをアップロードする前に、正確な承認とエンタープライズ/DPA の規約を取得してください。
正確な NIM リクエスト契約
以下の例はすべて、ループバックで稼働中の、すでに承認済みのセルフホスト型 NIM を対象としています。ソフトウェアのインストール、重みのダウンロード、コンテナの起動は行いません。
Cosmos3 Generator NIM
モードは推測されます。mode フィールドはありません。不明なフィールドがあると HTTP 422 が返されます。
- T2V:空でない
promptを指定し、imageは指定しません。 - I2V:生の base64、データ URI、または許可された公開 URL として
imageを指定します。prompt は省略可能です。JPEG/PNG/WebP に対応し、リクエストフィールドの上限は 20,000,000 文字です。 resolution:256、480、720。必要に応じて_16_9、_1_1、_9_16、_4_3、_3_4を付加できます。num_output_frames:25~397 の範囲で 4k+1 の刻みです。ティアごとの上限は、256 で 397、480 で 297、720 で 197 です。デフォルトは 189 です。fps:1~60、推奨値は 10~30 です。エンコーダーは小数 FPS を保持しますが、モデルは最も近い整数に丸めます。guidance_scale:1~7、デフォルトは 6 です。steps:1~100、デフォルトは 35 です。負でないシードを設定してください。
例 — 承認済みの 7.875 秒の T2V リクエスト 1 件:
{
"prompt": "Fixed waist-height camera in a clean robot-cell aisle. A yellow mobile robot rolls forward two meters, slows beside shelf B4, and stops; its wheels rotate consistently, the shelf and floor markings remain fixed, and no people enter frame.",
"negative_prompt": "object morphing, sliding wheels, changing shelf geometry, camera shake, text overlays, logos",
"resolution": "720_16_9",
"num_output_frames": 189,
"fps": 24.0,
"steps": 35,
"guidance_scale": 6.0,
"seed": 18427
}
理由:189 / 24 = 7.875 秒で、フレーム数は 4k+1 に従います。また、プロンプトでは目に見える初期状態、1 つの状態遷移、カメラの制約、不変条件を示しています。起こりやすい失敗は、車輪の空転、物体の変形、不正確な停止位置です。結果を「物理を考慮した」と表現するのではなく、それらを測定してください。
Predict2.5-2B NIM
promptは必須です。imageまたはvideoのどちらか一方を指定してください。両方は指定しません。どちらも指定しない場合は Text2World、画像を指定する場合は Image2World、MP4 動画を指定する場合は Video2World です。resolutionのキー:256、480、512、720と、同じ 5 種類のアスペクト比サフィックスです。例:480_16_9は 768×432、720_16_9は 1280×704 です。num_output_framesのデフォルトは 93 です。これより大きな値では自己回帰的なスライディングウィンドウループが使用されます。Predict2.5 の NIM スキーマには FPS フィールドがありません。再生時間を推測せず、返された MP4 を確認してください。guidance_scale:1~20、デフォルトは 7 です。steps:1~50、デフォルトは 35 です。シードの範囲は 0~4294967295 です。
例 — Image2World の動作テスト:
{
"prompt": "The same white robot arm closes its gripper around the red block and raises it vertically by ten centimeters. The workbench, camera, gripper design, and all other blocks remain unchanged.",
"negative_prompt": "extra blocks, changing gripper, camera movement, object morphing, flicker",
"image": "data:image/png;base64,APPROVED_BASE64_IMAGE",
"resolution": "480_16_9",
"num_output_frames": 93,
"steps": 35,
"guidance_scale": 7.0,
"seed": 92014
}
オープンな 2B モデルカードでは、5 秒、16 FPS の 720p/480p チェックポイントのバリアントと、1280×704 または 832×480 の特定のコンディショニングメディアについて、別途説明されています。そのチェックポイントの契約を使用して、現在の NIM スキーマを上書きしないでください。
Transfer2.5-2B NIM
- 必須項目:MP4 ソースの
video、プロンプト、およびedge、depth、vis(視覚的なぼかし)、segのうち少なくとも 1 つ。 - ソースの長さ:93~480 フレーム。
resolution(256|480|512|720)は内部処理解像度です。出力解像度は入力と一致します。 - 制御情報として、base64/URL の
controlと任意のマスクを指定でき、control_weightは 0~1 です。制御情報を自動抽出するには、controlを完全に省略してください。nullまたは""はエラーになります。 - 合計が 1 を超える複数の重みは、比率を保って正規化されます。同じソースから導出され、空間・時間の寸法が一致する制御情報を使用してください。
guidance:0~7、デフォルトは 3 です。num_stepsのデフォルトは 35 です。num_conditional_framesは 1 または 2 です。
例 — 制御された Sim2Real の変化:
{
"video": "data:video/mp4;base64,APPROVED_SOURCE_VIDEO",
"prompt": "Photorealistic industrial inspection cell under cool overhead LEDs. Preserve the robot, conveyor, camera path, timing, contacts, and all object positions; replace only synthetic materials and lighting with realistic metal, rubber, and painted concrete.",
"negative_prompt": "changed geometry, new objects, missing conveyor, altered camera path, inconsistent contacts, text overlays",
"seed": 7312,
"guidance": 3,
"num_steps": 35,
"resolution": "480",
"num_conditional_frames": 1,
"edge": {"control_weight": 0.6},
"depth": {"control_weight": 0.4}
}
この例では、NIM にソースからエッジ/深度を導出するよう求めています。安全性が重要な合成データには、明示的なハッシュ付き制御マップを優先し、位置合わせを測定してください。見た目にもっともらしい出力は、ラベル付きの正解サンプルではありません。
雰囲気ではなく、世界の状態を示すプロンプト
文書化されたガイダンス:Predict2.5 のローカルモデルカードでは、5 秒のクリップには 300 語未満とし、具体的なシーン、オブジェクト、動き、背景を指定することを推奨しています。Cosmos3 NIM では、簡潔な 1〜2 文を推奨しています。
本番運用でのヒューリスティクス:
- まずセンサー/カメラのフレームを宣言します:固定、ドライブレコーダー、手首カメラ、三人称視点、レンズ/高さ、許可される動き。
- 初期状態の世界を記述します:オブジェクトの数を示し、安定した色/素材/位置/識別情報を指定し、接触関係に名前を付けます。
- 距離、方向、速度の推移、停止/終了条件を含めて、時系列に沿った遷移を 1 つ記述します。
- 不変条件を示します:動いてはならない、形を変えてはならない、出現/消失してはならない、ラベルを変えてはならない、または視点を変えてはならないものを指定します。
- レンダリング/スタイルの変更は、ジオメトリと動力学の後に記述します。Transfer では、構造はコントロールに担わせ、テキストでは対象ドメインを記述します。
- ネガティブプロンプトには、ポリシー回避や曖昧な品質形容詞の長いリストではなく、観測可能な失敗の種類を指定します。
- パラメーターを 1 つだけ変更し、それ以外のリビジョン、ランタイム、精度、プロンプト、コントロール、シードは固定します。シードは比較に役立ちますが、カーネル、量子化、GPU、リビジョンが異なる場合にビット単位の同一性を保証するものではありません。
- スライディングウィンドウ出力では、すべての継ぎ目を調べ、チャンクごとのドリフトを測定します。フレーム数を増やすと誤差が生じる範囲が広がります。物理的な記憶が無料で延長されるわけではありません。
ローカルチェックポイントとリビジョンの管理
モデルを取得する前、またはコンテナを初めて起動する前に、デプロイメントマニフェストを作成して承認します:
{
"surface": "self-hosted-nim",
"container": "nvcr.io/nim/nvidia/cosmos3-generator@sha256:APPROVED_DIGEST",
"license_sha256": "HASH_OF_/opt/nim/LICENSE",
"model_size": "nano",
"precision": "fp8",
"nim_model_profile": "APPROVED_PROFILE_ID",
"metadata_sha256": "HASH_OF_CANONICAL_/v1/metadata",
"guardrail_manifest_sha256": "APPROVED_HASH",
"driver_cuda_gpu": "RECORDED_HOST_FACTS",
"network_policy": "offline-after-cache-warm",
"input_manifest_sha256": "APPROVED_INPUT_HASH",
"output_root": "/approved/immutable/run-root"
}
- すべてのチェックポイントシャード/コントロール/入力をハッシュし、プロバイダーのファイル名、バイト数、ソース URL、ライセンス、取得時刻を保持します。読み込む前に、safetensors/インデックスの整合性、またはフレームワーク固有のチェックポイント構造を検証します。
- BYOC チェックポイントは読み取り専用でマウントします。Cosmos3 NIM の場合、
NIM_FT_CHECKPOINTはコンテナ内の絶対パスであり、transformer/、vae/、scheduler/、model_index.jsonを含む必要があります。NIM はサイズ/精度を検出し、プロファイルの不一致を拒否します。/v1/metadataで実際に使用中のチェックポイントを確認します。 - Transfer2.5 NIM は、
NIM_EDGE_CHECKPOINT、NIM_VIS_CHECKPOINT、NIM_DEPTH_CHECKPOINT、NIM_SEG_CHECKPOINTを個別に受け付けます。どれがカスタムで、どれがバンドル済みかを記録します。FP8 の初回起動では、キャリブレーション/TensorRT エンジンの構築に数時間かかる場合があります。キャッシュは成果物であり、準備完了のシグナルは/v1/health/readyです。 - 学習後のチェックポイントでは、形式が異なります。再開には分散 DCP を、推論/初期学習には統合済み
.ptを使用します。DCP ディレクトリを統合済み推論ファイルのように読み込んではいけません。ベースリビジョン、データマニフェスト/ライセンス、コードのコミット、設定、オプティマイザーの状態、ステップ、親チェックポイントを記録します。 - pickle ベースの
.ptは、実行可能なリスクを伴う入力として扱います。信頼できるハッシュ済みチェックポイントのみを、隔離された環境で読み込みます。対応範囲で利用できる場合は、safetensors を優先します。
ハードウェアと精度はサーフェスごとに異なります
- Cosmos3 のオープンな Diffusers/モデルカード: Linux。テスト済みの精度は BF16 です。テスト済みハードウェアには H100 と GB200 が含まれます。カードには、一般的なローカル VRAM の最低要件は公開されていません。コンシューマー向け GPU のサポートを保証しないでください。
- Cosmos3 Generator NIM: Hopper 以降(CC ≥9.0)が必要です。Nano にはデバイスあたり ≥79 GiB が必要です。Super FP8 には、1 台のデバイスで ≥121 GiB、または 2 台それぞれに ≥79 GiB が必要です。Super BF16 には、1 台で ≥150 GiB、2 台で ≥92 GiB、または 4 台で ≥65 GiB が必要です。NVFP4 には Blackwell(CC ≥10.0)が必要です。NIM の量子化に関する説明をオープンな Diffusers に適用しないでください。
- Predict2.5 のオープンな 2B Video2World: モデルカードによると、VRAM は約 32.54 GB で、Linux が必要です。テスト済み精度は BF16 です。オープンリポジトリは Ampere 以降をサポートしています。一方、最適化された Predict2.5 NIM には CC ≥8.9 が必要です。最新の GPU/プロファイル対応表を参照してください。
- Transfer2.5 のオープンな 2B: VRAM は約 65.4 GB で、Linux が必要です。テスト済み精度は BF16 です。720p/16-FPS/93 フレームのベンチマークでも、データセンター向け GPU で数分かかります。AV マルチビュー・モデルには、80-GB GPU が少なくとも 8 台必要です。Transfer NIM には Hopper 以降が必要で、最新の前提条件に記載されているとおり、ホスト RAM とディスクにも十分な容量が必要です。
- 承認前に、空き VRAM、ホスト RAM、ディスク/キャッシュの余裕、GPU のトポロジー/P2P、ドライバー/CUDA の互換性、想定されるコールドスタート時のビルド時間、実行時間、消費電力/クラウド費用を測定してください。パラメーター数の比較は、容量計画の代わりにはなりません。
ドライランを優先する NIM クライアント
この完全な Python の例は、ループバック上の Cosmos3 Generator NIM のみを対象としています。デフォルトモードでは、承認エンベロープの正規表現を出力し、ネットワーク呼び出しも書き込みも行いません。実行するには、デプロイの正確な ID、リクエストダイジェスト、出力パス、実行時間の上限が必要です。同期 POST を 1 回行い、結果が不明な場合でも再試行しません。
import base64, hashlib, json, os, pathlib, urllib.parse, urllib.request
MODE = os.getenv("COSMOS_MODE", "dry-run")
output = pathlib.Path(os.getenv("COSMOS_OUTPUT", "./cosmos3-t2v.mp4")).resolve()
body = {
"prompt": "Fixed waist-height camera in a clean robot-cell aisle. A yellow mobile robot rolls forward two meters, slows beside shelf B4, and stops; shelf and floor markings remain fixed.",
"negative_prompt": "object morphing, sliding wheels, changing geometry, camera shake, text overlays",
"resolution": "720_16_9", "num_output_frames": 189, "fps": 24.0,
"steps": 35, "guidance_scale": 6.0, "seed": 18427,
}
deployment = {
"surface": "self-hosted-nim", "model": "cosmos3-generator",
"container_digest": os.getenv("COSMOS_CONTAINER_DIGEST", "<required>"),
"model_size": "nano", "precision": "fp8",
"profile_id": os.getenv("COSMOS_PROFILE_ID", "<required>"),
"metadata_sha256": os.getenv("COSMOS_METADATA_SHA256", "<required>"),
"guardrail_manifest_sha256": os.getenv("COSMOS_GUARDRAIL_SHA256", "<required>"),
}
envelope = {"deployment": deployment, "endpoint": "http://127.0.0.1:8000/v1/infer",
"request": body, "output": str(output), "allowed_generation_calls": 1}
wire = json.dumps(body, sort_keys=True, separators=(",", ":")).encode()
approval_wire = json.dumps(envelope, sort_keys=True, separators=(",", ":")).encode()
digest = hashlib.sha256(approval_wire).hexdigest()
print(json.dumps({"mode": MODE, "approval_sha256": digest, "expected_duration_seconds": 7.875,
"approval_envelope": envelope}, indent=2))
if MODE == "dry-run":
raise SystemExit(0)
if MODE != "execute" or os.getenv("COSMOS_APPROVED_SHA256") != digest:
raise SystemExit("Exact approval digest is required")
if any(v == "<required>" for v in deployment.values()):
raise SystemExit("Pin container, profile, metadata, and guardrail identities")
timeout = int(os.getenv("COSMOS_MAX_WALL_SECONDS", "0"))
if timeout < 60:
raise SystemExit("Set the approved wall-time ceiling")
if output.exists():
raise SystemExit("Output exists; refusing overwrite")
state_dir = pathlib.Path(os.getenv("COSMOS_STATE_DIR", ".cosmos-state")).resolve()
state_dir.mkdir(parents=True, exist_ok=True)
state = state_dir / f"{digest}.json"
try:
fd = os.open(state, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600)
except FileExistsError:
raise SystemExit("Digest already claimed; refusing duplicate inference")
with os.fdopen(fd, "w", encoding="utf-8") as f:
json.dump({"state": "PREPARED", "approval_sha256": digest}, f); f.flush(); os.fsync(f.fileno())
def replace_state(value):
temp = state.with_suffix(f".tmp-{os.getpid()}")
with open(temp, "x", encoding="utf-8") as f:
json.dump(value, f); f.flush(); os.fsync(f.fileno())
os.replace(temp, state)
req = urllib.request.Request(envelope["endpoint"], data=wire, method="POST",
headers={"Content-Type": "application/json", "Accept": "application/json"})
try:
with urllib.request.urlopen(req, timeout=timeout) as response:
raw = response.read(512 * 1024 * 1024 + 1)
if len(raw) > 512 * 1024 * 1024:
raise RuntimeError("response exceeds 512 MiB")
result = json.loads(raw)
if result.get("error"):
raise RuntimeError("NIM returned an error")
video = base64.b64decode(result["b64_video"], validate=True)
if len(video) < 16 or b"ftyp" not in video[:64]:
raise RuntimeError("response is not an MP4")
except Exception as exc:
replace_state({"state": "UNKNOWN", "approval_sha256": digest,
"error_type": type(exc).__name__})
raise SystemExit("Outcome UNKNOWN; inspect NIM logs/metrics before any rerun") from exc
output.parent.mkdir(parents=True, exist_ok=True)
temp_output = output.with_suffix(output.suffix + f".tmp-{os.getpid()}")
with open(temp_output, "xb") as f:
f.write(video); f.flush(); os.fsync(f.fileno())
os.replace(temp_output, output)
replace_state({"state": "RECEIVED", "approval_sha256": digest,
"output": str(output), "sha256": hashlib.sha256(video).hexdigest(), "bytes": len(video)})
print(json.dumps({"output": str(output), "sha256": hashlib.sha256(video).hexdigest()}))
実行モードにする前に、GET /v1/health/ready を確認し、/v1/metadata と /v1/version を取得して、それぞれの正規化されたレスポンスのハッシュを計算してください。この例には、ホステッド認証の経路も再試行ループも意図的に含まれていません。
ライフサイクルと成果物の管理
- 権利、ライセンス、安全性、不変のデプロイ、入力/制御のハッシュ、出力先、GPU/時間/クラウドの上限、許可される呼び出しを事前確認します。モデルまたは精度を変更する場合は、新たな承認が必要です。
- 推論前に実行台帳を記録します。同期クライアントのタイムアウトは失敗の証拠ではなく、不明です。再実行する前に、NIM のログ、GPU メトリクス、リクエストの相関情報、出力のステージング状況を確認してください。
- レスポンスはストリーミングするか、base64 データのサイズを厳密に制限し、検証付きでデコードします。新しい一時ファイルに書き込み、fsync を実行してからアトミックに名前を変更します。受け入れ済みの結果を上書きしないでください。
ffprobeと、全体をデコードするffmpeg -v error -i output.mp4 -f null -を使用します。コンテナ/コーデック、実際のフレーム数、再生時間、FPS、解像度、ピクセル形式、タイムスタンプ、音声ストリームを検証します。Cosmos3 で生成した音声は、48-kHz ステレオ AAC を必須とし、同期と内容を確認してください。- プロンプト/状態への準拠、オブジェクトの数/永続性、接触、軌道、カメラの安定性、モーフィング、ラベル/テキスト、顔、安全でないコンテンツ、I2V の初回フレームとの忠実度について、フレーム範囲を確認します。Transfer ではエッジ/深度/セグメンテーションのアラインメントを計算し、マルチビューでは時間的およびカメラ間の一貫性を測定します。
- 元の出力、プロンプト/ネガティブプロンプト、制御情報、シード、リビジョン、コンテナ/プロファイル/精度、ガードレールの結果、GPU/ソフトウェア情報、出力ハッシュ、QC レポート、開示/来歴記録を保管します。編集済みクリップを、モデルが生成した未加工の結果として扱わないでください。
- 生成されたすべての軌道/ワールド状態は仮説として扱います。独立したシミュレーション、実データによる検証、冗長性、分野固有の安全性分析なしに、ロボット、車両、安全制御装置、または生命に関わる判断に直接入力しないでください。
ライセンス、権利、安全性、プライバシー
- **Predict2.5/Transfer2.5:**リポジトリのコードは Apache-2.0、モデルの重みは NVIDIA Open Model License に基づきます。このモデルライセンスは、商用利用と派生モデルを認め、出力に対する NVIDIA の所有権を否定し、対象となる配布・サービス・トレーニング用途において、指定の通知および「Built on NVIDIA Cosmos」の表示を求め、Trustworthy AI の条項を組み込み、含まれるガードレールを回避して、実質的に同等でユースケースに適したガードレールを設けない場合に権利を終了させます。付属する正確な改訂版を確認してください。
- **Cosmos 3 オープンリリース:**コードとモデル素材は OpenMDW-1.1 に基づきます。このライセンスは、モデル素材を配布する際にライセンスと該当する原産地・著作権表示を保持することを求めますが、出力の利用に関する義務は課しません。第三者の権利処理と同意の取得はユーザーに委ねられています。類推によって NVIDIA Open Model License の帰属表示やガードレール条項を OpenMDW に持ち込まないでください。
- NIM:
/opt/nim/LICENSEとすべてのコンポーネントに関する通知を遵守してください。現行のカタログカードでは、オープンチェックポイントとは異なるモデルライセンスが記載されている場合があります。正確なコンテナ/チェックポイントに付属するライセンスを保存し、概要ページをもとにライセンスを選ばないでください。 - 有効になっているガードレールを維持してください。Cosmos のガードレール処理には、プロンプト/ブロックリストのチェック、動画の安全性フィルタリング、顔のぼかしが含まれます。ホスト型 Cosmos3 Preview では SynthID も使用するとされています。ローカルの Cosmos3 リポジトリにはガードレールを無効化する方法がありますが、技術的に可能だからといって承認されているわけではありません。法務/セキュリティレビューと、成果物のライセンスで求められる実質的に同等の安全策を文書化せずに、ガードレールを無効化または弱体化しないでください。
- すべての人物、音声、健康/個人データ、商標、著作権で保護された素材、シミュレーターデータセット、制御マップ、追加学習記録について、権利と同意を取得してください。NVIDIA のモデルカードでは、生成メディアで人物の顔がぼかされない場合や、人物の体形が維持されない場合があると警告されています。
- 違法な監視/生体認証、同意のない親密な画像、CSAM、欺瞞、嫌がらせ、悪用、詐欺、安全でない運用環境での導入を禁止してください。合成メディアとモデルの制限事項を開示し、SynthID/ウォーターマーク/来歴情報を削除せずに保持してください。
- セルフホストであっても、外部へのデータ送信がないことが自動的に保証されるわけではありません。初回起動時、Hugging Face/NGC からのダウンロード、テレメトリ、ガードレール、ログ送信先、リモート制御を調査し、ネットワークを制御する必要があります。確認した公開モデル契約では、ホスト型 Preview のプライバシー、保持期間、トレーニングでの利用、削除、リージョンが十分に定められていません。機密データを扱う場合は、書面で条件を確認してください。
既知の不明点と競合時の方針
- Cosmos のすべてのファミリーに共通する公開のサポート終了スケジュールは見つかっていません。Predict2 がアーカイブされているからといって、Predict1 や Predict2.5 の日程が確定するわけではありません。
- ホスト型 Preview の提供状況、エンドポイントのルーティング、レート制限、価格、保持期間、リージョンは、アカウントや段階的な展開によって異なる場合があります。
- Cosmos3 のオープンチェックポイントに必要な VRAM は Cosmos3 NIM の VRAM マトリックスとは異なります。16B/64B のフルモデルの数値は、NIM の 8B/32B Generator の表記とは異なります。
- 最新の NIM ドキュメントには Cosmos3 Generator GA と Predict2.5 NIM が記載されていますが、古い紹介文やブログ記事では省略されていたり、「近日公開」と記載されていたりします。正確な最新リリースノート、サポートマトリックス、実行中の
/v1/metadataを優先してください。 - NIM とオープンリポジトリではスキーマが異なります。Framework/vLLM の引数を
/v1/inferにコピーせず、不明な NIM フィールドは拒否してください。 - ベンチマーク結果は、モデル、チェックポイント、プロンプトセット、GPU、精度、ガードレール、ランタイムごとに異なります。NVIDIA による比較は、提供元による測定値であり、普遍的な順位付けではないものとして扱ってください。
- モデルカード、リポジトリ、NIM のページ、埋め込みライセンスの内容が食い違う場合は、作業を止め、証拠を保存してください。該当する成果物に埋め込まれたライセンス/スキーマと最新リリースノートを優先し、配布または本番運用の前に NVIDIA に説明を求めてください。
主な情報源
- NVIDIA Cosmos リポジトリ/Cosmos 3、Cosmos3-Nano モデルカード、Cosmos 3 技術レポート、Cosmos 3 研究ページ
- Predict2.5 リポジトリ、Predict2.5 モデルカード、Predict2.5 レポート
- Transfer2.5 リポジトリ、Transfer2.5 モデルカード、Transfer2.5 レポート
- NIM の概要、リリースノート、サンプリング制御、サポートマトリックス、BYOC、設定、EULA
- Cosmos Guardrail、NVIDIA Open Model License、Trustworthy AI 利用規約、OpenMDW-1.1