Skip to content

When use stabilityai/stable-diffusion-2, it always use GPU:0, how can I use specify GPU - Out of memory #1565

@ZJJHYM

Description

@ZJJHYM

Describe the bug

I found that if I use CompVis/stable-diffusion-v1-4,it is ok.But when I use stabilityai/stable-diffusion-2,it has this problem. How can I deal it?


when I train dreambooth, I use stabilityai/stable-diffusion-2. It always use GPU:0,but GPU:0 is not my device.GPU:1 is my device, and it is free, I want to use GPU:1 . I had try it:

  1. even though I set GPU(s) id by accelerate config.but It do not work
    image
  2. this also do not work for me
export MODEL_NAME="stabilityai/stable-diffusion-2"
export INSTANCE_DIR="_xxx_"
export OUTPUT_DIR="_xxx_"
CUDA_VISIBLE_DEVICES=1 accelerate launch train_dreambooth.py \
  --pretrained_model_name_or_path=$MODEL_NAME  \
  --instance_data_dir=$INSTANCE_DIR \
  --output_dir=$OUTPUT_DIR \
  --instance_prompt="a photo of sks _zzzzzzz_" \
  --resolution=768 \
  --train_batch_size=1 \
  --gradient_accumulation_steps=1 \
  --learning_rate=5e-6 \
  --lr_scheduler="constant" \
  --lr_warmup_steps=0 \
  --max_train_steps=400
......

Reproduction

help me please.What should I do?

Logs

Traceback (most recent call last):
  File "/home/zhuojunjie/3-oraimo/diffusers/examples/dreambooth/train_dreambooth.py", line 713, in <module>
    main(args)
  File "/home/zhuojunjie/3-oraimo/diffusers/examples/dreambooth/train_dreambooth.py", line 632, in main
    model_pred = unet(noisy_latents, timesteps, encoder_hidden_states).sample
  File "/root/miniconda3/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
    return forward_call(*input, **kwargs)
  File "/root/miniconda3/lib/python3.9/site-packages/accelerate/utils/operations.py", line 490, in __call__
    return convert_to_fp32(self.model_forward(*args, **kwargs))
  File "/root/miniconda3/lib/python3.9/site-packages/torch/amp/autocast_mode.py", line 14, in decorate_autocast     
    return func(*args, **kwargs)
  File "/root/miniconda3/lib/python3.9/site-packages/diffusers/models/unet_2d_condition.py", line 367, in forward   
    sample = upsample_block(
  File "/root/miniconda3/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
    return forward_call(*input, **kwargs)
  File "/root/miniconda3/lib/python3.9/site-packages/diffusers/models/unet_2d_blocks.py", line 1255, in forward     
    hidden_states = attn(hidden_states, encoder_hidden_states=encoder_hidden_states).sample
  File "/root/miniconda3/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
    return forward_call(*input, **kwargs)
  File "/root/miniconda3/lib/python3.9/site-packages/diffusers/models/attention.py", line 219, in forward
    hidden_states = block(hidden_states, context=encoder_hidden_states, timestep=timestep)
  File "/root/miniconda3/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
    return forward_call(*input, **kwargs)
  File "/root/miniconda3/lib/python3.9/site-packages/diffusers/models/attention.py", line 477, in forward
    hidden_states = self.attn1(norm_hidden_states) + hidden_states
  File "/root/miniconda3/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1190, in _call_impl
    return forward_call(*input, **kwargs)
  File "/root/miniconda3/lib/python3.9/site-packages/diffusers/models/attention.py", line 572, in forward
    hidden_states = self._attention(query, key, value)
  File "/root/miniconda3/lib/python3.9/site-packages/diffusers/models/attention.py", line 593, in _attention        
    hidden_states = torch.bmm(attention_probs, value)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 810.00 MiB (GPU 0; 23.70 GiB total capacity; 21.84 GiB already allocated; 287.69 MiB free; 22.07 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
Steps:   0%|                                                                                | 0/400 [00:02<?, ?it/s]Traceback (most recent call last):
  File "/root/miniconda3/bin/accelerate", line 8, in <module>
    sys.exit(main())
  File "/root/miniconda3/lib/python3.9/site-packages/accelerate/commands/accelerate_cli.py", line 45, in main       
    args.func(args)
  File "/root/miniconda3/lib/python3.9/site-packages/accelerate/commands/launch.py", line 1104, in launch_command   
    simple_launcher(args)
  File "/root/miniconda3/lib/python3.9/site-packages/accelerate/commands/launch.py", line 567, in simple_launcher   
    raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
subprocess.CalledProcessError: Command '['/root/miniconda3/bin/python', 'train_dreambooth.py', '--pretrained_model_name_or_path=stabilityai/stable-diffusion-2', '--instance_data_dir=/home/zhuojunjie/datasets/origin', '--output_dir=/home/zhuojunjie/3-oraimo/diffusers/output', '--instance_prompt=a photo of sks electric shave', '--resolution=768', '--train_batch_size=1', '--gradient_accumulation_steps=1', '--learning_rate=5e-6', '--lr_scheduler=constant', '--lr_warmup_steps=0', '--max_train_steps=400']' returned non-zero exit status 1.

System Info

no

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstaleIssues that haven't received updates

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions