modelscope终端再执行下面的打印代码,需要重启怎么处理?

from swift.llm import DatasetName, ModelType, SftArguments, sft_main
import os

os.environ['CUDA_VISIBLE_DEVICES'] = '0'

sft_args = SftArguments(
model_type=ModelType.qwen1half_7b_chat,
dataset=[DatasetName.ms_bench_mini],
train_dataset_sample=1000,
logging_steps=5,
max_length=2048,
learning_rate=5e-5,
warmup_ratio=0.4,
output_dir='output',
lora_target_modules=['ALL'],
self_cognition_sample=500,
model_name=['小黄', 'Xiao Huang'],
model_author=['魔搭', 'ModelScope'])
output = sft_main(sft_args)
best_model_checkpoint = output['best_model_checkpoint']
print(f'best_model_checkpoint: {best_model_checkpoint}')

魔搭免费A10 24G 微调qwen1half_7b_chat 执行完上面的代码,终端再执行下面的打印代码,Notebook 量化的时候就503代码错误了,这个问题该如何解决?

print(f'''CUDA_VISIBLE_DEVICES=0 swift export \
--ckpt_dir {best_model_checkpoint} \
--quant_bits 4 --quant_method awq \
--merge_lora true''')

展开
收起
小小爱吃香菜 2024-04-16 21:24:35 60 分享 版权
阿里云 AI 助理回答

问题分析

根据您提供的代码和描述,问题的核心在于执行量化操作时出现了 503 错误。以下是可能的原因及解决方案:


1. 硬件资源不足

  • 原因qwen1half_7b_chat 模型的微调和量化需要较高的显存支持。即使使用 A10 GPU(24 GB 显存),在量化过程中可能会因为显存不足导致失败。
  • 解决方案
    1. 检查显存占用:在终端运行以下命令,确认当前 GPU 的显存使用情况:
      nvidia-smi
      

      如果显存接近满载,建议释放其他进程或重启环境。

    2. 降低量化精度:尝试将 --quant_bits 参数从 4 调整为 8,以减少显存需求:
      CUDA_VISIBLE_DEVICES=0 swift export \
      --ckpt_dir {best_model_checkpoint} \
      --quant_bits 8 --quant_method awq \
      --merge_lora true
      

2. 量化方法不兼容

  • 原因awq 是一种高效的量化方法,但并非所有模型都完全支持该方法。如果 qwen1half_7b_chat 模型未经过适配,可能会导致量化失败。
  • 解决方案
    1. 更换量化方法:尝试使用更通用的量化方法,例如 gptqbitsandbytes
      CUDA_VISIBLE_DEVICES=0 swift export \
      --ckpt_dir {best_model_checkpoint} \
      --quant_bits 4 --quant_method gptq \
      --merge_lora true
      
    2. 验证模型支持:确保 qwen1half_7b_chat 模型支持 awq 方法。如果不支持,建议参考官方文档或联系技术支持。

3. LoRA 合并失败

  • 原因--merge_lora true 参数用于合并 LoRA 权重。如果 LoRA 微调后的权重文件损坏或格式不正确,可能导致合并失败。
  • 解决方案
    1. 检查 LoRA 权重:确认 best_model_checkpoint 路径下是否存在完整的 LoRA 权重文件(如 adapter_model.bin)。
    2. 禁用 LoRA 合并:暂时关闭 LoRA 合并功能,单独测试量化是否成功:
      CUDA_VISIBLE_DEVICES=0 swift export \
      --ckpt_dir {best_model_checkpoint} \
      --quant_bits 4 --quant_method awq
      

4. Swift 工具链版本问题

  • 原因swift 工具链可能存在版本兼容性问题,导致量化操作失败。
  • 解决方案
    1. 升级 Swift 工具链:确保使用最新版本的 swift 工具链。可以通过以下命令更新:
      pip install --upgrade ms-swift
      
    2. 检查日志信息:查看终端输出的完整错误日志,定位具体的失败原因。

5. 数据集或超参数配置问题

  • 原因:微调过程中使用的数据集或超参数配置可能存在问题,导致生成的模型权重文件不完整或异常。
  • 解决方案
    1. 验证数据集:确保 ms_bench_mini 数据集格式正确,并且与 qwen1half_7b_chat 模型兼容。
    2. 调整超参数:尝试降低 max_lengthtrain_dataset_sample 参数值,以减少显存占用:
      sft_args = SftArguments(
          model_type=ModelType.qwen1half_7b_chat,
          dataset=[DatasetName.ms_bench_mini],
          train_dataset_sample=500,  # 减少样本数量
          max_length=1024,           # 减少最大长度
          learning_rate=5e-5,
          warmup_ratio=0.4,
          output_dir='output',
          lora_target_modules=['ALL'],
          self_cognition_sample=500,
          model_name=['小黄', 'Xiao Huang'],
          model_author=['魔搭', 'ModelScope']
      )
      

6. 其他注意事项

  • 显卡驱动版本:确保 GPU 驱动和 CUDA 版本与 swift 工具链兼容。建议使用 CUDA 11.7 或更高版本。
  • 模型加载方式:如果模型权重过大,可以尝试使用 load_in_4bit 参数加载模型,以减少显存占用。

总结

通过上述分析,您可以按照以下步骤逐步排查问题: 1. 检查显存占用,必要时降低量化精度或减少超参数规模。 2. 更换量化方法或禁用 LoRA 合并功能,验证是否为工具链或权重文件问题。 3. 确保数据集和超参数配置正确,并升级 swift 工具链至最新版本。

如果问题仍未解决,请提供完整的错误日志以便进一步分析。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352

还有其他疑问?
咨询AI助理