一文帶你瞭解 OpenAI Sora

作者:torresyu

最近 AI 圈最火的無疑是 OpenAI 在 2 月 15 日發佈的 Sora。Sora 可以根據文本生成一分鐘的高清視頻,生成的視頻畫質、連續性、光影等都令人歎爲觀止,Sora 無疑將視覺生成推到新的高度。本文將重點回答三個問題:(1)Sora 的原理是什麼?(2)Sora 到底是不是世界模型?(3)Sora 會影響哪些行業?

1. 背景

在國內外大多數 AI 廠商還在卷大語言模型之際,OpenAI 悄無聲息地發佈了文生視頻(text-to-video,簡稱 t2v)模型 Sora [1],僅僅幾個視頻 demo,就讓整個 AI 圈子從驚訝到恐懼,驚訝於 Sora 生成的視頻已經到達工業應用級別,恐懼於現有的 t2v 模型與 Sora 的差距竟然如此之大。
先看個 Sora 官方博客展示的 demo,當你向 Sora 輸入:“A stylish woman walks down a Tokyo street filled with warm glowing neon and animated city signage. She wears a black leather jacket, a long red dress, and black boots, and carries a black purse. She wears sunglasses and red lipstick. She walks confidently and casually. The street is damp and reflective, creating a mirror effect of the colorful lights. Many pedestrians walk about.”,Sora 則根據該文本生成了長達 1 分鐘的高清視頻。

這個 demo 展現了 Sora 至少有以下突破:(1)畫質突破:視頻非常高清,細節極其豐富;(2)幀率和連續性突破:視頻幀率高、連續性好(無閃爍或明顯的時序不一致);(3)時長突破:相比之前 t2v 模型僅能生成幾秒的時長,Sora 可以生成長達 1 分鐘的視頻,這是之前 t2v 模型不敢想象的;(4)物理規則理解突破:視頻中物體的運動、光影等似乎都非常符合自然世界的物理規則,整個視頻看上去都非常自然和逼真。

那麼 OpenAI 到底用了什麼魔法能讓 Sora 如此驚豔?接下來我們通過 OpenAI 給出的 Sora 技術報告來解答。PS:該技術報告非常簡陋,技術細節幾乎沒有,只給了大致的建模方法。

2. Sora 原理解讀

2.1 Sora 要解決的任務

Sora 要解決的任務其實非常好理解,就是給定一段文本,模型需要根據該文本生成相應的視頻,簡單說就是 text-to-video(t2v)。t2v 本身並不是一個新問題,很多廠商都在研究 t2v 模型,只是當前的 t2v 模型生成的視頻普遍質量較差,很難到達工業應用級別。在 Sora 出現前大家的普遍認知是:t2v 是一個很難的任務,工業級別 t2v 模型(或者說能真正實用的 t2v 模型)短時間內應該很難實現。然而,OpenAI 又又又一次打了所有人的臉,Sora 的發佈意味着,這一天已經來了。

2.2 Sora 原理

如果用一句話來描述 Sora 訓練建模過程,可以是:將原始視頻通過一個視覺編碼器(visual encoder)編碼到隱空間(latent space)形成隱時空塊(spacetime latent patches),這些隱時空塊(結合 text 信息)通過 transformer 做 diffusion [2, 3, 4] 的訓練和生成,將生成的隱時空塊再通過視覺解碼器(visual decoder)解碼到像素空間(pixel space)。所以整個過程就是:visual encoding -> latent diffusion with diffusion transformer (DiT) [4] -> visual decoding。

(1)Visual Encoding

這一步其實很好理解,就是通過一個變分自編碼器(VAE)[5] 的 encoder 將高維的原始視頻映射(壓縮)到較爲低維的隱空間(注意:不僅僅是空間上壓縮了,時間上也進行了壓縮),即得到該視頻的低維隱空間特徵(可以看成一個大的 3D tensor),爲了後續 transformer 計算方便,將這個特徵切成不重疊的 3D patches,再將這些 patches 拉平成一個 token 序列,這個 token 序列其實就是原始視頻的表徵了(即 visual token 序列)。

(2)Latent Diffusion with DiT

在得到視覺表徵(上述 visual token 序列)後,Sora 借鑑了 DiT [4],使用 transformer 來做 diffusion model 的訓練,使用 transformer 的好處在於可以輸入任意長度的 token 序列,這樣就不再限制輸入視頻的尺寸和時長,並且模型很容易 scale up(OpenAI 表示這個我熟)。同時,因爲 Sora 想解決 t2v 的問題,所以 Sora 會將 text 的表徵以某種形式 condition 到 visual tokens 上(Sora 技術報告中未披露,但後文我會分析最可能的實現方法)來約束生成。

在 diffusion transformer 的訓練中,給定噪聲輸入(e.g., 噪聲 patches)並 conditioned on text 特徵,模型被訓練去預測原始視頻的 patches(預測過程又叫 denoising 過程,具體可以參考 DDPM [2] 中的訓練算法),示意圖如下:

(3)Visual Decoding

第(2)步中,diffusion transformer 可以生成的其實不是像素空間的視頻,而是隱空間的視頻表徵(denoised patches),這些 patches reshape 成視頻 3D 特徵再經過第(1)步中的 VAE 的 decoder,就可以映射回像素空間,得到最後生成的視頻。

2.3 Sora 的重要性質

(1)Sora 可以靈活地採用不同時長、分辨率和長寬比的視頻

OpenAI 發現之前的方法大多采用固定尺寸的視頻(比如 4s 的 256x256 視頻)去訓練模型,和現實中任意長度、長寬比有較大 gap,而採用原始尺寸的視頻訓練模型效果更好。得益於 Sora 採用的 transformer 結構,Sora 可以輸入任意多個 visual patches(初始爲 noise patches),即可生成任意尺寸的視頻。

(2)Sora 有很強的語言理解能力

訓練 t2v 模型需要大量帶有文本標註的視頻,OpenAI 採用 DALL·E 3 [6] 中的 re-captioning 技術來解決。首先訓練一個高質量的視頻標註模型(captioner model),然後它爲訓練集中的所有視頻生成文本字幕。另外,進一步利用 GPT 將視頻標註模型生成的簡短文本擴展成更長的文本有利於還利用 Sora 準確遵循用戶文本提示生成高質量視頻。

2.4 重要細節推測

Sora 的技術報告沒有任何細節,僅僅告知大家大致的建模方法,但有一些細節的實現是可以推測 or 猜測的。

(1)visual encoder 可能的結構:因爲 Sora 在 visual encoding 時也壓縮了時間維度,所以 Sora 可能採用從零開始訓練的 3D conv 版的 VAE。Sora 這裏沒有像之前工作那樣,簡單地採用 Stable Diffusion(SD) [3] 預訓練好的 2D conv 版的 VAE。現成的 SD 的 VAE encoder 用來壓縮視頻最大的問題在於時間維度沒有下采樣,SD 的 VAE 承擔了將原本 sparse 的數據壓縮到 compact 的 latent domain 再進行 diffusion 過程,從而大幅度提高 training 和 inference 的效率。然而,直接運用 2D VAE 缺乏了在時間維度的壓縮,使得其對應的 latent domain 不夠緊湊。實際上,這是一個歷史遺留問題,大部分研究工作受算力等因素影響選擇直接利用 SD 的預訓練權重(Unet 部分)、保留了 2D VAE。

(2)visual encoding 中視頻的 patches 如何 flatten 成 token 序列?大概率借鑑 DiT,先 flatten 這些 patches,然後過一個 linear 層,將 patches embed 成 tokens。

(3)diffusion 中如何將 text 信息引入?大概率還是借鑑 DiT 和 SD,在每個 transformer block 中,將 visual tokens 視爲 query,將 text tokens 作爲 key 和 value,進行 cross attention,不斷地 conditioned on text tokens。

2.5 尚未披露關鍵信息

(1)模型:模型的具體結構、模型的參數量、關鍵參數(patch size、token 數目等)如何?

(2)數據:用了哪些數據?規模如何?

(3)資源:用了多少算力?訓練了多久?

(4)如何處理高幀率、時間長、高分辨率的視頻?目前主流的視頻生成模型都是 cascade 結構,也就是先生成低分辨率、低幀率的視頻,再不斷地在時間和空間維度上 upsample。不知道 Sora 是否是直接一次性輸出其展示的結果,如果是那樣,那又會有多少 token 呢?
(5)如何解決 motion 的問題?目前的視頻生成模型普遍生成的 motion 都不太好,最簡單的例子就是 “人走路”,大部分模型無法生成連貫的、長時間的、合理的人行走的過程。而 Sora 生成的結果在連貫性、合理性上相比之前的模型都有着斷代的領先。那到底是什麼促使了這樣的結果呢?是模型尺寸的 scale up 嗎?需要 scale up 到什麼 size?還是數據的收集和清洗呢?以及要做到什麼程度呢?

2.6 Sora 的應用

2.7 Sora 的侷限性

原本中提到:“Sora 目前作爲模擬器(simulator)表現出許多侷限性。例如,它不能準確地模擬許多基本相互作用的物理過程,例如玻璃破碎。其他交互過程(例如喫食物)也不總是能正確預測。我們在登陸頁面中列舉了模型的其他常見故障模式,例如長時間樣本中出現的不連貫性或對象的憑空出現。”

總結一下主要是:

(1)對世界的物理規則的理解還不完美;

(2)長視頻生成時容易出現不連貫或者物體憑空出現的現象。

  1. Sora 到底算不算世界模型?

最近,圍繞 “Sora 是不是世界模型” 以及 “Sora 懂不懂物理世界” 等相關話題引起了圈內熱議。

英偉達高級研究科學家 Jim Fan 在 X 平臺上稱:“Sora is a learnable simulator, or "world model".”。而圖靈獎得主 Yann LeCun 則表示:“The generation of mostly realistic-looking videos from prompts "does not" indicate that a system understands the physical world.”。

這裏談談我的看法,僅供參考。

(1)什麼是世界模型(world model)[8]?

“The image of the world around us, which we carry in our head, is just a model. Nobody in his head imagines all the world, government or country. He has only selected concepts, and relationships between them, and uses those to represent the real system.” --Jay Wright Forrester, the father of system dynamics

上述引自系統動力學之父 Jay Wright Forrester。我的理解是人類其實無法記下整個世界的所有內容,我們的大腦僅僅是在有選擇記憶一些概念和相互關係,利用這些,我們可以表徵和理解這個世界。這裏,我們的大腦其實在充當 world model,即一個理解世界(物理)規律的模型。比如,當你看到玻璃杯從桌上掉下水泥地上,你知道接下來發生的事自然就是杯子碎了。

那麼世界模型到底是啥?

(以下是我個人對世界模型的理解,可能不夠嚴謹,僅供參考)

我將世界模型分爲廣義的和狹義的進行討論。

【廣義世界模型】廣義的世界模型,其實就是任何能理解世界潛在物理規律的模型,比如可以預見未來結果的模型,繼續以前面那個例子爲例,如果一個模型能預測玻璃杯掉下後的狀態,說明該模型具備這樣的能力;再比如知道世界中實體或抽象概念之間相互聯繫的模型,比如一個模型知道玻璃杯的硬度低於水泥地會導致玻璃破碎。這些其實在我看來都是廣義上的世界模型。

【狹義世界模型】狹義的世界模型更強調理解物理世界的動力(dynamics)或者運動等物理規律的模型,瞭解過 RL 的朋友們一定特別熟悉這些。在 RL 中,一大分支便是 model-based RL,這裏的 model,其實就是典型的狹義世界模型。在此模型中,給定某一時刻的狀態 s_t 和該時刻做的動作 a_t,模型可以預測出下一個時刻的狀態 s_t+1。所以說,狹義的世界模型其實是因果的。回到上面的例子,s_t 可以是剛下落的杯子和乾淨的水泥地,a_t 則是自由落體這個動作,s_t+1 則是水泥地上碎掉的杯子這樣一個狀態。

(2)Sora 算不算世界模型?

先給結論,我覺得 Sora 算廣義世界模型,同時也是隱式的狹義世界模型。

Sora 的 diffusion 過程其實是在從噪聲狀態在 text prompts 的約束下,預測可能的結果(視頻)。這個過程看似跟狹義世界模型沒有關係,但其實可以這麼理解:

標準的狹義世界模型的狀態轉移過程爲:s_0 -> a_0 -> s_1 -> a_1 -> s_2 -> ... -> a_T-1 -> s_T。對於一個視頻來說,每一幀都可以看做一個狀態 s,但是某一時刻動作其實很難描述,我們很難用自然語言或者其他形式來描述相鄰兩幀之間發生了什麼。但是我們可以用自然語言描述視頻在做什麼,也就是 s_0 到 s_T 發生了什麼,也就是將動作序列 A={a_0, a_1, ..., a_T-1}一起打包表示成一句話或者一段話。在 Sora 中,text prompts 可以看做成這樣的動作序列 A。而 Sora 理解世界的過程也和一般的狹義世界模型不太一樣,s_0 不再是第一幀,而是 “混沌” 狀態(噪聲),於是乎 diffusion 的過程可以理解爲:s_0(噪聲) -> A -> s_1 -> ... -> A -> s_T(清晰視頻)。這其中,雖然 Sora 並沒有顯式建模世界的 dynamics,但其實在理解自然語言和視頻內容之間的關係,算是一種廣義上的世界模型。

同時,回看 Sora 的應用可以發現,Sora 其實可以拓展視頻的!也就是說,換一個角度,給定一張起始圖像(第一幀)和一個文本描述(描述包含生成視頻內容),Sora 就能生成出整個視頻,那這個過程其實可以看做是在隱式的狹義世界模型建模:s_0(第一幀)-> A -> s_{1:T} (整個視頻)。相當於是,給定了初始狀態和接下來的所有動作 A,Sora 能預測出接下來的所有狀態 s_{1:T},所以 Sora 在我看來也是一個非典型的、隱式的狹義世界模型。

值得一提的是,OpenAI 官方信息從未表示 Sora 是 world model,而是強調它是 world simulator,我也覺得 world simulator 描述比較貼切。

  1. Sora 對行業的影響

(討論區,歡迎大家評論添加)

  1. Sora 成功的關鍵(粗淺理解,歡迎指正和補充)

本篇僅僅爲個人的思考和總結,如有不妥之處,歡迎指正與交流。

【參考文獻】

[1] OpenAI. "Video generation models as world simulators." OpenAI Blog. 2024.

[2] Ho, Jonathan, Ajay Jain, and Pieter Abbeel. "Denoising diffusion probabilistic models." Advances in neural informaion processing systems 33 (2020): 6840-6851.

[3] Rombach, Robin, et al. "High-resolution image synthesis with latent diffusion models." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2022.

[4] Peebles, William, and Saining Xie. "Scalable diffusion models with transformers." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023.

[5] Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013).

[6] Betker, James, et al. "Improving image generation with better captions." Computer Science. https://cdn.openai.com/papers/dall-e-3. pdf 2.3 (2023): 8.

[7] Meng, Chenlin, et al. "Sdedit: Guided image synthesis and editing with stochastic differential equations." arXiv preprint arXiv:2108.01073 (2021).

[8] Ha, David, and Jürgen Schmidhuber. "World models." arXiv preprint arXiv:1803.10122 (2018).

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Efk-gP8iuau3crWB2wWizg