diff --git a/_posts/2024-02-16-openai-sora-preview.md b/_posts/2024-02-16-openai-sora-preview.md index 866a12f..c4e3cc1 100644 --- a/_posts/2024-02-16-openai-sora-preview.md +++ b/_posts/2024-02-16-openai-sora-preview.md @@ -27,10 +27,14 @@ Sora 与 Demo 一同发布了一篇技术文档:https://openai.com/research/vi > Our results suggest that scaling video generation models is a promising path ... -在文档一开头,OpenAI 就表明了,Sora 的突破其实就是 scaling laws 的又一次表现。从语言大模型的成功里得到的灵感,只要有获取更多的高质量数据,并有效地利用起来,同时增大模型的参数,就能得到更好地效果。但其中难点有很多,例如怎样获取更多的高质量数据(1080p以上的视频数据以及对应的标注),以及怎样有效地利用起来 (像语言模型一样切分为 token 并进行训练)。OpenAI 这里主要讲了他们是怎样利用这些高质量的视频数据的。 +在文档一开头,OpenAI 就表明了,Sora 的突破其实就是 scaling laws 的又一次表现。从语言大模型的成功里得到的灵感,只要有获取更多的高质量数据,并有效地利用起来,同时增大模型的参数,就能得到更好的效果。但其中难点有很多,例如怎样获取更多的高质量数据(1080p以上的视频数据以及对应的标注),以及怎样有效地利用起来 (像语言模型一样切分为 token 并进行训练)。OpenAI 这里主要讲了他们是怎样利用这些高质量的视频数据的。 -OpenAI 也展示了在不同算力支持下,1 倍基准算力训练出来的模型基本只有个大致的色块,4 倍算力训练出来的模型与 Pika,Runway 等公司的模型效果相比更接近,有了比较清晰的轮廓,但是细节仍然模糊。但 32 倍算力训练出来的模型在细节、光影、一致性上就达到了接近实拍的效果。这里的算力 OpenAI 用的是 “training compute”,没有提数据量的变化,指的应该是同样数据量下,训练的 epoch 数量和 GPU 时长的变化。 +OpenAI 也展示了在不同算力支持下: +- 1 倍基准算力训练出来的模型基本只有个大致的色块。 +- 4 倍算力训练出来的模型与 Pika,Runway 等公司的模型效果相比更接近,有了比较清晰的轮廓,但是细节仍然模糊。 +- 32 倍算力训练出来的模型在细节、光影、一致性上就达到了接近实拍的效果。 +这里的算力 OpenAI 用的词是 “training compute”,没有提数据量的变化,指的应该是同样数据量下,训练的 epoch 数量和 GPU 时长的变化。 @@ -41,7 +45,7 @@ Scaling Law 也提到,要训练更长时间,就需要有更大的模型容 ### 视频patch -语言大模型之所以可以利用起全互联网的数据,很关键的一点就是在建模时,把文本拆成了以 “token” 为最小单位,不管什么语言,在什么场景,都可以把一篇文章拆成一个由 token 组成的序列。而对于视频来讲,这里也有一个类似的概念叫 patch,这个概念不是 OpenAI 这次提出的,之前何恺明等大神也用这个方法训练了图像的 transformer,达到了图像领域的 SOTA。Patch 的概念主要是让训练的过程可以更好的并行化。 +语言大模型之所以可以利用起全互联网的数据,很关键的一点就是在建模时,把文本拆成了以 “token” 为最小单位,不管什么语言,在什么场景,都可以把一篇文章拆成一个由 token 组成的序列。而对于视频来讲,这里也有一个类似的概念叫 patch,这个概念不是 OpenAI 这次提出的,之前何恺明等大神也用这个方法训练了图像的 transformer,达到了图像领域的 SOTA。Patch 的概念主要是让训练的过程可以更好地并行化。 [![figure-patches](/img/in-post/sora/figure-patches.png)](/img/in-post/sora/figure-patches.png) @@ -51,7 +55,7 @@ Scaling Law 也提到,要训练更长时间,就需要有更大的模型容 **这两个用来生产 patch 的模型虽然篇幅不多,但我感觉是 OpenAI 能有效使用大量视频数据的关键。**Patch一定不是是每一帧对应一个 patch,因为文中也提到 Sora 在训练时,也把图片作为只有一帧的视频进行训练,说明一张图片也能生成 N 个 patch。从 OpenAI 数据驱动的风格来看,很可能这个 patch 与以往的定义不同,并不能直接映射到某一段数据上,只是一个人为定义的概念,其具体表示完全是由上面的两个模型生成的。 -由于视频 patch 的优雅设计,使得 OpenAI 可以使用不同分辨率、比率、时长的视频和图片进行训练,也一定程度上避免出现生成被裁切主体的情况。玩过 Stable Diffusion 之类的生图软件的同学应该知道,由于模型训练时把素材裁切成统一大小后进行了输入,所以当生成的图片大小与输入图片不一致时,很容易出现主体只出现一般的情况。OpenAI 的 patch 设计似乎也解决了这一点。 +由于视频 patch 的优雅设计,使得 OpenAI 可以使用不同分辨率、比率、时长的视频和图片进行训练,也一定程度上避免出现生成被裁切主体的情况。玩过 Stable Diffusion 之类的生图软件的同学应该知道,由于模型训练时把素材裁切成统一大小后进行了输入,所以当生成的图片大小与输入图片不一致时,很容易出现主体只出现一半的情况。OpenAI 的 patch 设计似乎也解决了这一点。