自回归模型优于扩散:Llama用于可扩展的图像生成

paper是香港大学发布在Arxiv2024的工作

paper title:Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation

Code:链接

Abstract

我们介绍了LlamaGen,一种新的图像生成模型系列,它将大型语言模型的原始“下一个token预测”范式应用于视觉生成领域。这是对一个问题的肯定回答:如果适当扩展,纯粹的自回归模型,例如Llama,没有针对视觉信号的归纳偏置,能否实现最先进的图像生成性能。我们重新审视了图像标记器的设计空间、图像生成模型的可扩展性特性以及它们的训练数据质量。这个探索的结果包括:(1)一个具有16的下采样比率、0.94 rFID重建质量和97%代码本使用率的图像标记器,在ImageNet基准测试中表现出色。(2)一系列从111M到3.1B参数的类条件图像生成模型,在ImageNet 256×256基准测试中取得了2.18的FID,超过了流行的扩散模型,如LDM、DiT。(3)一个具有775M参数的文本条件图像生成模型,经过在LAION-COCO和高美学质量图像上的两阶段训练,展示了竞争性的视觉质量和文本对齐性能。(4)我们验证了LLM服务框架在优化图像生成模型推理速度方面的有效性,取得了326% - 414%的加速效果。我们发布了所有模型和代码,以促进视觉生成和多模态基础模型的开源社区发展。

图1

图1:使用纯粹自回归模型进行图像生成。我们展示了来自我们类条件图像生成模型(上排)和文本条件图像生成模型(下排)的样本。

1 Introduction

基于自回归模型,大型语言模型(LLMs)[Vaswani et al 2017; Devlin et al 2018; Radford et al 2018; Raffel et al 2020; Radford et al 2019; Brown et al 2020; Zhang et al 2022]通过预测序列中的下一个token生成文本。这种“下一个token预测”范式在以类人对话方式解决语言任务方面展示了前所未有的能力[Ouyang et al 2022; OpenAI 2022, 2023b; Google 2023; Anthropic 2023; Workshop et al 2022; Touvron et al 2023a,b; Bai et al 2023a; Yang et al 2023; Team 2023; Bi et al 2024],并展现了惊人的可扩展性[Kaplan et al 2020; Henighan et al 2020; Hoffmann et al 2022; Wei et al 2022; Alabdulmohsin et al 2022; Chowdhery et al 2023; Anil et al 2023],展示了通用人工智能模型的有希望的发展路径。

见证了自回归模型在大型语言模型中的可扩展性,开创性工作尝试在图像生成中探索自回归模型,例如VQVAE [Van Den Oord et al 2017; Razavi et al 2019]、VQGAN [Esser et al 2021; Lee et al 2022]、DALL-E [Ramesh et al 2021]、Parti [Yu et al 2021, 2022]。它们引入了图像标记器,将连续图像转换为离散标记,并应用自回归模型以下一个token预测的方式生成图像标记。它们在2022年前展示了在同类中的强大表现[Brock et al 2018; Ho et al 2020; Dhariwal & Nichol 2021]。然而,它们的开源社区发展不足,这在很大程度上限制了它们的进一步改进。

在同一时期,另一种图像生成方法——扩散模型[Song & Ermon 2019; Ho et al 2020; Song et al 2020; Dhariwal & Nichol 2021; Nichol et al 2021; Lu et al 2022a; Ho et al 2022a; Ho & Salimans 2022; Rombach et al 2022; Ramesh et al 2022; Saharia et al 2022; Rombach et al 2022]快速发展。随着它们的开源社区的扩展,它们主导了今天的视觉生成领域。然而,扩散模型与自回归语言模型有着不同的范式,这使得构建一个统一的语言与视觉模型成为一项巨大的挑战。

在本工作中,我们致力于进一步推动自回归模型在图像生成中的发展:继续其研究方法,并为开源社区做出贡献。回顾2024年前的图像生成文献,我们识别出现有先进模型的三大关键[Peebles & Xie 2023; Podell et al 2023; Xue et al 2023; Chen et al 2023b,c; Betker et al 2023; Li et al 2024; Esser et al 2024]:1)设计良好的图像压缩器,2)可扩展的图像生成模型,3)高质量的训练数据。受到这一启发,我们重新审视了图像标记器(自回归模型的图像压缩器)的设计,图像生成模型的可扩展性特性,以及训练数据的影响。

为了实现语言与视觉之间潜在的统一模型,我们的设计是减少对视觉信号的归纳偏置,并采用与LLM相同的架构。这属于与近期工作[Chang et al 2022; Yu et al 2023b; Tian et al 2024]在视觉导向设计指导下修改架构的不同研究哲学。例如,MaskGIT [Chang et al 2022]、MAGVIT [Yu et al 2023a,b]采用了遮挡图像建模策略,VAR [Tian et al 2024]使用了分层多尺度特性。尽管它们在实现领先的图像生成性能方面取得了成功,甚至超过了扩散模型,但仍不清楚原始语言模型架构是否能够实现这一点。相反,我们的工作表明,应用与语言模型完全相同的“下一个token预测”的原始自回归模型同样能够实现最先进的图像生成性能。作为额外的好处,我们可以利用LLM社区开发的技术[Dao et al 2022; Rasley et al 2020; Shoeybi et al 2019; Zhao et al 2023; Kwon et al 2023; Chen et al 2023a; Dettmers 2022]来优化训练配方和模型推理速度。

总之,我们的贡献包括:1. 图像标记器:一个下采样比率为16的图像标记器,在ImageNet基准测试中实现了0.94 rFID的重建质量和97%的代码本使用率。使用下采样比率为8时,我们的标记器在扩散模型中使用的连续VAE [Rombach et al 2022; Podell et al 2023; OpenAI 2023a]方面具有竞争力,甚至表现得更好。这表明,在图像标记器中的离散表示不再是图像重建的瓶颈。

  1. 可扩展的图像生成模型:开发了一系列类条件图像生成模型,参数范围从111M到3.1B,基于Llama架构[Touvron et al 2023a,b]。最大模型在ImageNet 256×256基准测试中实现了2.18的FID,超越了流行的扩散模型如LDM [Rombach et al 2022]、DiT [Peebles & Xie 2023]。这表明,没有视觉信号归纳偏置的纯粹自回归模型可以作为图像生成系统的基础。

  2. 高质量的训练数据:一个具有775M参数的文本条件图像生成模型,首先在LAION-COCO的50M子集上进行训练,然后在1000万张内部高美学质量图像上进行微调。它展示了在视觉质量和文本对齐方面的竞争性表现。

  3. 优化的推理速度:我们采用了vLLM [Kwon et al 2023],这是最流行的LLM服务框架之一,来优化我们图像生成模型的推理速度,并实现了326% - 414%的加速效果。

我们发布了所有模型和代码,以促进视觉生成和多模态基础模型的开源社区发展。值得注意的是,我们发布的模型仍然落后于基于扩散模型的最先进视觉生成模型 [Alpha-VLLM 2024; Esser et al 2024; Brooks et al 2024]。当未来有更多的训练数据和计算资源时,我们将探索基于自回归的大规模视觉生成模型,例如超过7B参数的模型。

2 Autoregressive Models for Image Generation

2.1 Overview


首先,图像像素x∈RH×W×3x \in \mathbb{R}^{H \times W \times 3}xRH×W×3通过图像标记器被量化为q∈Qh×wq \in \mathbb{Q}^{h \times w}qQh×w的离散标记[Van Den Oord et al. 2017; Esser et al. 2021; Yu et al. 2021],其中h=H/ph = H / ph=H/pw=W/pw = W / pw=W/pppp是图像标记器的下采样比率,q(i,j)q^{(i,j)}q(i,j)是图像码本中的索引。这些图像标记被重新排列为h⋅wh \cdot whw长度的序列,按光栅扫描顺序排列,并用于训练基于Transformer [Vaswani et al. 2017] 的自回归模型。

在图像生成过程中,图像标记(q1,q2,…,qh⋅w)(q_1, q_2, \ldots, q_{h \cdot w})(q1,q2,,qhw)由自回归模型生成[Radford et al. 2018, 2019; Brown et al. 2020; Touvron et al. 2023a],方式是通过下一个token预测:
∏t=1h⋅wp(qt∣q<t,c),\prod_{t=1}^{h \cdot w} p(q_t \mid q_{< t}, c), t=1hwp(qtq<t,c),
其中ccc是类别标签嵌入或文本嵌入。最后,这些图像标记通过图像标记器解码器转换为图像像素。

2.2 Image Tokenizer


量化自编码器架构。我们使用与VQGAN [Esser et al. 2021] 相同的架构,即编码器-量化器-解码器。编码器和解码器是带有下采样比率ppp的卷积网络。量化器包含一个码本Z∈RK×CZ \in \mathbb{R}^{K \times C}ZRK×C,其中有KKK个可学习的向量。编码器将图像像素xxx投影到特征图fff。量化过程将特征图中每个向量f(i,j)f^{(i,j)}f(i,j)映射到其最近的码本向量z(i,j)z^{(i,j)}z(i,j)的索引q(i,j)q^{(i,j)}q(i,j)。在解码过程中,索引q(i,j)q^{(i,j)}q(i,j)会重新映射为特征向量z(i,j)z^{(i,j)}z(i,j),解码器将这些特征向量转换回图像像素x^\hat{x}x^

码本对图像标记器的性能有关键影响。参考[Yu et al. 2021],我们对码本向量使用ℓ2\ell_22归一化,采用较低的码本维度CCC和较大的码本大小KKK。这些设计显著提升了重建质量和码本使用率。更多细节将在实验中讨论。

训练损失。由于量化是不可导操作,因此使用直通梯度估计器 [Bengio et al. 2013] 来保留从解码器到编码器的梯度。定义:
z=sg[z−f]+f,z = \text{sg}[z - f] + f, z=sg[zf]+f,
其中sg[⋅]\text{sg}[\cdot]sg[]是stop-gradient操作。码本学习的损失函数为:
LVQ=∥sg[f]−z∥22+β∥f−sg[z]∥22,\mathcal{L}_{VQ} = \| \text{sg}[f] - z \|_2^2 + \beta \| f - \text{sg}[z] \|_2^2, LVQ=sg[f]z22+βfsg[z]22,
第二项是承诺损失 [Van Den Oord et al. 2017],鼓励编码器提取的特征向量接近码本向量,β\betaβ是承诺损失的权重。为简化起见,我们没有添加熵损失 [Yu et al. 2023a; Chang et al. 2022]。

对于图像重建训练,损失为:
LAE=ℓ2(x,x^)+LP(x,x^)+λGLG(x^),\mathcal{L}_{AE} = \ell_2(x, \hat{x}) + \mathcal{L}_P(x, \hat{x}) + \lambda_G \mathcal{L}_G(\hat{x}), LAE=2(x,x^)+LP(x,x^)+λGLG(x^),
其中ℓ2\ell_22是图像像素的重建损失,LP(⋅)\mathcal{L}_P(\cdot)LP() 是来自LPIPS [Zhang et al. 2018] 的感知损失,LG(⋅)\mathcal{L}_G(\cdot)LG() 是使用与图像标记器同时训练的PatchGAN [Isola et al. 2017] 判别器得到的对抗损失,λG\lambda_GλG 是对抗损失的权重。

表1

表1:LlamaGen的模型规模和架构配置。配置参考了前人的工作 [Radford et al 2019; Touvron et al 2023a; OpenLM-Research 2023]。

2.3 Image Generation by Autoregressive Models


Llama 架构。我们的模型架构主要基于 Llama [Touvron et al 2023a,b],采用 RMSNorm [Zhang & Sennrich 2019] 进行预归一化,使用 SwiGLU 激活函数 [Shazeer 2020],以及旋转位置嵌入(rotary positional embeddings)[Su et al 2024]。具体来说,我们在模型的每一层中使用二维 RoPE,参考了 [Lu et al 2023; Fang et al 2023] 的实现。我们未使用 AdaLN 技术 [Peebles & Xie 2023],以保持结构与原始 LLM 相同。

类别条件图像生成。类别嵌入从一组可学习的嵌入中索引得到 [Peebles & Xie 2023; Esser et al 2021],并作为前填充 token 嵌入使用。

从该 token 嵌入开始,模型通过下一个 token 预测的方式生成图像 token 序列,并在达到预设最大长度的位置停止。

文本条件图像生成。为了将文本条件集成到自回归模型中,我们使用 FLAN-T5 XL [Chung et al 2024] 作为文本编码器,编码后的文本特征通过一个额外的 MLP 投影 [Chen et al 2023b,c],并作为自回归模型中的前填充 token 嵌入使用。我们指出,这种设计并不是多模态基础模型的最终方案,后者会在语言和视觉之间建立统一的词汇表 [Lu et al 2023; Team et al 2023]。

我们将这一方向留待未来研究探索。

Classifier-free guidance(无分类器引导)。该方法起源于扩散模型社区,由 Ho & Salimans (2022) 提出,以其提升图像质量和文本-图像对齐效果而广为人知。我们在模型中采用了这一策略。在训练期间,条件输入会被随机丢弃,替换为一个“无条件嵌入” [Peebles & Xie 2023; Chen et al. 2023b]。在推理阶段,对于每一个 token,其 logit ℓg\ell_gg 的计算方式为:
ℓg=ℓu+s(ℓc−ℓu),\ell_g = \ell_u + s(\ell_c - \ell_u), g=u+s(cu),
其中 ℓc\ell_cc 是有条件的 logit,ℓu\ell_uu 是无条件的 logit,sss 是无分类器引导的放大系数。

值得注意的是,目前所讨论的设计选择在很大程度上受到已有工作的启发,例如,图像标记器借鉴自 [Rombach et al. 2022; Yu et al. 2021],图像生成方法源于 [Peebles & Xie 2023; Chen et al. 2023b; Esser et al. 2021]。这些技术在扩散模型中已被广泛研究,而在自回归模型中尚属稀缺。我们的工作将这些先进设计集成应用于基于自回归的视觉生成模型中。

2.4 Scale Up


我们的模型架构与 Llama 几乎相同,这使我们能够无缝地采用 LLM 社区中的优化技术 [Zhang & Sennrich 2019; Shazeer 2020; Su et al 2024] 和训练策略 [Dao et al 2022; Rasley et al 2020; Shoeybi et al 2019]。如表1所示,我们在本工作中将模型规模扩展至 31 亿参数。所有模型均基于 PyTorch 2 [Ansel et al 2024] 实现,并在 80GB 的 A100 GPU 上进行训练。对于参数量小于 14 亿的模型,我们直接使用 DDP 进行训练;而对于更大的模型,我们采用 PyTorch FSDP [Zhao et al 2023] 以优化 GPU 内存使用。

2.5 Serving


自回归模型一直存在推理速度慢的问题。随着大语言模型的快速发展,LLM 社区提出了一系列先进的推理优化技术 [Kwon et al 2023; Chen et al 2023a; Dettmers 2022] 来提升推理效率。

与训练过程类似,LLM 社区开发的推理加速方法同样可以应用于我们的方法中以优化模型推理性能。我们验证了当前最流行的 LLM 服务框架之一 vLLM [Kwon et al 2023] 在图像生成任务中的有效性。如表7所示,与基线设置相比,我们的推理速度提升达到了 326% 至 414%。

表7

表7:使用 vLLM 服务框架优化后的推理速度。推理时间针对一个批次共16张图像(使用 classifier-free guidance 生成8张图像)。所有模型的图像分辨率均为 384×384。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89641.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89641.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89641.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高频SQL50题 第九天 | 1164. 指定日期的产品价格、1204. 最后一个能进入巴士的人、1907. 按分类统计薪水

1164. 指定日期的产品价格 题目链接&#xff1a;https://leetcode.cn/problems/product-price-at-a-given-date/description/?envTypestudy-plan-v2&envIdsql-free-50 状态&#xff1a;已完成 考点&#xff1a; group by select语句中使用聚合函数max()&#xff1a;获取…

Java内存模型(JMM)深度解析

1. 引言 在当今多核处理器和并发编程盛行的时代&#xff0c;Java工程师们在构建高性能、高可用系统时&#xff0c;常常会面临复杂的线程安全挑战。数据不一致、竞态条件、死锁等问题&#xff0c;不仅难以调试&#xff0c;更可能导致系统行为异常。这些问题的根源&#xff0c;往…

参数仅 12B! FLUX.1-Kontext-dev 实现高效文本驱动图像编辑,性能媲美 GPT-4o

FLUX.1-Kontext-dev 是由 Black Forest Labs 团队于 2025 年 6 月 26 日联合发布的生成与编辑图像的流匹配&#xff08;flow matching&#xff09;模型。FLUX.1 Kontext 的图像编辑是广泛意义上的图像编辑&#xff0c;不仅支持图像局部编辑&#xff08;对图像中的特定元素进行针…

Robot---能打羽毛球的机器人

1 前言 Robot系列主要介绍一些比较有意思的机器人&#xff0c;前面的博客文章中也给读者朋友们展示了一些&#xff1a; 《人形机器人---越来越像人了》 《自动驾驶---两轮自行车的自主导航》 《自动驾驶---会打架的“球形机器人”》 《Robot---SPLITTER行星探测机器人》 《Robo…

浏览器默认非安全端口列表

浏览器默认非安全端口列表: https://chromium.googlesource.com/chromium/src.git//refs/heads/master/net/base/port_util.cc 0, // Not in Fetch Spec.1, // tcpmux7, // echo9, // discard11, // systat13, // daytime15, // netstat17, …

在线租房平台源码+springboot+vue3(前后端分离)

大家好&#xff0c;今天给大家带来一个非常完善的 在线租房平台。大家可用学习下系统的设计和源码风格。 视频演示 在线租房平台源码springbootvue3 图片演示 技术栈 后端 技术框架&#xff1a;JDK8SpringBoot Mybatis-Plus 数据库&#xff1a;Mysql8 前端 核心框架 - Vue…

android核心技术摘要

Android APP 默认赋予权限apk签名 apk签名&#xff1a;https://blog.csdn.net/u014763302/article/details/149055647apksign使用反法&#xff1a;[https://www.cnblogs.com/fengxing999/p/11978037.html]从Android源码生成系统签名文件&#xff1a;https://blog.csdn.net/wenz…

离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制

背景&#xff1a; 在进行深度学习算法的环境部署时&#xff0c;由于生产服务器被彻底隔离外网&#xff0c;只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到离线 Windows 服务器。 其中一运行labelimg就报错&#xff1a; Fatal error in launcher: Unable to creat…

vue3+原生javascript 手写日期时间选择框 滚动选择可输入

需求&#xff1a; web端 想要跟手机端一样选择年月日时分&#xff0c;通过滚动选择 实现效果图&#xff1a; 理念&#xff1a; 1.年月日时分 分别为单个输入框&#xff0c;用来做输入修改 2.div把输入框拼接起来&#xff0c;显示出一个日期框的样子 3.年月日时分 下拉给默…

Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类

最近由于业务需求&#xff0c;接触到了Jetson边缘AI计算主板&#xff0c;博主使用的是Jetson Orin NX 16GB这个版本&#xff0c;可以看到其算力达到了100TOPS&#xff0c;这是一个非常恐怖的算力了&#xff0c;接下来便是博主对其的环境配置过程&#xff0c;博主要在该主板上运…

CLIP模型实现中的其他细节

之前已经完整的拆解了CLIP中所用到的ResNet、ViT和Transformer三个模型&#xff08;CLIP拆解-CSDN博客&#xff09;&#xff0c;这篇将讲解model.py实现中的其他细节。 1.关于ResNet模型中vision_head的设置 ResNet: vision_heads vision_width * 32 // 64 ViT: vision_h…

国科大深度学习作业1-手写数字识别实验

背景介绍&#xff1a;单位实习&#xff0c;趁机摸鱼&#xff0c;由于电脑只安装了VSCode&#xff0c;所以算是从环境搭建写起。 目录 一、环境搭建 1. 安装Anaconda 2. 创建Python环境 3. 安装PyTorch 4. 安装其他必要库 二、在 VSCode 中配置环境 1. 安装Pytho…

基于Spring Boot的绿园社区团购系统的设计与实现

第1章 摘 要 本设计与实现的基于Spring Boot的绿园社区团购系统&#xff0c;旨在为社区居民提供一套高效、便捷的团购购物解决方案。随着电子商务的发展和社区居民对便捷购物需求的增加&#xff0c;传统的团购模式已无法满足用户的个性化需求。本系统通过整合现代化技术&…

【51单片机四位数码管从0循环显示到99,每0.5秒增加一个数字,打击键计数】2022-6-11

缘由 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64,15,56}; //共阴0~F消隐减号 unsigned char Js0, miao0;//中断计时 秒 分 时 毫秒 unsigned int shu0; //bit Mb0;//…

如何通过python脚本向redis和mongoDB传点位数据

向MongoDB传数据 from pymongo import MongoClient #导入库对应的库localhost "172.16.0.203" #数据库IP地址 baseName "GreenNagoya" client MongoClient(localhost, 27017, username"admin", password"zdiai123") #数…

昆仑通泰触摸屏Modbus TCP服务器工程 || TCP客户端工程

目录 一、Modbus TCP服务端 1.设备地址 2.实操及数据 二、Modbus TCP客户端 1.结果及协议解析 一、Modbus TCP服务端 1.设备地址 --单元标识符 DI输入/4个离散输入 DO输出/单个线圈输出 输入寄存器 读输入寄存器操作&#xff0c;写输入寄存器操作 保持寄存器 …

PyTorch 安装使用教程

一、PyTorch 简介 PyTorch 是由 Facebook AI Research 团队开发的开源深度学习框架。它以动态图机制、灵活性强、易于调试而著称&#xff0c;广泛应用于自然语言处理、计算机视觉和学术研究。 二、安装 PyTorch 2.1 通过官网选择安装命令&#xff08;推荐&#xff09; 访问官…

开源功能开关(feature flags) 和管理平台之unleash

文章目录 背景Flagsmith 和 Unleash什么是unleash架构Unleash Edge 安装和使用Unleash SDKs开放API Tokens访问**Server-side SDK (CLIENT)****查询所有 Feature Toggles****查询特定 Toggle** API token typesClient tokensFrontend tokensPersonal access tokensService acco…

细胞建模“图灵测试”:解析学习虚拟细胞挑战赛

一、AI能否预测细胞的未来&#xff1f; 想象一下&#xff0c;有一天我们不必一管管地做实验&#xff0c;就能在计算机中模拟细胞对基因敲除、药物处理乃至微环境变化的反应。这不再是科幻&#xff0c;而是“虚拟细胞”&#xff08;Virtual Cell&#xff09;研究的宏大目标。然…

centos9安装docker Dify

CentOS | Docker Docs yum -y install gcc gcc-c yum-utils Docker 官方的 YUM 软件仓库配置文件到系统,设置存储库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 也可以从阿里云下(我选择上面的) yum-config-manager --add-re…