在colab中把微调后的大模型合并和量化——仅作参考
注意:仅作参考,因为按照这些步骤后,在ollama运行的模型失去了微调后的准确度:
从95%->5%
前提,在我的云端硬盘创建文件夹colab,然后上传两个压缩文件(因为免费的空间有限),分别是
lora_model-20241109T051600Z-001.zip:微调后的lora权重
Qwen2.5-1.5B-Instruct.zip:微调模型的原始模型
新建colab,修改笔记本设置,然后连接
挂载云盘
import os
from google.colab import drive
drive.mount('/content/drive')
进入colab目录
%cd /content/drive/MyDrive/colab
解压Qwen2.5-1.5B-Instruct.zip
!unzip Qwen2.5-1.5B-Instruct.zip
解压lora_model-20241109T051600Z-001.zip
!unzip lora_model-20241109T051600Z-001.zip
合并
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3"
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
"""
将lora权重合并到大模型中
"""
def merge_lora_to_LLM():
model_name_or_path = "/content/drive/MyDrive/colab/Qwen2.5-1.5B-Instruct"
adapter_name_or_path = "/content/drive/MyDrive/colab/lora_model"
save_path = "/content/drive/MyDrive/colab/model_last"
tokenizer = AutoTokenizer.from_pretrained(
model_name_or_path,
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
model_name_or_path,
trust_remote_code=True,
low_cpu_mem_usage=True,
torch_dtype=torch.float16,
device_map="auto"
)
model = PeftModel.from_pretrained(model, adapter_name_or_path)
model = model.merge_and_unload()
tokenizer.save_pretrained(save_path)
model.save_pretrained(save_path)
if __name__ == "__main__":
merge_lora_to_LLM()
下载llama.cpp用于量化
# 克隆 llama.cpp 仓库
!git clone https://github.com/ggerganov/llama.cpp
# 进入 llama.cpp 目录
%cd llama.cpp
创建目录保存量化后文件
# 创建新目录 "Llama3-8B-Chinese-Chat-GGUF" 用于保存转换后的模型
!mkdir -p /content/drive/MyDrive/colab/Qwen2.5-1.5B-Instruct-YuanShenQ-GGUF
执行量化
# 转换模型(假设你已经上传了合并后的 safetensors 格式模型)
!python /content/drive/MyDrive/colab/llama.cpp/convert_hf_to_gguf.py \
/content/drive/MyDrive/colab/model_last \
--outfile /content/drive/MyDrive/colab/Qwen2.5-1.5B-Instruct-YuanShenQ-GGUF/Qwen2.5-1.5B-Instruct-YuanShenQ.gguf \
--outtype q8_0
返回云盘,找到gguf文件,右键下载即可
下载完成后,移动到自己保存模型的位置,在同一个目录下新建txt文件,写入下面的内容,保存退出,重命名为Modelfile,注意,没有后缀
FROM ./your-model-path.gguf
在该目录的空白位置,右键-在终端中打开,输入下面的代码,回车。完成后查看
# 注意修改模型名字model-name
ollama create model-name -f Modelfile
Ollama list
运行模型
ollama run GenshinQA:latest
原文地址:https://blog.csdn.net/weixin_74825941/article/details/143648272
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!