Buckets:
| # 分布式推理 | |
| 分布式推理将工作负载拆分到多个 GPU 上。它有助于在内存中容纳更大的模型,并同时处理更多提示。 | |
| Diffusers 支持四种策略。每种策略都有各自的指南,本页将帮助你选择其中一种。 | |
| ## 选择策略 | |
| 每种策略解决不同的问题,因此请根据限制你的资源选择一种。 | |
| | 策略 | 拆分 | 减少 | 单个提示词的延迟 | 最佳适用场景 | | |
| |---|---|---|---|---| | |
| | [数据并行](../optimization/data_parallelism) | 副本之间的提示 | 无,因为每个 GPU 都保存一份完整副本 | unchanged | 模型已经适配,并且您拥有许多提示 | | |
| | [device_map](../optimization/device_map) | 跨设备的组件 | 权重内存 | 略差 | 模型无法容纳且互连速度较慢 | | |
| | [上下文并行](../optimization/context_parallelism) | 输入序列 | 激活内存 | lower | 序列较长,例如高分辨率图像或视频 | | |
| | [张量并行](../optimization/tensor_parallelism) | 权重矩阵 | 权重内存 | lower | 某个组件的权重无法容纳,且互连速度很快 | | |
| 一些实用建议: | |
| - 如果模型本身已经能够装入显存,且你有大量提示词,请使用数据并行。它在不改动模型的情况下,通过增加 GPU 数量来提升吞吐量,同时不会影响单条提示词的延迟。你可以使用 [Accelerate](../optimization/data_parallelism#accelerate) 或 [PyTorch Distributed](../optimization/data_parallelism#pytorch-distributed) 来配置。 | |
| - 如果单个组件的权重无法容纳,请优先尝试张量并行,因为它能同时降低内存占用和延迟。张量并行在每个块边界处都需要通信,因此需要 NVLink 等高速互连。在 PCIe 上,每层的通信开销可能会超过其节省的计算量,此时 `device_map` 是更好的选择。`device_map` 还能处理各组件单独来看没问题、但整体规模过大的情况。 | |
| - 如果问题出在激活值而非权重上,请使用上下文并行。这有助于处理长序列,例如包含大量帧的大型图像和视频。请从[上下文并行](../optimization/context_parallelism)指南中的基准测试中选择一个后端。 | |
| - 如果权重和序列都过大,Diffusers 无法对同一模型同时应用张量并行和上下文并行。如果同时传入两个配置,`ParallelConfig` 会引发错误,并且无法对已经并行化的模型第二次调用 `enable_parallelism`。 | |
| [xDiT](../optimization/xdit) 和 [ParaAttention](../optimization/para_attn) 社区集成提供了它们自己的上下文并行实现。 | |
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.