Buckets:

mishig's picture
|
download
raw
5.84 kB
# xDiT
[xDiT](https://github.com/xdit-project/xDiT) — это движок инференса, разработанный для крупномасштабного параллельного развёртывания Diffusion Transformers (DiTs). xDiT предлагает набор эффективных параллельных подходов для Diffusion Models, а также ускорения на уровне GPU-ядер.
В xDiT поддерживаются четыре параллельных метода, включая [Unified Sequence Parallelism](https://huggingface.co/papers/2405.07719), [PipeFusion](https://huggingface.co/papers/2405.14430), параллелизм CFG и параллелизм данных. Четыре параллельных метода в xDiT можно настроить в гибридном режиме, оптимизируя паттерны коммуникации для наилучшего соответствия базовому сетевому оборудованию.
Оптимизация, ортогональная параллелизации, направлена на ускорение производительности одного GPU. Помимо использования известных библиотек оптимизации Attention, мы применяем технологии компиляционного ускорения, такие как torch.compile и onediff.
Обзор xDiT представлен ниже.
Вы можете установить xDiT с помощью следующей команды:
```bash
pip install xfuser
```
Вот пример использования xDiT для ускорения инференса модели Diffusers.
```diff
import torch
from diffusers import StableDiffusion3Pipeline
from xfuser import xFuserArgs, xDiTParallel
from xfuser.config import FlexibleArgumentParser
from xfuser.core.distributed import get_world_group
def main():
+ parser = FlexibleArgumentParser(description="xFuser Arguments")
+ args = xFuserArgs.add_cli_args(parser).parse_args()
+ engine_args = xFuserArgs.from_cli_args(args)
+ engine_config, input_config = engine_args.create_config()
local_rank = get_world_group().local_rank
pipe = StableDiffusion3Pipeline.from_pretrained(
pretrained_model_name_or_path=engine_config.model_config.model,
dtype=torch.float16,
).to(f"cuda:{local_rank}")
# do anything you want with pipeline here
+ pipe = xDiTParallel(pipe, engine_config, input_config)
pipe(
height=input_config.height,
width=input_config.height,
prompt=input_config.prompt,
num_inference_steps=input_config.num_inference_steps,
output_type=input_config.output_type,
generator=torch.Generator(device="cuda").manual_seed(input_config.seed), # or "mps", "xpu", "cpu"
)
+ if input_config.output_type == "pil":
+ pipe.save("results", "stable_diffusion_3")
if __name__ == "__main__":
main()
```
Как видно, для получения параметров конфигурации достаточно использовать xFuserArgs из xDiT, а затем передать эти параметры вместе с объектом пайплайна из библиотеки Diffusers в xDiTParallel, чтобы завершить параллелизацию конкретного пайплайна в Diffusers.
Параметры времени выполнения xDiT можно просмотреть в командной строке с помощью `-h`, а для получения подробной информации обратитесь к этому примеру [использования](https://github.com/xdit-project/xDiT?tab=readme-ov-file#2-usage).
Для поддержки многоузловой и много-GPU параллельной работы xDiT необходимо запускать с помощью torchrun. Например, для параллельного вывода на 8 GPU можно использовать следующую команду:
```bash
torchrun --nproc_per_node=8 ./inference.py --model models/FLUX.1-dev --data_parallel_degree 2 --ulysses_degree 2 --ring_degree 2 --prompt "A snowy mountain" "A small dog" --num_inference_steps 50
```
## Поддерживаемые модели
Поддерживается часть моделей Diffusers в xDiT, например Flux.1, Stable Diffusion 3 и другие. Список актуальных поддерживаемых моделей доступен [здесь](https://github.com/xdit-project/xDiT?tab=readme-ov-file#-supported-dits).
## Бенчмарк
Мы протестировали различные модели на разных машинах, и ниже приведены некоторые данные бенчмарков.
### Flux.1-schnell
### Stable Diffusion 3
### HunyuanDiT
Более подробные метрики производительности можно найти на нашей [странице GitHub](https://github.com/xdit-project/xDiT?tab=readme-ov-file#perf).
## Справочник
[xDiT-project](https://github.com/xdit-project/xDiT)
[USP: единый подход к параллелизму последовательностей для генеративного ИИ с длинным контекстом](https://huggingface.co/papers/2405.07719)
[PipeFusion: смещённый патч-пайплайн параллелизм для инференса моделей диффузионных трансформеров](https://huggingface.co/papers/2405.14430)

Xet Storage Details

Size:
5.84 kB
·
Xet hash:
445a4cb6bfede09c89df37877ebdddacb14f50f5b077e36e1f633ee6e4f19441

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