peft icon indicating copy to clipboard operation
peft copied to clipboard

Deepspeed Zero3 LoRA merge error

Open hendrydong opened this issue 1 year ago • 0 comments

Hi,

I found that when I use Deepspeed zero3, the LoRA merge cannot work. (The zero2 case works properly.) Could you help me to check that?

RuntimeErrorRuntimeError: : The size of tensor a (0) must match the size of tensor b (2048) at non-singleton dimension 1The size of tensor a (0) must match the size of tensor b (2048) at non-singleton dimension 1

Full error:

    target.weight.data += (
RuntimeError: The size of tensor a (0) must match the size of tensor b (2048) at non-singleton dimension 1
    target.weight.data += (
    target.weight.data += (
RuntimeErrorRuntimeError: : The size of tensor a (0) must match the size of tensor b (2048) at non-singleton dimension 1The size of tensor a (0) must match t
he size of tensor b (2048) at non-singleton dimension 1

Traceback (most recent call last):

    model.merge_lora_weights()
  File "hf_decoder_model.py", line 415, in merge_lora_weights
    self.get_backend_model().merge_and_unload()
  File "lib/python3.9/site-packages/peft/tuners/lora.py", line 275, in merge_and_unload
    target.weight.data += (
RuntimeError: The size of tensor a (0) must match the size of tensor b (2048) at non-singleton dimension 1

The config:

    "fp16": {
        "enabled": "auto",
        "loss_scale": 0,
        "loss_scale_window": 1000,
        "initial_scale_power": 16,
        "hysteresis": 2,
        "min_loss_scale": 1
    },
    "bf16": {
        "enabled": "auto"
    },
    "optimizer": {
        "type": "AdamW",
        "params": {
            "lr": "auto",
            "betas": "auto",
            "eps": "auto",
            "weight_decay": "auto"
        }
    },
"zero_optimization": {
        "stage": 3,
        "offload_optimizer": {
            "device": "cpu",
            "pin_memory": true
        },
        "offload_param": {
            "device": "cpu",
            "pin_memory": true
        },
        "overlap_comm": true,
        "contiguous_gradients": true,
        "sub_group_size": 1e9,
        "reduce_bucket_size": "auto",
        "stage3_prefetch_bucket_size": "auto",
        "stage3_param_persistence_threshold": "auto",
        "stage3_max_live_parameters": 1e9,
        "stage3_max_reuse_distance": 1e9,
        "stage3_gather_16bit_weights_on_model_save": true
    },
    "gradient_accumulation_steps": "auto",
    "gradient_clipping": "auto",
    "steps_per_print": 2000,
    "train_batch_size": "auto",
    "train_micro_batch_size_per_gpu": "auto",
    "wall_clock_breakdown": false
}```

hendrydong avatar Apr 12 '23 03:04 hendrydong