(2024,LlamaGen,Llama,自回归下一token预测,模型扩展)自回归模型优于扩散:Llama 用于可扩展图像生成

news2024/11/14 20:29:42

Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation

目录

0. 摘要

1. 引言

2. 自回归模型在图像生成中的应用

2.1 概述

2.2 图像 tokenizer

2.3 自回归模型生成图像

2.4 规模扩展

2.5 服务

3. 实验

5. 结论


0. 摘要

我们介绍 LlamaGen,一个新的图像生成模型家族,该模型将大型语言模型(LLM)的原始 “下一 token 预测” 范式应用于视觉生成领域。这是对纯粹的自回归模型(例如 Llama)在没有视觉信号上的归纳偏差的情况下,通过适当扩展,是否能实现最先进的图像生成性能的肯定回答。我们重新审视了图像 tokenizer 的设计空间、图像生成模型的可扩展性属性及其训练数据质量。这次探索的成果包括:

  • 一个图像 tokenizer,具有 16 倍的下采样比,在 ImageNet 基准测试中实现了 0.94 的 rFID 重建质量和 97% 的码本使用率。
  • 一系列类别条件的图像生成模型,参数从 111M 到 3.1B 不等,在 ImageNet 256×256 基准测试中实现了 2.18 的 FID,超过了流行的扩散模型如 LDM 和 DiT。
  • 一个具有 775M 参数的文本条件图像生成模型,通过在 LAION-COCO 和高美学质量图像上的两阶段训练,展示了在视觉质量和文本对齐方面的竞争性能。
  • 我们验证了 LLM 服务框架在优化图像生成模型推理速度方面的有效性,实现了 326% - 414% 的加速。

我们发布了所有模型和代码,以促进开源社区的视觉生成和多模态基础模型的发展。

1. 引言

基于自回归模型,大型语言模型(LLMs)通过预测序列中的下一个 token 来生成文本。这种 “下一 token 预测” 范式在以类似人类对话的方式解决语言任务方面表现出了前所未有的能力,并展现了惊人的可扩展性,显示了通用人工智能模型的潜在路径。

自回归模型在大型语言模型上的可扩展性被验证后,先驱性工作尝试探索自回归模型在图像生成中的应用,例如,VQVAE ,DALL-E,Parti。他们引入图像 tokenizer,将连续图像转换为离散 token,并应用自回归模型以 “下一 token 预测” 的方式生成图像 token。他们在 2022 年前的同类中表现出了强大的性能。然而,他们的开源社区发展不完善,这在很大程度上限制了其进一步的改进。

同期,另一种图像生成方法,扩散模型快速发展。伴随着其开源社区,他们主导了直到今天的视觉生成领域。然而,扩散模型与自回归语言模型有着截然不同的范式,这对构建统一的语言和视觉模型提出了巨大的挑战。

在这项工作中,我们致力于进一步推进自回归模型在图像生成方面的应用:继续其研究方法并为开源社区做出贡献。回顾 2024 年前的图像生成文献,我们确定了现有高级模型的三个关键点:1)精心设计的图像压缩器,2)可扩展的图像生成模型,和 3)高质量的训练数据。受此启发,我们重新审视了图像 tokenizer(自回归模型的图像压缩器)的设计、图像生成模型的可扩展性属性及其训练数据的影响

为了实现语言和视觉之间潜在的统一模型,我们的设计是减少对视觉信号的归纳偏差,并采用与 LLM 相同的架构。这与最近的一些工作所采用的以视觉为导向的设计不同。例如,MaskGIT 和 MAGVIT 采用了掩码图像建模策略,VAR 使用了分层多尺度属性。尽管它们在实现领先的图像生成性能方面取得了成功,甚至超过了扩散模型,但仍不清楚原始语言模型架构是否具备这种能力。相反,我们的工作揭示了应用与语言模型完全相同的 “下一 token 预测” 的纯粹自回归模型也能够实现最先进的图像生成性能。额外的好处是,我们可以利用 LLM 社区开发的技术来优化我们模型的训练配方和推理速度。

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

2. 自回归模型在图像生成中的应用

2.1 概述

首先,图像像素 x∈R^(H×W×3) 被图像 tokenizer 量化为 q∈Q^(h×w) 的离散 token,其中 h=H/p,w=W/p,p 是图像 tokenizer 的下采样率,q^(i,j) 是图像码本的索引。然后,这些图像 token 被重新排列为按照栅格扫描顺序的 h⋅w 个 token 序列,并用于训练基于 Transformer 的自回归模型。

在图像生成过程中,图像 token (q1,q2,...,q_(h⋅w)) 由自回归模型通过 “下一 token 预测” 的方式生成:

其中 c 是类别标签嵌入或文本嵌入。最后,这些图像 token 通过图像 tokenizer 解码器转换为图像像素。

2.2 图像 tokenizer

量化自编码器架构。我们使用与 VQGAN 相同的架构,即编码器-量化器-解码器。编码器和解码器是具有下采样比率 p 的卷积网络。量化器包含一个码本 Z∈R^(K×C),其中有 K 个可学习的向量。编码器将图像像素 x 投射到特征图 f。量化过程将特征图中的每个向量 f^(i,j) 映射到码本中最接近的向量 z^(i,j) 的编码索引 q^(i,j)。在解码过程中,编码索引 q^(i,j) 被重新映射到特征向量 z^(i,j),解码器将这些特征向量转换回图像像素 ^x。

码本对图像 tokenization 性能有重大影响。根据 [Yu等人 2021],我们对码本向量使用 ℓ_2 正则化、低码本向量维度 C 和大码本大小 K。这些设计显著提高了重建质量和码本的使用率。更多细节将在实验中讨论。

训练损失。由于量化是不可微操作,使用直通梯度估计器(straight-through gradient
estimator)来保持从解码器到编码器的梯度:z = sg[z−f] + f,其中 sg[⋅] 是停止梯度操作。对于码本学习:L_VQ = || sg[f] − z ||^2_2 + β·|| f − sg[z] ||^2_2,其中第二项是 commitment loss,迫使从编码器提取的特征向量接近码本向量,β 是 权重。为了简化,我们在码本学习中不添加熵损失 [Yu等人 2023a; Chang等人 2022]。

对于图像重建训练:

其中 ℓ_2 是图像像素的重建损失,L_P(⋅) 是来自 LPIPS 的感知损失,LG(⋅) 是与图像 tokenizer 同时训练的 PatchGAN [Isola等人 2017] 鉴别器的对抗损失,λ_G 是对抗损失权重。

2.3 自回归模型生成图像

Llama 架构。我们的模型架构主要基于 Llama,应用了 RMSNorm 进行预归一化(pre-normalization),SwiGLU 激活函数,以及旋转位置嵌入。具体来说,我们在每一层模型中使用 2D RoPE,按照 [Lu et al. 2023; Fang et al. 2023] 的实现方法。我们不使用 AdaLN 技术,以保持我们的结构与 LLM 一致。

类别条件图像生成。类别嵌入从一组可学习的嵌入中索引,并用作预填充 token 嵌入。从这个 token 嵌入开始,模型通过下一 token 预测的方式生成图像 token 序列,并在预定义的最大长度位置停止。

文本条件图像生成。为了将文本条件整合到自回归模型中,我们使用 FLAN-T5 XL 作为文本编码器,编码后的文本特征通过一个额外的 MLP 投影,并用作自回归模型中的预填充 token 嵌入。我们注意到这种设计并不是多模态基础模型的最终设计,其中语言和视觉之间建立了统一的词汇表。我们将其留待未来研究。

无分类器指导。在扩散模型社区中开发的无分类器指导以其提高视觉质量和文本图像对齐而闻名。我们在我们的模型中采用了这一方法。在训练过程中,条件随机丢弃,并被一个空的无条件嵌入取代。在推理时,对于每个 token,其 logit ℓ_g 由 ℓ_g = ℓ_u + s(ℓ_c − ℓ+u) 形成,其中 ℓ_c 是条件 logit,ℓ_u 是无条件 logit,s 是无分类器指导的缩放比例。

值得注意的是,迄今为止讨论的所有设计选择主要受到先前工作的启发,例如,图像 tokenizer 借鉴自 [Rombach et al. 2022; Yu et al. 2021],图像生成来自 [Peebles & Xie 2023; Chen et al. 2023b; Esser et al. 2021]。这些技术的大部分在扩散模型中研究得很好,但在自回归模型中研究得较少。我们的工作将这些先进的设计集体适应于基于自回归的视觉生成模型。

2.4 规模扩展

我们的模型架构与 Llama 几乎相同,这使我们能够无缝采用 LLM 社区中的优化技术和训练方案。如表 1 所示,我们在这项工作中将模型规模扩展到 3.1B 参数。所有模型都使用 PyTorch 2 实现,并在 80GB A100 GPU 上进行训练。对于参数少于 1.4B 的模型,我们直接使用 DDP,否则,我们采用 PyTorch FSDP 来优化 GPU 内存使用。

2.5 服务

自回归模型一直受困于其低推理速度。随着大规模语言模型的快速发展,LLM 社区提出了高级推理技术来优化推理速度。与训练类似,LLM 社区开发的推理技术也可以用来优化我们的模型。我们验证了 vLLM 这一最流行的 LLM 服务框架之一在我们的图像生成方法上的有效性。如表 7 所示,与基线设置相比,实现了 326% - 414% 的加速。

3. 实验

5. 结论

在这项工作中,我们深入研究了用于可扩展图像生成的普通自回归模型。通过重新审视其图像 tokenizer、图像生成模型和训练数据,我们的类别条件模型优于流行的扩散模型,而我们的文本条件模型在视觉质量和文本对齐方面表现出竞争力。 

论文地址:https://arxiv.org/abs/2406.06525

项目页面:https://github.com/FoundationVision/LlamaGen 

公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)
加 VX 群请备注学校 / 单位 + 研究方向 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用mid360从0开始搭建实物机器人入门级导航系统,基于Fast_Lio,Move_Base

Introduction 本文原本只是自己在拿到mid360后,开始进行开发过程的一些问题和学习的记录。毕竟实物和仿真还是有很多不同,且由于碰到的问题也比较多,READEME也越来越详细,所以就干脆整合起来,做成了一篇使用mid360的搭…

嵌入式初学-C语言-十一

#接嵌入式初学-C语言-十,以及部分例题# 循环结构 break和continue break 功能: 1. 用在switch中,用来跳出switch的case语句;如果case没有break,可能会产生case穿透。 2. 用在循环中(while、do..while、for..&#…

Linux压缩/解压缩工具:tar命令详解

目录 一、概述 二、基本概念 三、tar命令的基本语法 1、基本语法 2、常用选项 3、帮助获取 四、用法和示例 1. 创建归档文件 (1)用法 (2)示例 2. 解压缩归档文件 (1)用法 (2&#…

经典非比较排序—计数排序的Java实现方式

目录 1.具体思路: 2.代码实现: 3.代码分析 4.示例测试: 测试源码: 测试结果: 计数排序,又被称为鸽巢原理,属于桶排序的一种,其本质是通过哈希映射思想,设定计数数组输入以…

音视频入门基础:WAV专题(5)——FFmpeg源码中解码WAV Header的实现

音视频入门基础:WAV专题系列文章: 音视频入门基础:WAV专题(1)——使用FFmpeg命令生成WAV音频文件 音视频入门基础:WAV专题(2)——WAV格式简介 音视频入门基础:WAV专题…

论文翻译:Large Language Models in Education: Vision and Opportunities

Large Language Models in Education: Vision and Opportunities 文章目录 教育中的大型语言模型:愿景与机遇摘要1 引言2. 教育与LLMsA. 教育背景B. LLMs背景C. 智能教育D. 教育中的LLMs 3. EduLLMs的关键技术4. LLM赋能教育A. LLMs在教育中的应用B. LLMs下教育的特…

免费分享:全国传统村落空间分布数据(附下载方法)

数据简介 本数据是在中国传统村落名录的基础上,通过地理编码,制作成具有空间坐标信息的矢量数据。 数据属性 数据名称:全国传统村落空间分布数据数据时间:2012年至今,更新至第五批空间位置:全国数据格式&…

opencascade AIS_TrihedronOwner源码学习对象的实体所有者用于选择管理

opencascade AIS_TrihedronOwner 前言 AIS_Trihedron对象的实体所有者用于选择管理。 在OpenCascade的AIS(交互对象框架)中,管理类似AIS_Trihedron的对象的选择涉及理解如何处理实体(或所有者)以进行选择。 方法 1…

【单片机毕业设计选题24095】-基于手机端的电池电压采集系统

系统功能: 系统上电后,OLED显示三组18650锂电池电压。 第一行显示第一组锂电池电压 第二行显示第二组锂电池电压 第三行显示第三组锂电池电压 第四行显示电压设定阈值 短按B4按键增加电压设定阈值 短按B5按键减小电压设定阈值 如果任意一组电池电压小于电压…

红酒与季节:品味四季的风情

四季轮转,岁月更迭,每个季节都有其不同的韵味与风情。当定制红酒洒派红酒(Bold & Generous)与四季相遇,它们共同编织出一幅幅美丽的味觉画卷,让我们在品味中感受四季的风情。 一、春之序曲&#xff1a…

【ESP01开发实例】-ESP-01驱动DHT11和DH22传感器

ESP-01驱动DHT11和DH22传感器 文章目录 ESP-01驱动DHT11和DH22传感器1、DHT11/DHT22传感器介绍2、LCD1602介绍3、硬件准备与接线4、代码实现本主题介绍如何使用 DHT11 和 DHT22 相对湿度和温度传感器与 ESP8266 ESP-01 Wi-Fi 模块,将相对湿度和温度的测量值显示在 162 LCD 屏幕…

C++回顾——多态

一、定义 ①从广义上说,多态性是指:一段程序能够处理多种类型对象的能力。在C语言中,这种多态性可以通过包含多态4种形式来实现。强制多态、重载多态、类型参数化多态、包含多态。 ②从实现上来说,多态的分类:静态多态、动态多态。 二、 广…

云原生安全检测工具(容器安全、trivy、veinmind-tools)

目录 trivy 功能 扫描方式&目标 安装 漏洞库下载及更新 漏洞库扫描原理 官方漏洞库生成 使用 扫描镜像 扫描 wazuh-daemonset 所有漏洞 扫描 wazuh-daemonset 高危、严重漏洞(漏洞过滤) 扫描文件系统 Git 存储库漏洞扫描 报告输出格式 veinmind-tools 1.…

Vue的学习(一)

目录 一、Vue的介绍 二、指令 1.v-text 2.v-html 3.v-show 4.v-if 1)v-if与v-show的区别 5.v-else 6.v-else-if 7.v-for 1)v-for 与v-if的优先级 8.v-on:click 9.v-bind 10.v-model 三、表单修饰符 1. .lazy 修饰符 2. .number修饰符…

算法通关:014_2:用队列实现栈

文章目录 题目思路问题总结导包有问题,java提供的有关队列的方法不能调用。queue.add()和queue.offer(n),这两个方法有什么区别什么叫用LinkedList实现队列 代码结果 题目 LeetCode 225. 用队列实现栈 思路 问题总结 导包有问题,java提供的…

银行业数据分析的关键应用场景探索

“ 随着数字经济的蓬勃发展,银行业正经历着前所未有的变革。从传统的存贷款业务到如今的数字化服务,数据分析在银行中扮演着核心角色。本文将探讨银行业数据分析的主要场景,以及选型适配银行业分析需求的数据库技术。” 国内的商业化银行大体…

二维码直达App,Xinstall为你打通运营任督二脉

在移动互联网时代,App的推广和运营显得尤为重要。然而,许多企业在投入大量资源进行App推广和运营时,总会遇到一些棘手的问题,如用户转化率低、数据分析困难等。今天,我们要为大家揭秘一个神奇的助手——Xinstall&#…

RocketMQ5.0 生产者

生产者消息类型: 延迟队列的生产者 package mainimport ("context""fmt""github.com/apache/rocketmq-clients/golang/v5""github.com/apache/rocketmq-clients/golang/v5/credentials"errgroup2 "golang.org/x/sync…

实现函数返回字符的种类

文章目录 一、题目二、思路三、代码实现 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 例如: 分别输入:a B 6分别输出:# * ? 二、思路 第一步 获取键盘输入的字符,键盘输入的话…