Buckets:
| # xDiT | |
| [xDiT](https://github.com/xdit-project/xDiT) adalah mesin inferensi yang dirancang untuk deployment paralel berskala besar dari Diffusion Transformers (DiTs). xDiT menyediakan serangkaian pendekatan paralel yang efisien untuk Diffusion Models, serta akselerasi kernel GPU. | |
| Ada empat metode paralel yang didukung dalam xDiT, termasuk [Unified Sequence Parallelism](https://huggingface.co/papers/2405.07719), [PipeFusion](https://huggingface.co/papers/2405.14430), paralelisme CFG, dan paralelisme data. Keempat metode paralel dalam xDiT dapat dikonfigurasi secara hibrida, mengoptimalkan pola komunikasi agar paling sesuai dengan perangkat keras jaringan yang mendasarinya. | |
| Optimasi yang ortogonal terhadap paralelisasi berfokus pada percepatan kinerja GPU tunggal. Selain memanfaatkan pustaka optimasi Attention yang sudah dikenal luas, kami memanfaatkan teknologi percepatan kompilasi seperti torch.compile dan onediff. | |
| Ikhtisar xDiT ditunjukkan sebagai berikut. | |
| Anda dapat menginstal xDiT menggunakan perintah berikut: | |
| ```bash | |
| pip install xfuser | |
| ``` | |
| Berikut adalah contoh penggunaan xDiT untuk mempercepat inferensi model 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() | |
| ``` | |
| Seperti yang dapat Anda lihat, kita hanya perlu menggunakan xFuserArgs dari xDiT untuk mendapatkan parameter konfigurasi, lalu meneruskan parameter tersebut bersama objek pipeline dari pustaka Diffusers ke xDiTParallel untuk menyelesaikan paralelisasi pipeline tertentu di Diffusers. | |
| Parameter runtime xDiT dapat dilihat di command line menggunakan `-h`, dan Anda dapat merujuk pada contoh [penggunaan](https://github.com/xdit-project/xDiT?tab=readme-ov-file#2-usage) ini untuk detail lebih lanjut. | |
| xDiT harus dijalankan menggunakan torchrun untuk mendukung kemampuan paralel multi-node dan multi-GPU-nya. Sebagai contoh, perintah berikut dapat digunakan untuk inferensi paralel 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 | |
| ``` | |
| ## Model yang didukung | |
| Sebagian model Diffusers didukung di xDiT, seperti Flux.1, Stable Diffusion 3, dan lain-lain. Model-model terbaru yang didukung dapat ditemukan [di sini](https://github.com/xdit-project/xDiT?tab=readme-ov-file#-supported-dits). | |
| ## Benchmark | |
| Kami menguji berbagai model di berbagai mesin, dan berikut adalah sebagian data benchmark-nya. | |
| ### Flux.1-schnell | |
| ### Stable Diffusion 3 | |
| ### HunyuanDiT | |
| Metrik kinerja yang lebih detail dapat ditemukan di [halaman github](https://github.com/xdit-project/xDiT?tab=readme-ov-file#perf) kami. | |
| ## Referensi | |
| [xDiT-project](https://github.com/xdit-project/xDiT) | |
| [USP: Pendekatan Parallelism Urutan Terpadu untuk AI Generatif Konteks Panjang](https://huggingface.co/papers/2405.07719) | |
| [PipeFusion: Paralelisme Pipeline Patch yang Dipindahkan untuk Inferensi Model Diffusion Transformer](https://huggingface.co/papers/2405.14430) | |
Xet Storage Details
- Size:
- 4.3 kB
- Xet hash:
- b4ed2b8316530283f75779797bf21f0475963f3cd43995636faa10674e3748c2
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.