distrifuser
distrifuser 是一款专为高分辨率扩散模型设计的分布式并行推理加速工具,曾入选 CVPR 2024 亮点论文。它主要解决了在生成超高清图像(如 3840×3840 分辨率)时,单张显卡显存不足或计算速度过慢的瓶颈问题。
传统的多卡并行方案往往简单地将图片切割分配给不同显卡,导致拼接处出现明显的断裂痕迹;而 distrifuser 通过独特的“同步通信初始化 + 异步通信复用”机制,让不同显卡在处理图像块时能高效交换信息。这种方法不仅彻底消除了拼接伪影,保证了生成图像的视觉质量与单卡运行一致,还能将通信耗时隐藏在计算过程中,显著提升效率。实测显示,在使用 8 张 NVIDIA A100 显卡生成超大图时,其速度可提升高达 6.1 倍。
该工具无需重新训练模型即可直接使用,已集成至 NVIDIA TensorRT-LLM 和 ColossalAI 等主流框架。它非常适合需要快速生成高质量大图的 AI 研究人员、开发者以及专业设计师,帮助他们在多显卡环境下轻松突破分辨率与速度的限制。
使用场景
某数字艺术工作室需要为户外巨型广告牌批量生成 3840×3840 超高清创意海报,且对出图速度和画面完整性有极高要求。
没有 distrifuser 时
- 显存瓶颈限制分辨率:单张 A100 显卡无法承载如此高分辨率的 SDXL 模型推理,强行运行会导致显存溢出(OOM),只能降低分辨率牺牲画质。
- 简单分块导致画面割裂:若尝试手动将图像切分至多卡并行,由于缺乏块间交互,生成结果在拼接处会出现明显的断裂或伪影,破坏整体美感。
- 生成效率极其低下:受限于单卡计算能力,生成一张高质量大图耗时过长,无法满足客户短时间内批量交付的需求。
- 硬件资源利用率低:多卡环境下,除主卡外其余显卡处于闲置状态,昂贵的算力集群无法转化为实际生产力。
使用 distrifuser 后
- 无缝多卡并行扩展:distrifuser 通过同步通信机制实现图块间的有效交互,轻松利用 8 张 A100 显卡协同工作,完美支持 3840×3840 分辨率而不爆显存。
- 保证视觉 fidelity:算法消除了传统分块生成的边界缝隙,生成的巨幅海报画面连贯、细节丰富,视觉质量与单卡低分辨率生成保持一致。
- 推理速度显著提升:在 8 卡环境下,distrifuser 实现了高达 6.1 倍的加速比,将单张海报的生成时间从数分钟缩短至秒级,大幅提升交付效率。
- 隐藏通信开销:通过异步通信复用激活值,distrifuser 将多卡间的通信耗时隐藏在计算流水线中,确保了多机多卡扩展的高效性。
distrifuser 让高分辨率扩散模型的分布式推理变得训练免费且高效,彻底释放了多 GPU 集群在超高清图像生成领域的生产力。
运行环境要求
- 未说明
必需 NVIDIA GPU,支持多卡分布式推理(示例使用 A100),需安装 CUDA >= 12.0 及对应的 CuDNN
未说明

快速开始
DistriFusion:高分辨率扩散模型的分布式并行推理
论文 | 项目 | 博客 | 幻灯片 | YouTube | 海报
[2024年12月1日] DistriFusion已被集成到NVIDIA的TensorRT-LLM中,用于高分辨率图像生成的分布式推理。
[2024年7月29日] DistriFusion现已支持ColossalAI!
[2024年4月4日] DistriFusion被选为CVPR 2024的亮点海报!
[2024年2月29日] DistriFusion已被CVPR 2024接收!我们的代码已公开!
我们提出了DistriFusion,这是一种无需训练的算法,能够利用多张GPU加速扩散模型的推理,同时不牺牲图像质量。朴素的分块方法(概述(b))由于缺乏补丁之间的交互而存在碎片化问题。所展示的例子是使用SDXL和50步欧拉采样器在1280×1920分辨率下生成的,延迟是在A100 GPU上测量的。
DistriFusion:高分辨率扩散模型的分布式并行推理 Muyang Li*, Tianle Cai*, Jiaxin Cao,Qinsheng Zhang,Han Cai,Junjie Bai,Yangqing Jia,Ming-Yu Liu,Kai Li,以及Song Han 麻省理工学院、普林斯顿大学、Lepton AI和NVIDIA 发表于CVPR 2024。
概述
(a) 原始扩散模型在单个设备上运行。(b) 将图像简单地分成2个补丁并在2张GPU上处理时,由于补丁之间缺乏交互,边界处会出现明显的接缝。(c) 我们的DistriFusion在第一步中采用同步通信来实现补丁间的交互。之后,我们通过异步通信复用前一步的激活值。这样,通信开销可以隐藏在计算流水线中。
性能
加速比
质量
SDXL的定性结果。FID是与真实图像对比计算得出的。我们的DistriFusion可以根据使用的设备数量减少延迟,同时保持视觉保真度。
参考文献:
- 去噪扩散隐式模型(DDIM),Song et al.,ICLR 2021
- 阐明基于扩散的生成模型的设计空间,Karras et al.,NeurIPS 2022
- 扩散模型的并行采样,Shih et al.,NeurIPS 2023
- SDXL:改进潜在扩散模型以用于高分辨率图像合成,Podell et al.,ICLR 2024
先决条件
- Python3
- NVIDIA GPU + CUDA >= 12.0 及对应的CuDNN
- PyTorch = 2.2。
快速入门
安装
安装PyTorch后,您可以通过PyPI安装distrifuser
pip install distrifuser
或者通过GitHub安装:
pip install git+https://github.com/mit-han-lab/distrifuser.git
也可以在本地进行开发:
git clone git@github.com:mit-han-lab/distrifuser.git
cd distrifuser
pip install -e .
使用示例
在scripts/sdxl_example.py中,我们提供了一个最小化的脚本,用于使用DistriFusion运行SDXL。
import torch
from distrifuser.pipelines import DistriSDXLPipeline
from distrifuser.utils import DistriConfig
distri_config = DistriConfig(height=1024, width=1024, warmup_steps=4)
pipeline = DistriSDXLPipeline.from_pretrained(
distri_config=distri_config,
pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0",
variant="fp16",
use_safetensors=True,
)
pipeline.set_progress_bar_config(disable=distri_config.rank != 0)
image = pipeline(
prompt="丛林中的宇航员,冷色调,柔和色彩,细节丰富,8k",
generator=torch.Generator(device="cuda").manual_seed(233),
).images[0]
if distri_config.rank == 0:
image.save("astronaut.png")
具体来说,我们的distrifuser与diffusers共享相同的API,并且可以用类似的方式使用。您只需要定义一个DistriConfig,然后使用我们封装的DistriSDXLPipeline加载预训练的SDXL模型。之后,我们可以像在diffusers中的StableDiffusionXLPipeline一样生成图像。运行命令如下:
torchrun --nproc_per_node=$N_GPUS scripts/sdxl_example.py
其中$N_GPUS为您想要使用的GPU数量。
我们还在scripts/sd_example.py中提供了一个最小化的脚本,用于使用DistriFusion运行SD1.4/2。使用方法相同。
基准测试
我们的基准测试结果使用的是 PyTorch 2.2 和 diffusers 0.24.0。首先,您可能需要安装一些额外的依赖项:
pip install git+https://github.com/zhijian-liu/torchprofile datasets torchmetrics dominate clean-fid
COCO 质量评估
您可以使用 scripts/generate_coco.py 来生成带有 COCO 标题的图像。命令如下:
torchrun --nproc_per_node=$N_GPUS scripts/generate_coco.py --no_split_batch
其中 $N_GPUS 是您想要使用的 GPU 数量。默认情况下,生成的结果会存储在 results/coco 目录中。您也可以通过 --output_root 参数自定义输出路径。以下是一些您可能需要调整的附加参数:
--num_inference_steps: 推理步数。默认值为 50。--guidance_scale: 无分类器指导尺度。默认值为 5。--scheduler: 扩散采样器。默认使用 DDIM 采样器。您也可以选择euler使用 欧拉采样器,或选择dpm-solver使用 DPM 求解器。--warmup_steps: 额外的预热步数(默认为 4)。--sync_mode: 不同的 GroupNorm 同步模式。默认使用我们修正后的异步 GroupNorm。--parallelism: 您使用的并行化范式。默认是补丁并行,您也可以选择tensor进行张量并行,或naive_patch进行朴素补丁并行。
生成所有图像后,您可以使用我们的脚本 scripts/compute_metrics.py 来计算 PSNR、LPIPS 和 FID。使用方法如下:
python scripts/compute_metrics.py --input_root0 $IMAGE_ROOT0 --input_root1 $IMAGE_ROOT1
其中 $IMAGE_ROOT0 和 $IMAGE_ROOT1 分别是要比较的图像文件夹路径。如果 IMAGE_ROOT0 是真实数据集,请添加 --is_gt 标志以进行尺寸调整。我们还提供了一个脚本 scripts/dump_coco.py,用于导出真实数据集图像。
延迟
您可以使用 scripts/run_sdxl.py 来测试我们不同方法的延迟。命令如下:
torchrun --nproc_per_node=$N_GPUS scripts/run_sdxl.py --mode benchmark --output_type latent
其中 $N_GPUS 是您想要使用的 GPU 数量。与 scripts/generate_coco.py 类似,您也可以调整以下参数:
--num_inference_steps: 推理步数。默认为 50。--image_size: 生成图像的尺寸。默认为 1024×1024。--no_split_batch: 禁用无分类器指导中的批处理拆分。--warmup_steps: 额外的预热步数(默认为 4)。--sync_mode: 不同的 GroupNorm 同步模式。默认使用我们修正后的异步 GroupNorm。--parallelism: 您使用的并行化范式。默认是补丁并行,您也可以选择tensor进行张量并行,或naive_patch进行朴素补丁并行。--warmup_times/--test_times: 预热和测试的运行次数。默认分别为 5 和 20 次。
引用
如果您在研究中使用了此代码,请引用我们的论文。
@inproceedings{li2023distrifusion,
title={DistriFusion: 高分辨率扩散模型的分布式并行推理},
author={李牧阳、蔡天乐、曹嘉欣、张钦盛、蔡涵、白俊杰、贾扬青、刘明宇、李凯、韩松},
booktitle={IEEE/CVF 计算机视觉与模式识别会议(CVPR)论文集},
year={2024}
}
致谢
我们的代码基于 huggingface/diffusers 和 lmxyy/sige 开发。我们感谢 torchprofile 提供的 MACs 测量工具,clean-fid 提供的 FID 计算功能,以及 Lightning-AI/torchmetrics 提供的 PSNR 和 LPIPS 工具。
我们感谢 Jun-Yan Zhu 和 Ligeng Zhu 的有益讨论和宝贵反馈。本项目得到了 MIT-IBM Watson AI 实验室、亚马逊公司、MIT 科学中心以及美国国家科学基金会的支持。
版本历史
v0.0.1.beta12024/05/05v0.0.1.beta02024/04/24v0.0.0beta12024/03/050.0.0beta02024/02/29常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。