merge_model.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import os
  2. os.environ["CUDA_VISIBLE_DEVICES"] = ""
  3. from transformers import AutoModelForCausalLM, AutoTokenizer
  4. from peft import PeftModel
  5. import torch
  6. # 由于 LoRA 权重不能直接转 GGUF,你必须先将它与原模型合并。
  7. lora_path = "model/qwen-0.8b-tender-lora/checkpoint-430"
  8. save_path = "model/qwen-merged-model"
  9. # 请将此处替换为你上面 find 命令查出来的真实绝对路径
  10. base_model_path = "/home/user/.cache/huggingface/hub/models--Qwen--Qwen3.5-0.8B/snapshots/2fc06364715b967f1860aea9cf38778875588b17"
  11. print(f"正在尝试从本地路径加载模型: {base_model_path}")
  12. # 显式指定从本地加载
  13. base_model = AutoModelForCausalLM.from_pretrained(
  14. base_model_path,
  15. torch_dtype=torch.float32,
  16. device_map={"": "cpu"},
  17. local_files_only=True, # 强制不联网,路径不对会立刻报错
  18. trust_remote_code=True
  19. )
  20. model = PeftModel.from_pretrained(base_model, lora_path)
  21. merged_model = model.merge_and_unload()
  22. merged_model.save_pretrained(save_path)
  23. tokenizer = AutoTokenizer.from_pretrained(base_model_path)
  24. tokenizer.save_pretrained(save_path)
  25. print("模型已成功合并并保存。")