记录 Sora 学习的过程。对看的过程中产生的疑问,以问答形式记录一下想法。
初稿: 2024/03/04
Sora 没有公布太多细节,很多内容都是猜测,“这瓜不保熟” 😆
Sora 是一个视频生成的基础大模型,根据 Sora 技术网站(https://openai.com/research/video-generation-models-as-world-simulators)上的描述:
Q:整体是不是级联式的结构?
A:Sora 发布的视频中有一段长达一分钟的 1080p(1920x1080)视频。如果不采用级联方式,这种计算量将是巨大的。他们可能采用了级联方法,并在其后接入了空间和时间的超分辨率模块,从而提高了视频的长宽画面和帧数。级联方式应该会借鉴 DALL·E 中的技术积累。DALL·E2 的技术报告描述它使用了3 个阶段:先生成 64x64 的图,再到 256x256,最后是 1024x1024 分辨率的图。
即使采用了级联结构,主要的视频生成功能仍然由核心基础模块承担,后续级联只是起辅助作用。
另一种可能是他们没有采用级联方式,这在 transformer 架构下,结合 patchify,是有可能实现更大的压缩。随着分辨率的提升,patchify 的尺寸也可以更大。
总的来说,无论是否采用级联方式都有可能,很难判断。然而,核心的基础模块应该承担了大部分功能,这也是其强大一致性的主要来源。核心的基础模块的分辨率不会小,可能会达到512或更高的尺寸。先讨论核心的基础模块。
[R] DALL·E2: Hierarchical Text-Conditional Image Generation with CLIP Latents
Q:得到的 patches 是不是离散的?
A:说到离散,有可能指两个地方:1)划分成的 patches 是不是离散的,比如长和宽各划分成多少个格子,这个“划分格子”的过程是不是离散的?那这个过程肯定是离散的,每一个 patch 都会用一个 token 来表示,transformer 就在这些 token 上进行操作。如果是这层意思,视频原始的 pixel 表示也是离散的。
2)被表示的每个 token 的值是连续数值还是离散数值,大家讨论的更多的是这种情况。如果是离散数值,就类似 LLM 中的 token,或者是图像/视频里对应 codebook 中的序号。那 Sora 是连续的表示,没有必要表示成离散的。