Buckets:

mishig's picture
|
download
raw
7.75 kB
# Rehberler
[Classifier-free guidance](https://huggingface.co/papers/2207.12598), modelin üretimini prompt ile daha iyi örtüşecek şekilde yönlendirir ve üretim kalitesini, kontrolünü ve prompta uyumunu artırmak için yaygın olarak kullanılır. Farklı yönlendirme yöntemleri türleri vardır ve Diffusers'ta bunlara *guiders* denir. Bloklar gibi, pipeline'ı yeniden yazmadan farklı kullanım senaryoları için farklı guiders'ları değiştirmek ve kullanmak kolaydır.
Bu kılavuz, guiders arasında geçiş yapmayı, guider parametrelerini ayarlamayı ve onları Hub'a yükleyip paylaşmayı gösterir.
## Yönlendiricileri değiştirme
[ClassifierFreeGuidance](/docs/diffusers/main/tr/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance), varsayılan yönlendiricidir ve bir pipeline [init_pipeline()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks.init_pipeline) ile başlatıldığında oluşturulur. `from_config` tarafından oluşturulduğundan, modüler bir depodan spesifikasyonlar yüklemesi gerekmez. Bir yönlendirici, `modular_model_index.json` içinde listelenmez.
Bir guider'ı incelemek için [get_component_spec()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.get_component_spec) kullanın.
```py
t2i_pipeline.get_component_spec("guider")
ComponentSpec(name='guider', type_hint=<class 'diffusers.guiders.classifier_free_guidance.ClassifierFreeGuidance'>, description=None, config=FrozenDict([('guidance_scale', 7.5), ('guidance_rescale', 0.0), ('use_original_formulation', False), ('start', 0.0), ('stop', 1.0), ('_use_default_values', ['start', 'guidance_rescale', 'stop', 'use_original_formulation'])]), repo=None, subfolder=None, variant=None, revision=None, default_creation_method='from_config')
```
Yeni guider'ı [update_components()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.update_components) fonksiyonuna geçirerek farklı bir guider'a geçiş yapın.
> [!TIP]
> Rehberleri değiştirmek, rehber türünü değiştirdiğinizi bildiren metni döndürür.
> ```bash
> ModularPipeline.update_components: adding guider with new type: PerturbedAttentionGuidance, previous type: ClassifierFreeGuidance
> ```
```py
from diffusers import LayerSkipConfig, PerturbedAttentionGuidance
config = LayerSkipConfig(indices=[2, 9], fqn="mid_block.attentions.0.transformer_blocks", skip_attention=False, skip_attention_scores=True, skip_ff=False)
guider = PerturbedAttentionGuidance(
guidance_scale=5.0, perturbed_guidance_scale=2.5, perturbed_guidance_config=config
)
t2i_pipeline.update_components(guider=guider)
```
Guider türünün farklı olduğunu doğrulamak için [get_component_spec()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.get_component_spec) fonksiyonunu tekrar kullanın.
```py
t2i_pipeline.get_component_spec("guider")
ComponentSpec(name='guider', type_hint=<class 'diffusers.guiders.perturbed_attention_guidance.PerturbedAttentionGuidance'>, description=None, config=FrozenDict([('guidance_scale', 5.0), ('perturbed_guidance_scale', 2.5), ('perturbed_guidance_start', 0.01), ('perturbed_guidance_stop', 0.2), ('perturbed_guidance_layers', None), ('perturbed_guidance_config', LayerSkipConfig(indices=[2, 9], fqn='mid_block.attentions.0.transformer_blocks', skip_attention=False, skip_attention_scores=True, skip_ff=False, dropout=1.0)), ('guidance_rescale', 0.0), ('use_original_formulation', False), ('start', 0.0), ('stop', 1.0), ('_use_default_values', ['perturbed_guidance_start', 'use_original_formulation', 'perturbed_guidance_layers', 'stop', 'start', 'guidance_rescale', 'perturbed_guidance_stop']), ('_class_name', 'PerturbedAttentionGuidance'), ('_diffusers_version', '0.35.0.dev0')]), repo=None, subfolder=None, variant=None, revision=None, default_creation_method='from_config')
```
## Özel yönlendiricileri yükleme
Hub üzerinde `modular_model_index.json` dosyasıyla zaten kaydedilmiş olan guider'lar artık bir `from_config` bileşeni yerine bir `from_pretrained` bileşeni olarak kabul edilir.
```json
{
"guider": [
null,
null,
{
"repo": "YiYiXu/modular-loader-t2i-guider",
"revision": null,
"subfolder": "pag_guider",
"type_hint": [
"diffusers",
"PerturbedAttentionGuidance"
],
"variant": null
}
]
}
```
Guider, `modular_model_index.json` içindeki yükleme spesifikasyonuna göre [load_components()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.load_components) çağrıldıktan sonra oluşturulur.
```py
t2i_pipeline = t2i_blocks.init_pipeline("YiYiXu/modular-doc-guider")
# not created during init
assert t2i_pipeline.guider is None
t2i_pipeline.load_components()
# loaded as PAG guider
t2i_pipeline.guider
```
## Guider parametrelerini değiştirme
Guider parametreleri [create()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_components#diffusers.ComponentSpec.create) yöntemi ve [update_components()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.update_components) ile ayarlanabilir. Aşağıdaki örnek `guidance_scale` değerini değiştirir.
```py
guider_spec = t2i_pipeline.get_component_spec("guider")
guider = guider_spec.create(guidance_scale=10)
t2i_pipeline.update_components(guider=guider)
```
## Özel yönlendiricileri yükleme
Bir özel guider üzerinde [push_to_hub()](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) metodunu çağırarak onu Hub'da paylaşın.
```py
guider.push_to_hub("YiYiXu/modular-loader-t2i-guider", subfolder="pag_guider")
```
Bu guider'ın pipeline tarafından kullanılabilir hale getirilmesi için `modular_model_index.json` dosyasını düzenleyin veya [update_components()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.update_components) yöntemini kullanın.
`modular_model_index.json` dosyasını düzenleyin ve guider için bir yükleme spesifikasyonu ekleyin; bunun için guider yapılandırmasını içeren bir klasöre işaret edin.
```json
{
"guider": [
"diffusers",
"PerturbedAttentionGuidance",
{
"repo": "YiYiXu/modular-loader-t2i-guider",
"revision": null,
"subfolder": "pag_guider",
"type_hint": [
"diffusers",
"PerturbedAttentionGuidance"
],
"variant": null
}
],
```
`default_creation_method()` fonksiyonunu `from_pretrained` olarak değiştirin ve [update_components()](/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline.update_components) ile hem guider ve bileşen tanımlarını hem de pipeline yapılandırmasını güncelleyin.
> [!TIP]
> Oluşturma yöntemini değiştirmek, oluşturma türünü `from_pretrained` olarak değiştirdiğinizi bildiren bir metin döndürür.
> ```bash
> ModularPipeline.update_components: changing the default_creation_method of guider from from_config to from_pretrained.
> ```
```py
guider_spec = t2i_pipeline.get_component_spec("guider")
guider_spec.default_creation_method="from_pretrained"
guider_spec.pretrained_model_name_or_path="YiYiXu/modular-loader-t2i-guider"
guider_spec.subfolder="pag_guider"
pag_guider = guider_spec.load()
t2i_pipeline.update_components(guider=pag_guider)
```
Bir pipeline için varsayılan guider yapmak isterseniz [push_to_hub()](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) çağrısını yapın. Bu, yalnızca yerel olarak deney yapıyorsanız gerekli olmayan isteğe bağlı bir adımdır.
```py
t2i_pipeline.push_to_hub("YiYiXu/modular-doc-guider")
```

Xet Storage Details

Size:
7.75 kB
·
Xet hash:
66fcb821b49d0de024df6ac465f25abfb0e15c8553a76e4e6340e51622ad5df0

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.