Buckets:
| # Paralellik | |
| Paralellik stratejileri, hesaplamaları birden fazla cihaz arasında dağıtarak difüzyon dönüştürücülerini hızlandırmaya yardımcı olur ve bu sayede daha hızlı çıkarım/eğitim süreleri sağlar. Daha fazla bilgi için [Distributed inferece](../training/distributed_inference) kılavuzuna bakın. | |
| ## ParallelConfig[[diffusers.ParallelConfig]] | |
| #### diffusers.ParallelConfig[[diffusers.ParallelConfig]] | |
| ```python | |
| diffusers.ParallelConfig(context_parallel_config: diffusers.models._modeling_parallel.ContextParallelConfig | None = None, tensor_parallel_config: diffusers.models._modeling_parallel.TensorParallelConfig | None = None, _rank: int = None, _world_size: int = None, _device: device = None, _mesh: DeviceMesh = None) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/_modeling_parallel.py#L199) | |
| **Parametreler:** | |
| context_parallel_config (`ContextParallelConfig`, *isteğe bağlı*) : Bağlam paralelliği için yapılandırma. | |
| tensor_parallel_config (`TensorParallelConfig`, *isteğe bağlı*) : Tensor paralelliği için yapılandırma. | |
| Farklı paralelliklerin uygulanması için yapılandırma. | |
| ## ContextParallelConfig[[diffusers.ContextParallelConfig]] | |
| #### diffusers.ContextParallelConfig[[diffusers.ContextParallelConfig]] | |
| ```python | |
| diffusers.ContextParallelConfig(ring_degree: int | None = None, ulysses_degree: int | None = None, convert_to_fp32: bool = True, rotate_method: typing.Literal['allgather', 'alltoall'] = 'allgather', mesh: typing.Optional[torch.distributed.device_mesh.DeviceMesh] = None, ulysses_anything: bool = False, ring_anything: bool = False, _rank: int = None, _world_size: int = None, _device: device = None, _mesh: DeviceMesh = None, _flattened_mesh: DeviceMesh = None, _ring_mesh: DeviceMesh = None, _ulysses_mesh: DeviceMesh = None, _ring_local_rank: int = None, _ulysses_local_rank: int = None) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/_modeling_parallel.py#L41) | |
| **Parametreler:** | |
| ring_degree (`int`, *isteğe bağlı*, varsayılan `1`) : Ring Attention için kullanılacak cihaz sayısı. Dizi, cihazlar arasında bölünür. Her cihaz, halka etrafında sırayla iletilen yerel Q ve KV parçaları arasındaki dikkati hesaplar. Daha düşük bellek kullanımı (aynı anda yalnızca KV'nin 1/N'ini tutar), hesaplamayı iletişimle örtüşür, ancak tüm token'ları görmek için N yineleme gerektirir. Sınırlı bellek/bant genişliğine sahip uzun diziler için en iyisidir. Bağlam paralel bölgesi içindeki ring attention için kullanılacak cihaz sayısı. Bağlam paralel ızgarasındaki toplam cihaz sayısının bir böleni olmalıdır. | |
| ulysses_degree (`int`, *isteğe bağlı*, varsayılan `1`) : Ulysses Attention için kullanılacak cihaz sayısı. Sıralama bölünmesi cihazlar arasında yapılır. Her cihaz yerel QKV'yi hesaplar, ardından tüm KV parçalarını all-gather ile toplayarak tam dikkati tek geçişte hesaplar. Daha yüksek bellek kullanımı (tüm KV'yi saklar), yüksek bant genişliğine sahip all-to-all iletişim gerektirir ancak gecikme daha düşüktür. İyi bir bağlantı bant genişliğine sahip orta uzunluktaki sıralamalar için en iyisidir. | |
| convert_to_fp32 (`bool`, *isteğe bağlı*, varsayılan `True`) : Çıktı ve LSE'nin, ring attention sayısal kararlılığı için float32'ye dönüştürülüp dönüştürülmemesi. | |
| rotate_method (`str`, *isteğe bağlı*, varsayılan `"allgather"`) : Ring attention'de cihazlar arasında anahtar/değer durumlarını döndürmek için kullanılacak yöntem. Şu anda yalnızca `"allgather"` desteklenmektedir. | |
| ulysses_anything (`bool`, *isteğe bağlı*, varsayılan `False`) : `ulysses_degree` ile tam bölünemeyen, keyfi dizi uzunluklarını ve baş sayılarını destekleyen "Ulysses Anything" modunun etkinleştirilip etkinleştirilmeyeceğini belirtir. Etkinleştirildiğinde, `ulysses_degree` 1'den büyük ve `ring_degree` 1 olmalıdır. | |
| ring_anything (`bool`, *isteğe bağlı*, varsayılan `False`) : "Ring Anything" modunun etkinleştirilip etkinleştirilmeyeceğini belirtir. Bu mod, keyfi dizi uzunluklarını destekler. Etkinleştirildiğinde, `ring_degree` 1'den büyük ve `ulysses_degree` 1 olmalıdır. | |
| mesh (`torch.distributed.device_mesh.DeviceMesh`, *isteğe bağlı*) : Bağlam paralelliği için kullanılacak özel bir cihaz ızgarası. Sağlanırsa, yeni bir ızgara oluşturmak yerine bu ızgara kullanılır. Bu, bağlam paralelliğinin aynı cihaz ızgarasını paylaşan diğer paralellik stratejileriyle (ör. FSDP, tensor paralelliği) birleştirildiğinde faydalıdır. Izgaranın hem "ring" hem de "ulysses" boyutlarına sahip olması gerekir. Kullanılmayan boyutlar için 1 boyutu kullanın (ör. yalnızca FSDP ile ring attention için `mesh_shape=(2, 1, 4)` ve `mesh_dim_names=("ring", "ulysses", "fsdp")`). | |
| Bağlam paralelliği için yapılandırma. | |
| #### diffusers.hooks.apply_context_parallel[[diffusers.hooks.apply_context_parallel]] | |
| ```python | |
| diffusers.hooks.apply_context_parallel(module: Module, parallel_config: ContextParallelConfig, plan: dict) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/hooks/context_parallel.py#L80) | |
| Bir modele bağlam paralelliği uygulayın. | |
| ## TensorParallelConfig[[diffusers.TensorParallelConfig]] | |
| #### diffusers.TensorParallelConfig[[diffusers.TensorParallelConfig]] | |
| ```python | |
| diffusers.TensorParallelConfig(tp_degree: int = 1, mesh: typing.Optional[torch.distributed.device_mesh.DeviceMesh] = None, _rank: int = None, _world_size: int = None, _device: device = None, _mesh: DeviceMesh = None, _tp_degree: int = None) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/_modeling_parallel.py#L157) | |
| **Parametreler:** | |
| tp_degree (`int`, varsayılan `1`) : Parçalanacak cihaz sayısı. Paralelleştirilen modelin dikkat başlarının (ve FFN gizli boyutlarının) sayısına bölünür olmalıdır. | |
| mesh (`torch.distributed.device_mesh.DeviceMesh`, *isteğe bağlı*) : Kullanılacak özel bir cihaz ızgarası. Sağlanırsa, `tp_degree` değeri `mesh.size()` üzerinden çıkarılır ve argüman yok sayılır. Aynı ızgarayı paylaşan TP ile diğer paralelleştirme stratejilerini (ör. CP) birleştirirken faydalıdır. | |
| Tensor paralelliği için yapılandırma. | |
| Tensor paralelliği, ağırlık matrislerini cihazlar arasında (sütun bazlı ve satır bazlı) parçalara ayırır. Her cihaz kısmi bir sonuç hesaplar; katman sınırlarındaki AllReduce/AllGather tam çıktıyı yeniden oluşturur. `torch.distributed.tensor.parallelize_module` kullanılır ve `ColwiseParallel` / `RowwiseParallel` parçalama stilleri uygulanır. Desteklenen cihaz türleri `"cuda"`, `"neuron"` ve `"tpu"`'dur. | |
| #### diffusers.hooks.apply_tensor_parallel[[diffusers.hooks.apply_tensor_parallel]] | |
| ```python | |
| diffusers.hooks.apply_tensor_parallel(model: Module, config: TensorParallelConfig, tp_plan: dict, weights_already_sharded: bool = False) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/hooks/tensor_parallel.py#L481) | |
| **Parametreler:** | |
| model (`torch.nn.Module`) : Yerinde bölünmesi (shard) gereken model. | |
| config (`TensorParallelConfig`) : Tensor-parallel yapılandırması. Cihaz ağı (device mesh) zaten `config.setup(...)` ile kurulmuş olmalıdır. | |
| tp_plan (`dict`) : Modül ad kümeleme ifadelerinden `"colwise"`/`"rowwise"` stiline (veya paketli bir varyanta) düz bir eşleme, genellikle modelin `_tp_plan`'ı. | |
| weights_already_sharded (`bool`, varsayılan `False`) : Planlanan parametrelerin, akışkan `from_pretrained` yükleme sonrasında olduğu gibi zaten `DTensor` parçaları olup olmadığını belirtir. `True` ise yalnızca ileri yönlü kancalar (forward hooks) kaydedilir. Bu, algılanmak yerine açıkça geçirilir; çünkü checkpoint'te eksik olan bir planlı parametre yine de meta bir tensör olur ve aslında yarı parçalı olan bir model için algılamanın "parçalı değil" demesine neden olur. | |
| Düz `_tp_plan`'ından bir modele tensör paralelliği uygulayın. | |
Xet Storage Details
- Size:
- 8.14 kB
- Xet hash:
- 61730651be4c28bbf26d35b49cce94f9500f8432025725072fea48bf79e44220
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.