Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /zh /training /distributed_inference.md
mishig's picture
|
download
raw
2.58 kB

分布式推理

分布式推理将工作负载拆分到多个 GPU 上。它有助于在内存中容纳更大的模型,并同时处理更多提示。

Diffusers 支持四种策略。每种策略都有各自的指南,本页将帮助你选择其中一种。

选择策略

每种策略解决不同的问题,因此请根据限制你的资源选择一种。

策略 拆分 减少 单个提示词的延迟 最佳适用场景
数据并行 副本之间的提示 无,因为每个 GPU 都保存一份完整副本 unchanged 模型已经适配,并且您拥有许多提示
device_map 跨设备的组件 权重内存 略差 模型无法容纳且互连速度较慢
上下文并行 输入序列 激活内存 lower 序列较长,例如高分辨率图像或视频
张量并行 权重矩阵 权重内存 lower 某个组件的权重无法容纳,且互连速度很快

一些实用建议:

  • 如果模型本身已经能够装入显存,且你有大量提示词,请使用数据并行。它在不改动模型的情况下,通过增加 GPU 数量来提升吞吐量,同时不会影响单条提示词的延迟。你可以使用 Accelerate 或 PyTorch Distributed 来配置。
  • 如果单个组件的权重无法容纳,请优先尝试张量并行,因为它能同时降低内存占用和延迟。张量并行在每个块边界处都需要通信,因此需要 NVLink 等高速互连。在 PCIe 上,每层的通信开销可能会超过其节省的计算量,此时 device_map 是更好的选择。device_map 还能处理各组件单独来看没问题、但整体规模过大的情况。
  • 如果问题出在激活值而非权重上,请使用上下文并行。这有助于处理长序列,例如包含大量帧的大型图像和视频。请从上下文并行指南中的基准测试中选择一个后端。
  • 如果权重和序列都过大,Diffusers 无法对同一模型同时应用张量并行和上下文并行。如果同时传入两个配置,ParallelConfig 会引发错误,并且无法对已经并行化的模型第二次调用 enable_parallelism。

xDiT 和 ParaAttention 社区集成提供了它们自己的上下文并行实现。

Xet Storage Details

Size:
2.58 kB
·
Xet hash:
ca96ea6289e4ee0c7fb00ca7caafa049ee5b65f51920e2292e5b3b44c98ea375

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.