Buckets:
| # 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.