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() | |
| ``` | |
| 확인할 수 있듯이, xDiT의 xFuserArgs만 사용하여 구성 매개변수를 가져오고, 이 매개변수와 Diffusers 라이브러리의 파이프라인 객체를 xDiTParallel에 전달하면 Diffusers의 특정 파이프라인 병렬화를 완료할 수 있습니다. | |
| xDiT 런타임 매개변수는 `-h`를 사용하여 명령줄에서 확인할 수 있으며, 자세한 내용은 이 [사용법](https://github.com/xdit-project/xDiT?tab=readme-ov-file#2-usage) 예시를 참고하세요. | |
| xDiT는 멀티 노드, 멀티 GPU 병렬 기능을 지원하기 위해 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 | |
| ``` | |
| ## 지원되는 모델 | |
| Flux.1, Stable Diffusion 3 등 Diffusers 모델의 일부가 xDiT에서 지원됩니다. 최신 지원 모델 목록은 [여기](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: 장문 컨텍스트 생성형 AI를 위한 통합 시퀀스 병렬성 접근법](https://huggingface.co/papers/2405.07719) | |
| [PipeFusion: Diffusion Transformer 모델 추론을 위한 Displaced Patch Pipeline Parallelism](https://huggingface.co/papers/2405.14430) | |
Xet Storage Details
- Size:
- 4.42 kB
- Xet hash:
- 83e07d56fdf8260d50debe1e3ee78a3ac9c81d0f05a88eb44b1620f6d8da56bd
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.