Diffusers documentation

Pemandu

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Pemandu

Classifier-free guidance mengarahkan generasi model agar lebih sesuai dengan prompt dan umum digunakan untuk meningkatkan kualitas, kontrol, serta kepatuhan terhadap prompt. Terdapat berbagai jenis metode guidance, dan di Diffusers, metode-metode ini dikenal sebagai guiders. Sama seperti blocks, mudah untuk beralih dan menggunakan guiders yang berbeda untuk berbagai kasus penggunaan tanpa perlu menulis ulang pipeline.

Panduan ini akan menunjukkan cara Anda mengganti guider, menyesuaikan parameter guider, serta memuat dan membagikannya ke Hub.

Mengganti guiders

ClassifierFreeGuidance adalah guider bawaan yang dibuat saat pipeline diinisialisasi dengan init_pipeline(). Guider ini dibuat oleh from_config, yang berarti tidak memerlukan pemuatan spesifikasi dari repositori modular. Guider tidak akan terdaftar di modular_model_index.json.

Gunakan get_component_spec() untuk memeriksa sebuah guider.

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')

Beralih ke guider yang berbeda dengan meneruskan guider baru ke update_components().

Mengubah guider akan mengembalikan teks yang memberi tahu Anda bahwa Anda sedang mengubah tipe guider.

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)

Gunakan get_component_spec() lagi untuk memverifikasi bahwa tipe guider berbeda.

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')

Memuat panduan kustom

Guiders yang sudah disimpan di Hub dengan file modular_model_index.json sekarang dianggap sebagai komponen from_pretrained alih-alih komponen from_config.

{
  "guider": [
    null,
    null,
    {
      "repo": "YiYiXu/modular-loader-t2i-guider",
      "revision": null,
      "subfolder": "pag_guider",
      "type_hint": [
        "diffusers",
        "PerturbedAttentionGuidance"
      ],
      "variant": null
    }
  ]
}

Guider hanya dibuat setelah memanggil load_components() berdasarkan spesifikasi pemuatan di modular_model_index.json.

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

Mengubah parameter guider

Parameter guider dapat disesuaikan dengan metode create() dan update_components(). Contoh di bawah ini mengubah nilai guidance_scale.

guider_spec = t2i_pipeline.get_component_spec("guider")
guider = guider_spec.create(guidance_scale=10)
t2i_pipeline.update_components(guider=guider)

Mengunggah panduan kustom

Panggil metode push_to_hub() pada guider kustom untuk membagikannya ke Hub.

guider.push_to_hub("YiYiXu/modular-loader-t2i-guider", subfolder="pag_guider")

Untuk membuat guider ini tersedia untuk pipeline, ubah file modular_model_index.json atau gunakan metode update_components().

modular_model_index.json
update_components

Edit file modular_model_index.json dan tambahkan spesifikasi pemuatan untuk guider dengan menunjuk ke folder yang berisi konfigurasi guider.

{
  "guider": [
    "diffusers",
    "PerturbedAttentionGuidance",
    {
      "repo": "YiYiXu/modular-loader-t2i-guider",
      "revision": null,
      "subfolder": "pag_guider",
      "type_hint": [
        "diffusers",
        "PerturbedAttentionGuidance"
      ],
      "variant": null
    }
  ],
Update on GitHub