毎年ラスベガスで開催される世界最新鋭の技術が集結するイベントCES。
特に根強いトレンドとなっているAIをリードしている緑の半導体企業「NVIDIA」からは多くの注目の発表がありました。
全てを見たわけではないですが、個人的に注目しているのは
の3つです。昨年Appleで散財しまくっている身としては今年はなんとしても節約志向で行く予定なのですが、早速それが脅かされています🤤
今回は、今なお熱いAIブームをさらに後押しするであろう基盤モデル「NVIDIA Cosmos」のビデオ生成を試してみました。
NVIDIA Cosmosとは
NVIDIA Cosmosとは、NVIDIAが発表した基盤モデルの名称です。
物理特性を理解させるためのデータ収集・調整を行っているようで、NVIDIAはこのモデルを「Physical AI」と呼んでいます。
これが扱いやすいライセンスでの提供で、さらに不適切な出力をガードするシステムも付属しているとのことで、商用利用が可能な魅力的なAIモデルと言えます。
これを無料で提供してもGPUが売れるので問題ない状態なのがすごいですね。
Cosmosの機能を体験できるビデオ生成では、テキストや写真を使用して将来のビデオを生成することができます。
物理的に破綻しにくいビデオはデータ作成にも使えそうで期待できますね。
辛いところ:RTX5090の購入を避けられない
Cosmosの導入はとても簡単で、UbuntuとNVIDIAドライバとDockerがあればすぐできます。
しかし、問題点が。
ビデオ生成にはとても多くのVRAMを消費し、どんなにオプションを追加しても24GBを超えます。
GPU1枚で対応できるのはA6000/A6000adaやこれから発売される5090くらいなのでかなりしんどい。
2枚使いでも32GBは実現しますが、帯域がボトルネックに‥
ARMでも問題なければGB10やAGX Orin (64GB) が選択肢に挙がるかもしれません。
これまでのNVIDIA GPU向けAIモデルは24GB VRAM向けに調整されることもありましたが、32GB VRAMタイプが出たことでこれからは32GB向けに調整されることでしょう。
仮にそうだとしたら5090を持たざるものはAI推論で驚くことができなくなってしまう‥😇
GPUサーバーレンタルの選択肢も増えているようなので無理に購入する必要はなさそうですが、24GBでは闘えない時代になりつつあります。
24GBって贅沢仕様だった気がするんですがねぇ‥
24GB VRAMで生成するオプション
ただ、CosmosのREADMEを読んでいると次のように書かれています。
For GPUs with limited memory (e.g., RTX 3090/4090 with 24 GB memory), we recommend fully offloading all models. For higher-end GPUs, users can select the most suitable offloading strategy considering the numbers provided below.
先ほどの表ではいずれも24GB超えているのになぜだ‥?
そこで、いろいろとオプションを付けたり消したりして格闘することに。この文を付けたくらいですから、動かないはずがありません。
格闘の末、オプションをちょっと調整するだけでなんとかなることが分かりました。
環境
RTX3090 (24GB VRAM) を使用しています。デスクトップが動いており、常に500MBくらい確保されています。
オプションと結果(Text2World 7B)
PROMPT="A sleek, humanoid robot stands in a vast warehouse filled with neatly stacked cardboard boxes on industrial shelves. \ > The robot's metallic body gleams under the bright, even lighting, highlighting its futuristic design and intricate joints. \ > A glowing blue light emanates from its chest, adding a touch of advanced technology. The background is dominated by rows of boxes, \ > suggesting a highly organized storage system. The floor is lined with wooden pallets, enhancing the industrial setting. \ > The camera remains static, capturing the robot's poised stance amidst the orderly environment, with a shallow depth of \ > field that keeps the focus on the robot while subtly blurring the background for a cinematic effect."
PYTHONPATH=$(pwd) python cosmos1/models/diffusion/inference/text2world.py \ --checkpoint_dir checkpoints \ --diffusion_transformer_dir Cosmos-1.0-Diffusion-7B-Text2World \ --prompt "$PROMPT" \ --video_save_name Cosmos-1.0-Diffusion-7B-Text2World_memory_efficient \ --offload_tokenizer \ --offload_diffusion_transformer \ --offload_text_encoder_model \ --offload_prompt_upsampler \ --offload_guardrail_models \ --disable_prompt_upsampler
このオプションで追加されたのは、 --disable_prompt_upsampler
です。プロンプト生成を無効化してくれます。
Cosmosの生成ステップの前にプロンプトを自動で拡張してくれるそうなのですが、これがボトルネックになっていたそうです。
なお生成プロセスでは常に17.5GB使い続けていました。そのため、16GB VRAMではギリギリ生成できないかもです。
5秒の動画を生成するために必要な生成時間はRTX3090で30分程度です。解像度を落とすことで生成時間を短縮可能です。(720x480だと10分)
オプションと結果(Video2World 7B)
PROMPT="A sleek, humanoid robot stands in a vast warehouse filled with neatly stacked cardboard boxes on industrial shelves. \ > The robot's metallic body gleams under the bright, even lighting, highlighting its futuristic design and intricate joints. \ > A glowing blue light emanates from its chest, adding a touch of advanced technology. The background is dominated by rows of boxes, \ > suggesting a highly organized storage system. The floor is lined with wooden pallets, enhancing the industrial setting. \ > The camera remains static, capturing the robot's poised stance amidst the orderly environment, with a shallow depth of \ > field that keeps the focus on the robot while subtly blurring the background for a cinematic effect."
PYTHONPATH=$(pwd) python cosmos1/models/diffusion/inference/video2world.py \ --checkpoint_dir checkpoints \ --diffusion_transformer_dir Cosmos-1.0-Diffusion-7B-Video2World \ --input_image_or_video_path cosmos1/models/diffusion/assets/v1p0/video2world_input0.jpg \ --num_input_frames 1 \ --video_save_name Cosmos-1.0-Diffusion-7B-Video2World_memory_efficient \ --offload_tokenizer \ --offload_diffusion_transformer \ --offload_text_encoder_model \ --offload_prompt_upsampler \ --offload_guardrail_models \ --disable_prompt_upsampler \ --prompt "${PROMPT}"
Video2Worldの24GB VRAM対応では、プロンプト生成を無効化するためにプロンプトの追加が必須となります。
この場合は、前回のプロンプトをそのまま流用したので、唐突にロボットが登場するというわけわからない展開になっていますが、それでも途中からは破綻なく動画生成されていることを確認しました。
5秒の動画を生成するために必要な生成時間はText2Worldと同様、RTX3090で30分程度です。
まとめ
以外にも24GB VRAMで生成できました。動画生成AIの取っ掛かりとしては良さそうです。
とはいえ1時間で10秒くらいしか生成できないうえに高品質とはいえない状態なので、これから動画生成AIを活用して何かを作りたい人は動画生成サービスを使うか、RTX5090やGB10などのVRAM投資を加速させる必要がありそうです。
まだまだモデルの大規模化・軽量化ともにAIの進化は止まらなさそうなので定期的にウォッチしていきたいですね。