IBM/BadDiffusion

DDPMPipeline: __call__() got an unexpected keyword argument 'init'

Closed this issue · 2 comments

I installed the lastest diffusers (0.16.1) in root path of the repo.

cd BadDiffusion
git clone https://github.com/huggingface/diffusers
cd diffusers
pip install -e .

After I finished running python baddiffusion.py --project default --mode train+measure --dataset CIFAR10 --batch 128 --epoch 10 --poison_rate 0.1 --trigger BOX_14 --target HAT --ckpt DDPM-CIFAR10-32 --fclip o -o --gpu 0, the following error occurred.

Traceback (most recent call last):
  File "baddiffusion.py", line 626, in train_loop
    sampling(config, epoch, pipeline)
  File "baddiffusion.py", line 412, in sampling
    gen_samples(init=noise, folder="samples")
  File "baddiffusion.py", line 372, in gen_samples
    pipline_res = pipeline(
  File "/home/ait/anaconda3/envs/diff/lib/python3.8/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
TypeError: __call__() got an unexpected keyword argument 'init'

Traceback (most recent call last):
  File "baddiffusion.py", line 650, in <module>
    pipeline = train_loop(config, accelerator, repo, model, noise_sched, optimizer, dataloader, lr_sched, start_epoch=cur_epoch, start_step=cur_step)
  File "baddiffusion.py", line 639, in train_loop
    sampling(config, 'final', pipeline)
  File "baddiffusion.py", line 412, in sampling
    gen_samples(init=noise, folder="samples")
  File "baddiffusion.py", line 372, in gen_samples
    pipline_res = pipeline(
  File "/home/ait/anaconda3/envs/diff/lib/python3.8/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
TypeError: __call__() got an unexpected keyword argument 'init'
Traceback (most recent call last):
  File "baddiffusion.py", line 650, in <module>
    pipeline = train_loop(config, accelerator, repo, model, noise_sched, optimizer, dataloader, lr_sched, start_epoch=cur_epoch, start_step=cur_step)
  File "baddiffusion.py", line 639, in train_loop
    sampling(config, 'final', pipeline)
  File "baddiffusion.py", line 412, in sampling
    gen_samples(init=noise, folder="samples")
  File "baddiffusion.py", line 372, in gen_samples
    pipline_res = pipeline(
  File "/home/ait/anaconda3/envs/diff/lib/python3.8/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
TypeError: __call__() got an unexpected keyword argument 'init'

Should I use older diffusers or modify the source code?

Sorry for the late reply. Since we need to sample from a poisoned noise, we modify the class DDPMPipeline and add an additional arguement init. Please run bash install.sh or cd diffusers && pip install . to install diffusers locally.

Hi, after installing diffusers locally, I got the following error:

ImportError: cannot import name 'DPMSolverMultistepScheduler' from 'diffusers'

Could you please help? Thanks.