當前位置: 妍妍網 > 碼農

Sora:技術細節推測與原理解讀

2024-03-04碼農

技術圈每年都會有一個概念火爆全網,從 21 世紀第一個十年以來,中文技術圈流行過的概念包括但不限於: 移動開發、人工智慧、區塊鏈、低程式碼、元宇宙、NFT……

創投圈有句名言——「領先半步是先驅,領先一步是先烈」,低程式碼的熱度已經雕零,元宇宙的風隨著 Vision Pro 的釋出做了個仰臥起坐,又躺了回去。只有以 ChatGPT 為代表的大語言模型,才真正把人工智慧的熱度重新拉了起來,推到了一個前所未有的高度——以前覺得 AGI 是癡人說夢,現在看發現自己可能才是坐井觀天。
每個時代總會有所謂的大勢,也總會有「好風憑借力,送我上青雲」的機遇,總有人要起飛,為什麽不是你?拋開炒作的喧囂,回歸技術的本源,先從了解、理解新興技術開始。



01



背景

在國內外大多數 AI 廠商還在卷大語言模型之際,OpenAI 悄無聲息地釋出了文生視訊(text-to-video,簡稱 t2v)模型 Sora [1],僅僅幾個視訊 demo,就讓整個 AI 圈子從驚訝到恐懼,驚訝於 Sora 生成的視訊已經到達工業套用級別,恐懼於現有的 t2v 模型與 Sora 的差距竟然如此之大。

Sora 要解決的任務其實非常好理解,就是給定一段文本,模型需要根據該文本生成相應的視訊,簡單說就是 text-to-video(t2v)。t2v 本身並不是一個新問題,很多廠商都在研究 t2v 模型,只是當前的 t2v 模型生成的視訊普遍品質較差,很難到達工業套用級別。在 Sora 出現前大家的普遍認知是:t2v 是一個很難的任務,工業級別 t2v 模型(或者說能真正實用的 t2v 模型)短時間內應該很難實作。然而,OpenAI 又又又一次打了所有人的臉,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:該技術報告非常簡陋,技術細節幾乎沒有,只給了大致的建模方法。



02



Sora 原理解讀

2.1 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.2 Sora 的重要性質

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

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

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

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

2.3 重要細節推測

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

(1) Visual Encoder 可能的結構:因為 Sora 在 V isual 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.4 尚未披露關鍵資訊

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

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

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

(4)如何處理高幀率、時間長、高分辨率的視訊?目前主流的視訊生成模型都是 cascade 結構,也就是先生成低分辨率、低幀率的視訊,再不斷地在時間和空間維度上 upsample。不知道 Sora 是否是直接一次性輸出其展示的結果,如果是那樣,那又會有多少 token 呢?


(5)如何解決 motion 的問題?目前的視訊生成模型普遍生成的 motion 都不太好,最簡單的例子就是「人走路」,大部份模型無法生成連貫的、長時間的、合理的人行走的過程。而 Sora 生成的結果在連貫性、合理性上相比之前的模型都有著斷代的領先。那到底是什麽促使了這樣的結果呢?是模型尺寸的 scale up 嗎?需要 scale up 到什麽 size?還是數據的收集和清洗呢?以及要做到什麽程度呢?

2.5 Sora 的套用

  • 視訊創作:使用者可以根據文本生成高品質視訊;

  • 擴充套件視訊:可以在給定的視訊或圖片基礎上,繼續向前或向後延申視訊;

  • Video-to-video editing:例如將 SDEdit [7] 套用於 Sora,可以很容易改變原視訊的風格;

  • 視訊連結/過渡/轉場:可以將兩個視訊巧妙地融合到一起,使用 Sora 在兩個輸入視訊之間逐漸進行插值,從而在具有完全不同主題和場景構成的視訊之間建立無縫過渡;

  • 文生圖:影像可以視為單幀的視訊,故 Sora 也能實作文生圖。

  • 2.6 Sora 的局限性

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

    總結一下主要是:

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

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



    03



    Sora 對行業的影響

    Sora 釋出以後,國內的創投圈敏銳地發現了其可能對行業造成的沖擊與影響。事實上,早在此前的 OpenAI 首次開發者大會上釋出的 AI Agent 功能,就幾乎宣布了一大批 Agent 領域創業公司的「死亡」。


    這次 Sora 的釋出,對 AI 視訊行業而言不啻為一記驚雷,從好的角度想可以看到未來的前景非常廣闊,然而從版本落後者的角度來看,也部份解決了領域創業者的焦慮——反正也追不上了?
    除了顯而易見的 AI 視訊行業,傳統影視公司、遊戲公司以及廣告行銷類行業,可能都會迎來不小的沖擊與機遇。

  • 短視訊內容創作可能進入新的時代:Sora 可以提供豐富的視訊素材;

  • 視訊剪輯和編輯:Sora 具備相關套用能力;

  • 更逼真的數位人:使用者可以得到自己的「理想型」;

  • 娛樂化:從影像一鍵生成視訊;

  • 遊戲行業:遊戲引擎受到 Sora 挑戰;

  • 圖形學:未來可能不復存在。

  • (留言討論區,歡迎大家評論補充)



    04



    Sora 成功的關鍵

  • 大規模訓練: 這點毋庸置疑。大模型、大數據量、使用大規模算力,OpenAI 基本操作。

  • 敢於突破常規、不屑於刷點: 之前工作基本都采用 SD 預訓練的 Visual E ncoder,也知道該 encoder 多少有點不合理(比如只能處理固定 size 的輸入),但沒有人真的去重新訓練一個更合理的 encoder(當然,更可能是算力不支持)。而 OpenAI 發現問題,就用算力來解決問題(大機率重新訓練 Visual E ncoder)。

  • 實事求是+絕對領先的 sense: 自回歸的建模方式在 LLM 中大獲成功,GPT 系列也出自 OpenAI,但這不代表「Autoregressive is everything」,Sora 告訴大家,生成視訊無需采用自回歸,直接 3D 建模 + Transformer encoder 結構就 ok。

  • AGI 理念從上至下傳播: Sam Altman 絕對是一個有大格局的人物,其最終目標是實作 AGI,我想整個 OpenAI 應該都會貫徹這樣的理念,不管是 ChatGPT 還是 Sora,都能看到 AGI 的影子。



  • 05



    寫在最後

    張小龍曾經提到過一個觀點,「財富就是知識」。我們以前會認為財富是資源、資產、土地、房子等等,但在現在和未來的社會裏,財富的本質就是知識,是知識所創造的價值。譬如一輛100萬美元的法拉利跑車,如果撞毀變成一堆廢鐵,這堆廢鐵大概只能賣1萬美元,也就是說,這輛法拉利裏有99萬美元是由「如何把鐵組裝成汽車」的知識所創造的價值。我們現在生活的社會,人類創造的財富要遠遠超過10萬年前,這些財富不是自然界賦予的,是人類用不斷增長的知識創造的。
    無論是此前的 ChatGPT 還是現在的 Sora,如果你不去了解它的知識從而轉化為自身的價值,你或許就是最容易被替代的那個人。
    Sora 在日語中是「天空」的意思,引申含義還有「自由」。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 information 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).

    -End-

    原創作者|俞濤

    關註 頂尖架構師棧,添加「星標」

    獲取每天技術幹貨,突破自我,成為牛逼架構師

    Sora資料

    這段時間整理了一份最全面的資料,關於sora介紹,原理,變現玩法,行業解讀,各路大神觀點等等,如果需要可以聯系下方二維碼領取。

    組建了程式設計師,架構師,IT從業者交流群,以 交流技術 職位內推 行業探討 為主,