ludwig 无法在不使用量化时微调 翻译结果:无法在未使用量化时进行微调,

wecizke3  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(50)

描述bug

在尝试训练(微调)Mistral模型时,如果不使用量化,会出现错误。

重现问题

重现问题的步骤:

  1. 正常安装ludwig并使用以下提供的配置
  2. 开始训练过程
    请提供代码、yaml配置文件和一个示例数据以便完全重现问题。无法重现的问题将被忽略。
    配置文件(model.yaml):
model_type: llm  
base_model: mistralai/Mistral-7B-Instruct-v0.2
                                                                               
#quantization: 
#  bits: 8
                                                                               
adapter:        
  type: lora  

prompt: 
  template: |   
    <s>                
    [INST]     
    Below is an instruction that describes a task, paired with an input that may provide further context.
    Write a response that appropriately completes the request.
                                                                               
    ### Instruction:
    {instruction}        
    [/INST]             

    ### Input:
    {input}        
    </s>
                                                                               
    ### Response:
                                                                               
input_features:
  - name: prompt
    type: text

output_features:
  - name: output
    type: text

trainer:
  type: finetune
  learning_rate: 2.0e-4
  batch_size: 1
  gradient_accumulation_steps: 16
  epochs: 2
  learning_rate_scheduler:
    decay: cosine
    warmup_fraction: 0.03
    reduce_on_plateau: 0

preprocessing:
  sample_ratio: 0.1

backend:
  type: local

命令: ludwig train --config model.yaml --dataset "ludwig://alpaca"
实验描述:

╒══════════════════╤══════════════════════════════════════════════════════════════════════════════════════╕                                                                                                                                                                                                                  
│ Experiment name  │ experiment                                                                           │                                                                                                                                                                                                                  
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                                                                                                                                                                                  
│ Model name       │ run                                                                                  │                                                                                                                                                                                                                  
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                                                                                                                                                                                  
│ Output directory │ /home/azureuser/ludwig/results/experiment_run_14                                     │                                                                                                                                                                                                                  
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                                                                                                                                                                                  
│ ludwig_version   │ '0.9.3'                                                                              │                                                                                                                                                                                                                  
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                                                                                                                                                                                  
│ command          │ ('/home/azureuser/ludwig/venv/bin/ludwig train --config model.yaml --dataset '       │                                                                                                                                                                                                                  
│                  │  'ludwig://alpaca')                                                                  │                                                   
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                                                                                                                                                                                  
│ random_seed      │ 42                                                                                   │                                                   
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                                                                                                                                                                                  
│ dataset          │ 'ludwig://alpaca'                                                                    │                                                   
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                   
│ data_format      │ 'ludwig'                                                                             │                                                   
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤                                                   
│ torch_version    │ '2.2.0+cu121'                                                                        │                                                   
├──────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤ 
│ compute          │ {   'arch_list': [   'sm_50',                                                        │                                                                                                                                                                                                                  
│                  │                      'sm_60',                                                        │                                                   
│                  │                      'sm_70',                                                        │                                                                                                                                                                                                                  
│                  │                      'sm_75',                                                        │                                                   
│                  │                      'sm_80',                                                        │                                                   
│                  │                      'sm_86',                                                        │                                                   
│                  │                      'sm_90'],                                                       │                                                   
│                  │     'devices': {   0: {   'device_capability': (8, 0),                               │                                                   
│                  │                           'device_properties': "_CudaDeviceProperties(name='NVIDIA " │                                                   
│                  │                                                "A100 80GB PCIe', major=8, "          │                                                   
│                  │                                                'minor=0, total_memory=81049MB, '     │                                                   
│                  │                                                'multi_processor_count=108)',         │                                                   
│                  │                           'gpu_type': 'NVIDIA A100 80GB PCIe'}},                     │                                                   
│                  │     'gencode_flags': '-gencode compute=compute_50,code=sm_50 -gencode '              │                                                   
│                  │                      'compute=compute_60,code=sm_60 -gencode '                       │
│                  │                      'compute=compute_70,code=sm_70 -gencode '                       │
│                  │                      'compute=compute_75,code=sm_75 -gencode '                       │
│                  │                      'compute=compute_80,code=sm_80 -gencode '                       │
│                  │                      'compute=compute_86,code=sm_86 -gencode '                       │
│                  │                      'compute=compute_90,code=sm_90',                                │
│                  │     'gpus_per_node': 1,                                                              │
│                  │     'num_nodes': 1}                                                                  │
╘══════════════════╧══════════════════════════════════════════════════════════════════════════════════════╛

用户指定的配置(带升级):

{   'adapter': {'type': 'lora'},
    'backend': {'type': 'local'},
    'base_model': 'mistralai/Mistral-7B-Instruct-v0.2',
    'input_features': [{'name': 'prompt', 'type': 'text'}],
    'ludwig_version': '0.9.3',
    'model_type': 'llm',
    'output_features': [{'name': 'output', 'type': 'text'}],
    'preprocessing': {'sample_ratio': 0.1},
    'prompt': {   'template': '<s>\n'
                              '[INST]\n'
                              'Below is an instruction that describes a task, ' 
                              'paired with an input that may provide further '
                              'context.\n'
                              'Write a response that appropriately completes '
                              'the request.\n'
                              '\n'
                              '### Instruction:\n'
                              '{instruction}\n'
                              '[/INST]\n'
                              '\n'
                              '### Input:\n'
                              '{input}\n'
                              '</s>\n'
                              '\n'
                              '### Response:\n'},
    'trainer': {   'batch_size': 1,
                   'epochs': 2,
                   'gradient_accumulation_steps': 16,
                   'learning_rate': 0.0002,
                   'learning_rate_scheduler': {   'decay': 'cosine',
                                                  'reduce_on_plateau': 0,
                                                  'warmup_fraction': 0.03},
                   'type': 'finetune'}}

预期行为

训练将开始。

截图

Starting with step 0, epoch: 0
Training:   0%|                                                                                                                                                                                                                                                                                     | 0/7280 [00:00<?, ?it/s]
/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py:685: UserWarning: Memory efficient kernel not used because: (Triggered internally at ../aten/src/ATen/native/transformers/cuda/sdp_utils.cpp:415.)
  attn_output = torch.nn.functional.scaled_dot_product_attention(
/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py:685: UserWarning: Memory Efficient attention has been runtime disabled. (Triggered internally at ../aten/src/ATen/native/transformers/sdp_utils_cpp.h:456.)
  attn_output = torch.nn.functional.scaled_dot_product_attention(
/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py:685: UserWarning: Flash attention kernel not used because: (Triggered internally at ../aten/src/ATen/native/transformers/cuda/sdp_utils.cpp:417.)
  attn_output = torch.nn.functional.scaled_dot_product_attention(
/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py:685: UserWarning: Expected query, key and value to all be of dtype: {Half, BFloat16}. Got Query dtype: float, Key dtype: float, and Value dtype: float instead. (Triggered internally at ../aten/src/ATen/native/tra
nsformers/sdp_utils_cpp.h:101.)
  attn_output = torch.nn.functional.scaled_dot_product_attention(
Traceback (most recent call last):
  File "/home/azureuser/ludwig/venv/bin/ludwig", line 8, in <module>
    sys.exit(main())
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/cli.py", line 197, in main
    CLI()
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/cli.py", line 72, in __init__
    getattr(self, args.command)()
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/cli.py", line 77, in train
    train.cli(sys.argv[2:])
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/train.py", line 395, in cli
    train_cli(**vars(args))
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/train.py", line 185, in train_cli
    model.train(
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/api.py", line 678, in train
    train_stats = trainer.train(
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/trainers/trainer.py", line 1044, in train
    should_break, has_nan_or_inf_tensors = self._train_loop(
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/trainers/trainer.py", line 1241, in _train_loop
    loss, all_losses, used_tokens = self.train_step(inputs, targets, should_step=should_step, profiler=profiler)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/trainers/trainer.py", line 337, in train_step
    model_outputs = self.dist_model((inputs, targets))
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/ludwig/models/llm.py", line 274, in forward
    model_outputs = self.model(input_ids=self.model_inputs, attention_mask=self.attention_masks).get(LOGITS)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/peft/peft_model.py", line 1083, in forward
    return self.base_model(
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/peft/tuners/tuners_utils.py", line 161, in forward
    return self.model.forward(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py", line 1154, in forward
    outputs = self.model(
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py", line 1039, in forward
    layer_outputs = decoder_layer(
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py", line 754, in forward
    hidden_states, self_attn_weights, present_key_value = self.self_attn(
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/azureuser/ludwig/venv/lib/python3.10/site-packages/transformers/models/mistral/modeling_mistral.py", line 685, in forward
    attn_output = torch.nn.functional.scaled_dot_product_attention(
RuntimeError: No available kernel. Aborting execution.
Training:   0%|

环境信息(请填写以下信息):

  • OS:Ubuntu
  • 版本:22.04.4 LTS
  • Python版本:3.10.12
  • Ludwig版本:0.9.3
    附加上下文

使用8位量化可以正常工作:

Starting with step 0, epoch: 0
Training:   0%|                                                                                                                                                                                                                                                                                     | 0/7280 [00:00<?, ?it/s]/home/azureuser/ludwig/venv/lib/python3.10/site-packages/bitsandbytes/autograd/_functions.py:322: UserWarning: MatMul8bitLt: inputs will be cast from torch.float32 to float16 during quantization
  warnings.warn(f"MatMul8bitLt: inputs will be cast from {A.dtype} to float16 during quantization")
Training:   6%|██████████████▍                                                                                                                                                                                                                                             | 416/7280 [04:04<1:03:58,  1.79it/s, loss=0.0647]
dohp0rv5

dohp0rv51#

嘿,@simaotwx -抱歉我们错过了这个问题。请问您在使用torch、huggingface和peft时遇到了什么问题?您是否仍然看到这个问题?

xxslljrj

xxslljrj2#

嘿,@simaotwx - 抱歉我们错过了这个问题。请问您在使用torch、huggingface和peft时遇到了什么版本问题?您现在还看到这个问题吗?
没关系,不用担心。
版本:

huggingface-hub          0.20.3
peft                     0.8.2
sentence-transformers    2.3.1
torch                    2.2.0
torchaudio               2.2.0
torchdata                0.7.1
torchinfo                1.8.0
torchmetrics             1.3.1
torchtext                0.17.0
torchvision              0.17.0
transformers             4.37.2

我仍然看到相同的问题。
我已经解决了这个问题,不再使用ludwig,所以现在这个问题对我来说不相关了,但它仍然存在。
在查看这个问题时,我注意到我复制了错误的配置。我将其更新为与我刚刚测试的内容相匹配。

k97glaaz

k97glaaz3#

你好,我也遇到了同样的问题,有什么建议吗?

相关问题