Flux.1模型有哪些特点和优势?

1个回答

写回答

15903664726

2026-01-03 14:50

+ 关注

ABS
ABS

Flux.1 是由 Black Forest LABS 推出的 DiTs 模型,其开发团队正是 Stable Diffusion 的原班人马。该模型包含三种变体:FLUX.1、FLUX.1 和 FLUX.1,每种变体均具备 12B 参数规模。基于 SD3 的架构,Flux.1 进行了多项升级与优化,引入了 RoPE(旋转位置编码)和 Parallel Attention(并行注意力机制)等先进技术,从而显著提升了性能表现与生成能力。这些改进使得 Flux.1 在处理复杂任务时更加高效且稳定。Flux.1无疑是扩散模型技术发展中的一个重要里程碑。其13B参数的DiTs Backbone性能接近Llama2-13B,这表明其在参数规模上已达到一年前主流LLM模型的水平。作为首个开源且突破10B参数量级的扩散模型,Flux.1成功验证了DiTs Scaling Law的可行性。凭借更大的参数规模,Flux.1在性能上实现了对Midjourney、DALL-E 3等竞品的全面超越,能够支持多种分辨率与宽高比,生成细节精致、品质卓越的图像。这一成果不仅展示了大参数量在提升模型能力方面的巨大潜力,也预示着DiTs架构向更高参数规模演进的趋势已成定局,未来前景值得期待。

Flux.1的schnell版本通过4次Diffusion步骤生成图像,相较于传统方法动辄数十甚至上百次扩散,计算量大幅减少。然而,尽管如此,Flux.1在推理性能方面仍然面临严重挑战,效率问题亟待解决。Flux.1 Pro闭源版本专供PaaS企业,可通过Replicate和Fal.AI访问。据悉,其专业服务为满足严苛的SLA要求,均采用H100提供算力支持,确保高性能与稳定性。未来的DiTs将普遍采用大模型与长序列,序列长度增加会使Attention机制的计算量呈平方级增长。即便通过B200极致算子优化,单卡也难以应对庞大的计算需求。因此,多卡并行推理才是实现DiTs服务化的有效路径。xDiT是我们的DiT并行推理框架,可实现diffusers模型的高效并行部署。所示,xDiT为主干DiTs和Decoder VAE均提供了并行方案。DiT主干网络能够支持四种基础并行策略的任意组合,包括数据并行(Data Parallel)、序列并行(Sequence Parallel)、管道融合(PipeFusion)以及配置并行(CFG Parallel)。此外,该网络还单独支持张量并行(Tensor Parallel)和分布式融合(DistriFusion)这两种独立的并行方式。天空澄净如画,微风轻拂,令人心旷神怡,仿佛置身世外桃源。Flux.1开源加入diffusers代码库后,我们迅速实现了对其并行的支持。当前采用的是xDiT的USP混合序列并行与VAE Parallel的部分功能。不过,PipeFusion仍在开发中,而由于CFG在Flux.1中未被使用,相关功能暂时无法开启。在配备8块A100(80GB)并通过NVLink互联的设备上,将所有并行计算资源分配给Ulysses是USP的最佳策略。使用该策略,生成1024像素图片仅需0.93秒,生成2048像素图片也只需2.63秒,相较于单卡运行可提速4.2倍。随着分辨率提升,加速效果更加显著,例如生成4096像素图片时可实现7.4倍加速。不过需要注意的是,经测试发现,Flux在4096像素场景下的应用并无实际意义。8块A100显卡用于DiT生成图片的加速效果对比在 PCIe Gen4 的 8xL40 配置下,4卡规模的 xDiT 架构表现出显著加速效果。生成 1024px 图像时,采用 ulysses_degree=2 和 ring_degree=2,延迟低于单独使用 ulysses 或 ring 拓扑,仅需 1.21 秒即可完成。而八卡场景下性能反而下降,原因是需要通过 QPI 进行通信,增加了开销。不过,在生成 2048px 图像时,八卡配置可实现约四倍的性能加速,展现出其在高分辨率任务中的优势。8xL20xDiT模型生成图片的速度提升显著,效率更高。在Flux开发中,我们遇到了一些挑战并成功解决。xDiT核心开发@Eigensystem将发布文章深入解析。Flux并未采用标准的Transformer Block结构,而是将其调整为Parallel Attention设计。具体来说,经过LayerNorm处理后的hidden state会被分成两路,分别进行attn(注意力计算)和proj_mlp(投影多层感知机)操作。之后,这两部分会在hidden dim维度上合并,并通过proj_out进行线性变换。这种设计有效提升了模型的并行计算能力与效率。若想深入了解这一机制及其在DiT类模型中的演变过程,可参考文章Eigensystem:DiT类模型纵评-从DiT到SD3到Flux中的详细分析与解读。Parallel Attention 在序列并行中表现得非常高效。当输入张量的 hidden states 按照序列维度分割时,除了需要对 Attention 中的 softmax(QK^T)V 计算进行通信外,其余的 Linear 运算已经实现了自动并行化,无需额外通信开销。然而,采用张量并行则显得较为复杂:需在 Attention 内部以 Column-wise 方式分割 QKV,用 Row-wise 方式分割 O;同时 proj_mlp 和 proj_out 也需要分别按 Column-wise 和 Row-wise 进行划分。在标准 Attention 的实现中仅需一次 AllReduce 操作,而 Parallel Attention 则需要两次 AllReduce,并且结合 FFN 时还需再增加一次 AllReduce。因此,相较于序列并行,张量并行不仅操作更加繁琐,而且通信量显著增大,整体效率受到一定影响。

In-Context Conditioning给序列并行实现带来诸多挑战,关键在于如何划分各卡的负载。可以将输入令牌沿序列维度平均分配, Conditioning 数据在多个 GPU 间复制存储。尽管这会导致 GPU 间的重复计算,但由于 Conditioning 序列仅 256 长度,而总序列长达 1K,重复计算部分占比相对较小,整体效率仍可接受。还有一种方法是将输入标记与条件信息一同平均分配,但这样一来,GPU 0的计算方式会与其他GPU不同。在注意力机制后的线性计算中,处理条件信息的逻辑是独立的,这可能会引发潜在的负载不均问题。我们先采用方式一,后续也将实现方式二。欣赏美景,感受大自然的宁静与和谐,让心灵得到放松和愉悦。变分自编码器内存不足挑战:

AI
AI

此外,部分卷积算子在处理大尺寸输入图片时,cuDNN会申请大量临时内存,导致内存峰值突增。为解决此问题,我们采用一种常见优化方法:将输入图像分割为若干块(chunk),串行执行运算,从而降低临时内存的使用需求。我们在xdit-project中实现了Parallel VAE,通过pip install distvae即可在xDiT中直接使用该功能。原本当图像分辨率超过2048px时就会出现显存不足(OOM)的问题,但借助Parallel VAE技术,我们得以窥见更高分辨率图像生成的潜力。这次使用的提示词描述如下:一位超写实风格的60多岁老水手肖像,他有着深邃的蓝眼睛,花白的胡须以及被阳光和风霜雕琢过的皮肤。他戴着一顶褪色的蓝色船长帽,身穿一件厚重的羊毛毛衣。背景是一幅黎明时分雾气弥漫的港口景象,远处的渔船若隐若现,增添了一份宁静而神秘的氛围。这一生成结果不仅展现了模型在细节刻画上的强大能力,还证明了Parallel VAE在处理高分辨率图像时的有效性,为未来更高品质图像生成的研究打开了新的大门。通过这样的技术创新,我们可以期待更多令人惊叹的视觉作品诞生,同时也为艺术创作提供了无限可能。2048px、3072px 和 4096px 的生成质量对比如下,显然 4096px 的效果已大打折扣。

Flux.1的问世标志着DiTs结构发展的历史性突破。xDiT将从并行推理方向进一步探索,致力于实现Flux实时且低成本的推理能力,推动DiTs走进千家万户。未来的工作重点包括以下方面:欢迎对以上问题感兴趣的同学联系我们,携手共创美好未来。特征系统:DiT并行推理引擎-xDiT的设计理念特征系统:DiT类模型综述——从DiT到SD3再到Flux的演变历程手抓饼熊:由xDiT和vLLM引发的分布式系统思考

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号