注:此文章用于记录自己在模型格式转换所遇到的一些问题和过程

1. 下载llama.cpp

这里直接给出git链接,你可以克隆下载,也可以下载zip然后解压。

ggml-org/llama.cpp: LLM inference in C/C++

2. 直接拉取原生huggingface模型进行转换

        第一次实验是直接拉取huggingface上的模型然后保存后就进行转换,这里直接贴出最简单的代码

from transformers import AutoTokenizer, AutoModelForCausalLM

model_dir = "./model"
model_name = "Qwen/Qwen2.5-0.5B-Instruct"
save_dir = "./my_models/Qwen2.5-0.5-Instruct"
model = AutoModelForCausalLM.from_pretrained(model_name, cache_dir=model_dir, torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)


tokenizer.save_pretrained(save_dir)
model.save_pretrained(save_dir)

说明几个AutoModelForCausalLM.from_pretrained的参数:

        cache_dir :指定模型保存的路径,避免下到C盘

        torch_dtype:自动选择适合自己电脑的张量类型

接下来就是进入llama.cpp文件夹下,运行如下命令

python convert_hf_to_gguf.py 你保存的hf模型路径 --outfile 你要保存的gguf模型路径 --outtype f16

当然你还可以通过llama.cpp进行量化,这里先不做演示,后续有空会更新。

3. lora微调模型转换

       总体步骤分为:保存模型——合并模型——转换模型

        3.1 保存模型

        在TrainingArguments里面定义好output_dir即可,保存后的模型目录应该包含以下文件

        3.2 合并模型

        这里我直接放上我自己的合并代码,比较简单

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
model_path = './models/models--Qwen--Qwen2.5-1.5B-Instruct/snapshots/989aa7980e4cf806f80c7fef2b1adb7bc71aa306' # 基座模型路径
lora_path = './output/Qwen2.5-1.5b-医疗数据/checkpoint-98' # lora模型路径
save_path = './models/Qwen2.5_1.5B_Instruct_lora_医疗数据' # 保存路径

base_model = AutoModelForCausalLM.from_pretrained(model_path,trust_remote_code=True) # 加载基座模型

tokenizer = AutoTokenizer.from_pretrained(model_path,trust_remote_code=True) # 加载分词器

lora_model = PeftModel.from_pretrained(base_model, lora_path) # 加载lora模型

merged_model = lora_model.merge_and_unload() # 合并模型

print("模型合并完成\n")

# 保存模型
merged_model.save_pretrained(save_path)
tokenizer.save_pretrained(save_path)

print("模型保存完成")

         生成的模型文件如下图

         3.3 转换模型

        使用的代码与第二节的代码是一样的,模型文件如下图

4. Ollama部署 

        选择一个文件夹下创建一个 mf 后缀文件,然后在 mf 文件下加入以下内容

FROM ./Qwen3-Embedding-8B-Q4_K_M.gguf

        然后在当前文件目录下终端执行

ollama create qwen3-embedding:8b -f ./1.mf

        1.mf 就是你刚刚创建的文件,qwen3-embedding:8b就是你给模型起的别名

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐