使用llama.cpp把huggingface模型转换为ollama所需要的gguf格式

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

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就是你给模型起的别名

### 如何使用OllamaGGUF格式离线加载DeepSeek R1本地模型 为了实现通过Ollama框架以及GGUF格式来离线加载DeepSeek R1模型,以下是详细的说明: #### 准备工作 首先需要安装并配置好Ollama工具链。可以通过以下命令完成Ollama的安装: ```bash curl https://ollama.ai/install.sh | sh ``` 此脚本会自动检测操作系统环境,并下载适合版本的二进制文件[^3]。 接着验证安装是否成功: ```bash ollama --version ``` #### 下载DeepSeek R1模型 由于目标是离线部署,因此需提前获取DeepSeek R1模型文件。访问官方仓库或者可信第三方资源站点下载对应架构下的预训练权重文件。通常这些文件会被打包成`.bin`或压缩包形式提供给开发者使用[^4]。 注意:如果引用中的链接指向特定软件组件而非所需AI模型,则应忽略那些无关信息而专注于寻找正确的模型源地址。 #### 转换GGUF格式 一旦获得原始模型参数集之后,下一步就是将其转换成为兼容于OLLAMA运行时所支持的数据交换标准——即General Graph Format Unified (GGUF)[^5]。这一步骤可能涉及编写自定义脚本来解析原生结构并将之映射到新的表示方法上;也可能利用现成库函数简化过程。 假设存在这样一个Python脚本用于执行上述操作: ```python from transformers import AutoModelForCausalLM, AutoTokenizer import gguf_utils # 假设这是处理gguf的相关模块 model_name_or_path = "path/to/deepseek-r1" output_gguf_file = "./deepseek_r1.gguf" # 加载HuggingFace上的PyTorch模型实例及其配套词表 model = AutoModelForCausalLM.from_pretrained(model_name_or_path) tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) # 使用假定存在的工具类封装逻辑保存为gguf格式 gguf_utils.save_model_as_gguf(model=model, tokenizer=tokenizer, output_filepath=output_gguf_file) ``` #### 部署与测试 最后,在完成了必要的前期准备活动以后就可以尝试启动服务端程序并通过API接口发起请求来进行推理计算了。例如可以这样调用刚刚创建好的LLM应用: ```bash ollama run deepseek-r1 --file ./deepseek_r1.gguf ``` 以上便是关于怎样借助Ollama平台配合GGUF序列化机制达成对DeepSeek系列大语言模型实施本地化管理的一般流程概述[^6]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值