Buckets:

mishig's picture
|
download
raw
7.75 kB

Rehberler

Classifier-free guidance, 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, varsayılan yönlendiricidir ve bir pipeline 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() kullanın.

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() fonksiyonuna geçirerek farklı bir guider'a geçiş yapın.

Rehberleri değiştirmek, rehber türünü değiştirdiğinizi bildiren metni döndürür.

ModularPipeline.update_components: adding guider with new type: PerturbedAttentionGuidance, previous type: ClassifierFreeGuidance
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() fonksiyonunu tekrar kullanın.

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.

{
  "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() çağrıldıktan sonra oluşturulur.

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() yöntemi ve update_components() ile ayarlanabilir. Aşağıdaki örnek guidance_scale değerini değiştirir.

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() metodunu çağırarak onu Hub'da paylaşın.

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() 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.

{
  "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() ile hem guider ve bileşen tanımlarını hem de pipeline yapılandırmasını güncelleyin.

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.

ModularPipeline.update_components: changing the default_creation_method of guider from from_config to from_pretrained.
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() ç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.

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.