Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /zh /training /distributed_inference.md
mishig's picture
|
download
raw
2.58 kB
# 分布式推理
分布式推理将工作负载拆分到多个 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.