set_ip_adapter_scale(float) raises "Cannot assign 1 scale_configs to 2 IP-Adapter" when several IP-Adapters are loaded
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 82/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Bereich
- machine-learning
Rechercherichtung
Lies set_ip_adapter_scale in IPAdapterMixin und ModularIPAdapterMixin sowie FluxIPAdapterMixin.set_ip_adapter_scale, um das bestehende Broadcast-Verhalten nachzuvollziehen. Im Issue werden die Reihenfolge der Längenprüfung benannt und eine minimale Pipeline-Reproduktion bereitgestellt; ergänze Tests für die Übergabe eines einzelnen Floats bei zwei geladenen Testadaptern und bestätige, dass die Skalierung auf beide angewendet wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
With more than one IP-Adapter loaded, set_ip_adapter_scale(0.6) raises ValueError: Cannot assign 1 scale_configs to 2 IP-Adapter. instead of applying the scale to every adapter. A list with one value per adapter works.
set_ip_adapter_scale already has a branch meant to repeat a single config for every adapter (elif len(scale_configs) == 1: scale_configs = scale_configs * len(attn_processor.scale)), but it comes after the length check, so it never runs. A single float was broadcast before #7668, and the Flux version (FluxIPAdapterMixin.set_ip_adapter_scale) still broadcasts it. The same code is in ModularIPAdapterMixin.set_ip_adapter_scale.
I'd like to send a PR that checks the single-config case first (a two-line swap in both mixins) plus a test.
Reproduction
Shown with the tiny test pipeline and two test IP-Adapters so it runs in seconds; it goes through the same set_ip_adapter_scale code as load_ip_adapter("h94/IP-Adapter", ...) with two weight_names on SD1.5.
# Run from the root of a diffusers checkout (uses the test helpers for a tiny pipeline and IP-Adapter weights).
from tests.models.unets.test_models_unet_2d_condition import create_ip_adapter_state_dict
from tests.pipelines.stable_diffusion.test_stable_diffusion import StableDiffusionPipelineTesterConfig
cfg = StableDiffusionPipelineTesterConfig()
pipe = cfg.pipeline_class(**cfg.get_dummy_components())
state_dicts = [create_ip_adapter_state_dict(pipe.unet) for _ in range(2)]
pipe.load_ip_adapter(state_dicts, subfolder=["", ""], weight_name=["", ""], image_encoder_folder=None)
pipe.set_ip_adapter_scale([0.6, 0.6]) # works
pipe.set_ip_adapter_scale(0.6) # ValueError
Context
I found this while testing set_ip_adapter_scale with two IP-Adapters loaded.
Logs
ValueError: Cannot assign 1 scale_configs to 2 IP-Adapter.
System Info
- 🤗 Diffusers version: 0.42.0.dev0 (main @ 84532a058)
- Platform: macOS-26.6.2-arm64-arm-64bit
- Running on Google Colab?: No
- Python version: 3.12.11
- PyTorch version (GPU?): 2.15.0 (False)
- Huggingface_hub version: 2.4.0
- Transformers version: 5.22.2
- Accelerate version: 1.15.0
- PEFT version: 0.21.2
- Safetensors version: 0.8.0
- xFormers version: not installed
- Accelerator: Apple M5 Pro
- Using GPU in script?: No
- Using distributed or parallel set-up in script?: No
Who can help?
@asomoza @yiyixuxu
- Vorherrschende Sprache
- Python
- Sterne
- 34.9k
- Forks
- 7.5k
- Ø Merge
- 2 T. 16 Std.
- Gemergte PRs (30 T.)
- 57
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus huggingface/diffusers
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
huggingface/diffusers#15211 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
UniPCMultistepScheduler.set_timesteps(sigmas=...) raises TypeError for a list when use_flow_sigmas=TrueEvtl. vergeben @marlonferreira1800-hue hat das vor 1 Tag übernommen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
huggingface/diffusers#15207 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
huggingface/diffusers#15170 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
huggingface/diffusers#15163 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
`encode_video` truncates a fractional `fps`, so the video runs longer than its audioEvtl. vergeben @guptaishaan hat das vor 19 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
huggingface/diffusers#15104 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in huggingface/diffusers
Ähnliche Issues
-
channels:edit check:passed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug] The blue-green mitigation strategy lists catalog names and views before the source tablesOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
aws-samples/sample-aws-genai-db-modernizer#2097 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
ietf-tools/datatracker#12027 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug]: Python SDK overwrites OVPack backups with HTTP 200 JSON errorsEvtl. vergeben @stefanielizeth73-art hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
volcengine/OpenViking#7347 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
deepset-ai/haystack-core-integrations#4228 ·
Maintainer antworten meist innerhalb von 1 Tag