Skip to main content

Sora

Sora(Brooks ら, 2024)は、OpenAI による video generation model です。U-Net ではなく、Diffusion Transformer(DiT)architecture を採用し、video と image の latent code に対する spacetime patch を扱います。

Spacetime patch

Sora では、visual input は spacetime patch の sequence として表現されます。各 patch は Transformer の input token として扱われ、image も video も同じ枠組みで処理できます。

Sora

画像出典: Lilian Weng, “Diffusion Models for Video Generation”。Sora は spacetime patch を token として扱う diffusion transformer です。

なぜ Transformer なのか

DiT architecture は、U-Net 系と比べて scaling との相性がよいと考えられています。Sora は、大規模な model size と大規模な dataset を組み合わせることで、長い時間 horizon を持つ high-quality video の生成を狙います。

Patch ベースの表現は、解像度や時間長が可変な input にも対応しやすいという利点があります。

位置づけ

Sora は、from-scratch で video diffusion を training する方針の中で、DiT を採用した代表的な model です。Imagen Video が cascaded U-Net を中心に組み立てられているのに対し、Sora は単一の Transformer architecture で大規模に scale する設計になっています。

数式で見る spacetime patch の考え方

Sora のような大規模 video generation model は、video を時空間 patch の列として扱う見方が重要です。Video latent xRT×H×W×C\mathbf{x}\in\mathbb{R}^{T\times H\times W\times C} を patchify すると、token 列 z1:N\mathbf{z}_{1:N} になります。

z1:N=Patchify(x)\mathbf{z}_{1:N}=\mathrm{Patchify}(\mathbf{x})

Transformer は、この token 列に対して denoising を行います。

ϵ^=ϵθ(zt,t,c)\hat{\epsilon}=\epsilon_\theta(\mathbf{z}_t,t,c)

この式の気持ちは、「画像の patch だけでなく、時間を含む spacetime patch を一つの token として扱い、長い動画の空間構造と時間構造を同じ sequence modeling の枠組みで処理する」というものです。

長尺 video では、token 数 NN が時間長、解像度、frame rate とともに増えるため、attention の計算量が課題になります。

Costattn=O(N2d)\mathrm{Cost}_{\mathrm{attn}}=O(N^2d)

この式は、長時間・高解像度 video generation で、効率的な attention、圧縮 latent、階層化が重要になる理由を表しています。

関連ページ