Buckets:
| # ModülerPipelineBlokları | |
| [ModularPipelineBlocks](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks), bir [ModularPipeline](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline) oluşturmak için temel bloktur. Bir iş akışındaki belirli bir adım için bir bloğun hangi bileşenleri, girdi/çıktıları ve hesaplamaları gerçekleştirmesi gerektiğini tanımlar. [ModularPipelineBlocks](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks), [state](./modular_diffusers_states) kullanarak diğer bloklarla bağlantı kurar ve iş akışlarının modüler olarak oluşturulmasını sağlar. | |
| Tek başına bir [ModularPipelineBlocks](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks) çalıştırılamaz. Bir adımın bir pipeline'da ne yapması gerektiğine dair bir taslaktır. Bir pipeline'ı gerçekten çalıştırmak ve yürütmek için [ModularPipelineBlocks](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks)'ün bir [ModularPipeline](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline)'a dönüştürülmesi gerekir. | |
| Bu kılavuz, [ModularPipelineBlocks](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks) oluşturmayı gösterecektir. | |
| ## Girdiler ve çıktılar | |
| > [!TIP] | |
| > Modular Diffusers'da durumun nasıl çalıştığını bilmiyorsanız, [States](./modular_diffusers_states) kılavuzuna başvurun. | |
| [ModularPipelineBlocks](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks) bir `inputs` ve `intermediate_outputs` gerektirir. | |
| - `inputs`, bir bloğun hesaplama işlemini gerçekleştirmek için [PipelineState](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState) üzerinden okuduğu değerlerdir. Bunlar, bir kullanıcı tarafından sağlanan değerler (bir istem veya görüntü gibi) ya da önceki bir blok tarafından üretilen değerler (kodlanmış `image_latents` gibi) olabilir. | |
| `inputs` tanımlamak için `InputParam` kullanın. | |
| ```py | |
| class ImageEncodeStep(ModularPipelineBlocks): | |
| ... | |
| @property | |
| def inputs(self): | |
| return [ | |
| InputParam(name="image", type_hint="PIL.Image", required=True, description="raw input image to process"), | |
| ] | |
| ... | |
| ``` | |
| - `intermediate_outputs`, bir blok tarafından oluşturulan ve [PipelineState](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)'e eklenen yeni değerlerdir. `intermediate_outputs`, sonraki bloklar için `inputs` olarak kullanılabilir veya pipeline'ın çalıştırılmasından elde edilen nihai çıktı olarak kullanılabilir. | |
| `intermediate_outputs` tanımlamak için `OutputParam` kullanın. | |
| ```py | |
| class ImageEncodeStep(ModularPipelineBlocks): | |
| ... | |
| @property | |
| def intermediate_outputs(self): | |
| return [ | |
| OutputParam(name="image_latents", description="latents representing the image"), | |
| ] | |
| ... | |
| ``` | |
| Ara girdiler ve çıktılar, blokları birbirine bağlamak için verileri paylaşır. Herhangi bir noktada erişilebilir oldukları için iş akışının ilerlemesini izlemenizi sağlarlar. | |
| ## Bileşenler ve yapılandırmalar | |
| Bir bloğun ihtiyaç duyduğu bileşenler ve pipeline düzeyindeki yapılandırmalar [ComponentSpec](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_components#diffusers.ComponentSpec) ve [ConfigSpec](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_components#diffusers.ConfigSpec) içinde belirtilir. | |
| - [ComponentSpec](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_components#diffusers.ComponentSpec), bir bloğun kullandığı beklenen bileşenleri içerir. Bileşenin `name` değerine ve ideal olarak bileşenin tam olarak ne olduğunu belirten bir `type_hint` değerine ihtiyacınız vardır. | |
| - [ConfigSpec](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_components#diffusers.ConfigSpec), tüm bloklarda davranışı kontrol eden pipeline düzeyinde ayarları içerir. | |
| ```py | |
| class ImageEncodeStep(ModularPipelineBlocks): | |
| ... | |
| @property | |
| def expected_components(self): | |
| return [ | |
| ComponentSpec(name="vae", type_hint=AutoencoderKL), | |
| ] | |
| @property | |
| def expected_configs(self): | |
| return [ | |
| ConfigSpec("force_zeros_for_empty_prompt", True), | |
| ] | |
| ... | |
| ``` | |
| Bloklar bir pipeline'a dönüştürüldüğünde, bileşenler `__call__`'in ilk argümanı olarak bloğa erişilebilir hale gelir. | |
| ## Hesaplama mantığı | |
| Bir bloğun gerçekleştirdiği hesaplama, `__call__` yönteminde tanımlanır ve belirli bir yapıyı izler. | |
| 1. `inputs` için yerel bir görünüm almak üzere [BlockState](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState) nesnesini alın. | |
| 2. `inputs` üzerinde hesaplama mantığını uygulayın. | |
| 3. Yerel [BlockState](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.BlockState)'ten değişiklikleri küresel [PipelineState](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)'ye geri göndermek için [PipelineState](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_states#diffusers.modular_pipelines.PipelineState)'i güncelleyin. | |
| 4. Bir sonraki bloğa erişilebilir hale gelen bileşenleri ve durumu döndürür. | |
| ```py | |
| class ImageEncodeStep(ModularPipelineBlocks): | |
| def __call__(self, components, state): | |
| # Get a local view of the state variables this block needs | |
| block_state = self.get_block_state(state) | |
| # Your computation logic here | |
| # block_state contains all your inputs | |
| # Access them like: block_state.image, block_state.processed_image | |
| # Update the pipeline state with your updated block_states | |
| self.set_block_state(state, block_state) | |
| return components, state | |
| ``` | |
| ## Hepsini bir araya getirme | |
| İşte tüm parçalar birleştirilmiş tam blok. | |
| ```py | |
| from diffusers import ComponentSpec, AutoencoderKL | |
| from diffusers.modular_pipelines import InputParam, ModularPipelineBlocks, OutputParam | |
| class ImageEncodeStep(ModularPipelineBlocks): | |
| @property | |
| def description(self): | |
| return "Encode an image into latent space." | |
| @property | |
| def expected_components(self): | |
| return [ | |
| ComponentSpec(name="vae", type_hint=AutoencoderKL), | |
| ] | |
| @property | |
| def inputs(self): | |
| return [ | |
| InputParam(name="image", type_hint="PIL.Image", required=True, description="raw input image to process"), | |
| ] | |
| @property | |
| def intermediate_outputs(self): | |
| return [ | |
| OutputParam(name="image_latents", type_hint="torch.Tensor", description="latents representing the image"), | |
| ] | |
| def __call__(self, components, state): | |
| block_state = self.get_block_state(state) | |
| block_state.image_latents = components.vae.encode(block_state.image) | |
| self.set_block_state(state, block_state) | |
| return components, state | |
| ``` | |
| Her bloğun, yukarıda tanımladığınız özelliklerden otomatik olarak oluşturulan bir `doc` özelliği vardır. Bu özellik, bloğun açıklamasının, bileşenlerinin, girdilerinin ve çıktılarının bir özetini sunar. | |
| ```py | |
| block = ImageEncoderStep() | |
| print(block.doc) | |
| class ImageEncodeStep | |
| Encode an image into latent space. | |
| Components: | |
| vae (`AutoencoderKL`) | |
| Inputs: | |
| image (`PIL.Image`): | |
| raw input image to process | |
| Outputs: | |
| image_latents (`torch.Tensor`): | |
| latents representing the image | |
| ``` | |
Xet Storage Details
- Size:
- 7.84 kB
- Xet hash:
- f8da9ab204e325d69194aa4137710233ee2a58aa503abdc53fa1659fe544c112
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.