Buckets:
| # xDiT | |
| [xDiT](https://github.com/xdit-project/xDiT), Diffusion Transformer'ların (DiT) büyük ölçekli paralel dağıtımı için tasarlanmış bir çıkarım motorudur. xDiT, Diffusion Modelleri için verimli paralel yaklaşımların yanı sıra GPU çekirdek hızlandırmaları da sunar. | |
| xDiT'te desteklenen dört paralel yöntem arasında [Unified Sequence Parallelism](https://huggingface.co/papers/2405.07719), [PipeFusion](https://huggingface.co/papers/2405.14430), CFG paralelliği ve veri paralelliği yer alır. xDiT'teki bu dört paralel yöntem hibrit bir şekilde yapılandırılabilir ve altta yatan ağ donanımına en uygun şekilde iletişim kalıpları optimize edilebilir. | |
| Paralelleştirmeye dik olan optimizasyon, tek GPU performansını hızlandırmaya odaklanır. Bilinen Dikkat (Attention) optimizasyon kütüphanelerini kullanmanın yanı sıra, torch.compile ve onediff gibi derleme hızlandırma teknolojilerinden de yararlanıyoruz. | |
| xDiT'nin genel görünümü aşağıda gösterilmektedir. | |
| xDiT'yi aşağıdaki komutu kullanarak yükleyebilirsiniz: | |
| ```bash | |
| pip install xfuser | |
| ``` | |
| Bir Diffusers modelinin çıkarımını hızlandırmak için xDiT kullanmanın bir örneği aşağıdadır. | |
| ```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() | |
| ``` | |
| Gördüğünüz gibi, yapılandırma parametrelerini almak için yalnızca xDiT'ten xFuserArgs'ı kullanmamız ve bu parametreleri Diffusers kütüphanesinden gelen pipeline nesnesiyle birlikte xDiTParallel'e iletmemiz yeterlidir; bu sayede Diffusers'ta belirli bir pipeline'ın paralelleştirilmesi tamamlanır. | |
| xDiT çalışma zamanı parametreleri, `-h` kullanılarak komut satırında görüntülenebilir ve daha fazla ayrıntı için bu [kullanım](https://github.com/xdit-project/xDiT?tab=readme-ov-file#2-usage) örneğine başvurabilirsiniz. | |
| xDiT, çoklu düğüm ve çoklu GPU paralel yeteneklerini desteklemek için torchrun ile başlatılmalıdır. Örneğin, 8 GPU'lu paralel çıkarım için aşağıdaki komut kullanılabilir: | |
| ```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 | |
| ``` | |
| ## Desteklenen modeller | |
| Diffusers modellerinin bir alt kümesi, Flux.1 ve Stable Diffusion 3 gibi, xDiT tarafından desteklenmektedir. Desteklenen en güncel modeller [burada](https://github.com/xdit-project/xDiT?tab=readme-ov-file#-supported-dits) bulunabilir. | |
| ## Karma | |
| Çeşitli makinelerde farklı modelleri test ettik ve işte bazı referans ölçüm verileri. | |
| ### Flux.1-schnell | |
| ### Stable Diffusion 3 | |
| ### HunyuanDiT | |
| Daha ayrıntılı performans metrikleri [github sayfamızda](https://github.com/xdit-project/xDiT?tab=readme-ov-file#perf) bulunabilir. | |
| ## Referans | |
| [xDiT-project](https://github.com/xdit-project/xDiT) | |
| [USP: Uzun Bağlam Üretken Yapay Zeka için Birleşik Sıralı Paralellik Yaklaşımı](https://huggingface.co/papers/2405.07719) | |
| [PipeFusion: Diffusion Transformer Modellerinin Çıkarımı İçin Yer Değiştirmiş Yama Boru Hattı Paralelliği](https://huggingface.co/papers/2405.14430) | |
Xet Storage Details
- Size:
- 4.46 kB
- Xet hash:
- 64163ff62fc9014309d3c98a0c49ab58ae08a17ca526f546f2953672f0529877
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.