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