实操:可直接看四、九(文中地址均为作者的本地地址 实际目录地址自行选择)
本文档以《Ollama笔记.md》为内容大纲基准,参考《课程一:基于 Ollama 的大模型本地部署与轻量化优化(2 小时体验课讲义)》补充操作细节。 本机地址约定:Ollama 安装目录
C:\Users\20334\AppData\Local\Programs\Ollama;llama.cpp 源码目录D:\develop\llama.cpp-master。
目录
一、Ollama 下载
二、Ollama 介绍
2.1 什么是 Ollama?
2.2 为什么要做大模型本地部署?
2.3 轻量化原理简述
三、Ollama 常用命令
四、部署、调用某一模型的操作全流程
4.1 安装 Ollama
Windows 系统
MacOS 系统
Linux 系统
环境验证(必做)
4.2 一键部署模型
4.3 调用方式一:终端交互式调用
4.4 调用方式二:本地 HTTP API 调用(程序对接必备)
4.5 调用方式三:Python 代码调用(开发实操)
4.6 调用方式四:可视化 Web 界面调用(Open WebUI)
五、启用 1 个或多个模型的介绍
5.1 核心认知
5.2 同一个终端执行多条 ollama run
场景一:串行输入 → 单模型,自动卸载前一个
场景二:同终端后台并行 → 多模型常驻
5.3 多模型并存的资源后果
纯 CPU 环境(多开不管的后果)
有 N 卡 GPU 环境(多开不管的后果)
5.4 只跑 Python 代码的场景
5.5 最简总结
六、模型驻留时间的配置说明、配置优先级说明
6.1 控制资源的核心配置
6.2 配套实操命令
6.3 配置优先级说明
七、Opencode 接本地模型的方法说明
八、精度说明
8.1 模型精度基础
8.2 量化类型对照(GGUF 格式)
8.3 多精度量化版本一键切换
九、下载模型后量化操作说明完整操作步骤
9.1 核心准备工作
9.2 步骤 1:安装 Python 依赖
9.3 步骤 2:下载 llama.cpp 转换工具
9.4 步骤 3:放置下载好的模型
9.5 步骤 4:将模型转为 FP16 GGUF 基础格式
9.6 步骤 5:INT4 量化(CPU 最优,Ollama 推荐)
9.7 步骤 6:编写 Ollama Modelfile 配置文件
9.8 步骤 7:导入模型到 Ollama
9.9 量化部署常见问题(Windows 专用)
9.10 完整流程总结
附录:常见问题排查(讲义补充)
附录:课程核心命令汇总(讲义补充)
一、Ollama 下载
官方下载地址:Ollama
国内镜像地址: Ollama - Ollama 框架
安装完成后,本机 Ollama 程序位于:C:\Users\20334\AppData\Local\Programs\Ollama
Ollama 安装后默认以后台服务形式常驻本地,监听11434端口,模型文件默认存储在
C:\Users\20334\.ollama\models。models 目录下就两个子文件夹,作用如下:
文件夹 作用 blobs 模型实际数据仓库。所有内容以 sha256-<哈希> 命名(内容寻址),包括模型权重、分词器、模板等 layer 数据。同一份数据可被多个模型共享引用,实现去重 manifests 模型清单。按 registry.ollama.ai\library<模型名><标签> 组织,每个 .json 记录该模型由哪些 blob 组成(digest、大小、类型),把"模型名"映射到"blob 集合"
blobs:数据文件(GGUF 权重 + tokenizer + 模板等)
manifests:模型条目 —— 拉取/导入的模型
简单理解:manifests 是目录索引(记录"xxx模型 = 哪几个文件"),blobs 是实际文件仓库。两者配合,ollama 才能用 ollama run 模型名 快速定位并加载模型。
二、Ollama 介绍
2.1 什么是 Ollama?
Ollama 是一款开源、轻量、跨平台的大模型本地部署工具,主打极简操作:
无需复杂配置环境,一条命令即可完成模型的下载、部署、运行、调用;
完美适配新手入门;
支持主流开源轻量化模型(Qwen、Llama、Hermes 等);
支持本地私有微调模型自定义导入部署;
内置 OpenAI 兼容 API 端点(
http://localhost:11434/v1),方便程序与各类客户端对接。
2.2 为什么要做大模型本地部署?
| 云端部署痛点 | 本地部署优势 |
|---|---|
| 依赖网络,断网即不可用 | 离线可用,部署完成后无需联网 |
| 输入内容需上传云端,有隐私风险 | 隐私安全,对话数据仅在本地运行 |
| 有调用次数限制与 API 费用 | 低成本无限制,无调用费用、无次数限制 |
| 难以自由调试 | 可定制优化,支持轻量化、参数调优、私有模型落地 |
2.3 轻量化原理简述
原生大模型参数规模庞大(数十亿、上百亿参数),文件体积可达几十 GB 甚至上百 GB,普通个人电脑无法直接运行。轻量化优化指在基本不损失模型效果的前提下,压缩模型体积、降低内存与算力占用。
三大模型压缩技术:
量化(核心):降低参数数值精度(FP32/FP16 → INT8/INT4),大幅缩小体积、提升推理速度;
剪枝:剔除网络中贡献小的冗余权重、神经元或通道,精简网络结构;
知识蒸馏:用高精度大模型(教师)的输出知识训练轻量化小模型(学生)。
三、Ollama 常用命令
# 查看版本号(验证安装是否成功) ollama --version # 拉取(下载)模型 ollama pull 模型名 # 运行模型(未下载则自动下载,下载后自动加载并进入 >>> 交互对话) ⭐⭐⭐⭐⭐ ollama run 模型名 # 查看已安装的模型列表 ollama list # 查看当前正在运行的模型 ollama ps # 停止指定模型的运行(释放内存/显存资源) ollama stop 模型名 # 删除模型(释放磁盘空间) ollama rm 模型名 # 用 Modelfile 创建自定义模型(用于参数调优、导入 GGUF 模型) ollama create 自定义模型名 -f Modelfile # 手动启动后台服务(默认常驻,一般无需执行) ollama serve四、部署、调用某一模型的操作全流程
以模型Qwen1.5-0.5B-Chat(Ollama 库 tag:
qwen:0.5b)为例,走通"安装 → 部署 → 四种方式调用"全流程。
4.1 安装 Ollama
Windows 系统
打开官网 Ollama ,点击Download for Windows下载安装包;
双击 exe 安装包,默认路径安装即可(本机默认安装目录:
C:\Users\20334\AppData\Local\Programs\Ollama);安装完成后,系统自动启动 Ollama 后台服务。
MacOS 系统
官网下载Download for macOS的 dmg 安装包;
将 Ollama 拖入"应用程序",打开即可自动配置环境。
Linux 系统
终端输入一键安装命令:
curl -fsSL https://ollama.com/install.sh | sh环境验证是否安装成功(必做):终端输入
ollama --version输出版本号即安装成功;若提示"不是内部命令",重启终端或重新安装(Windows 需确认安装时已添加环境变量)。
4.2 一键部署模型
# 第一步:先拉取模型(约 500MB,体积极小、下载极快) ollama pull qwen:0.5b # 第二步:运行模型(自动加载并进入交互对话) ollama run qwen:0.5b部署过程说明:
首次运行会自动下载模型文件(约 500MB);
下载完成后自动加载模型,终端出现
>>>交互提示符即部署成功;全程无需手动配置环境、无需显卡,CPU 自动调度运行。
拉取机制说明:
拉取的是Ollama 官方模型库(Library)中存在的模型,你可以在 ollama.com/search 搜索到有哪些模型
ollama pull 实际下载地址不是网页本身,而是 Ollama 的模型注册中心(registry),默认从 registry.ollama.ai 拉取镜像文件(GGUF 格式)。网页只是模型目录/文档页,命令走的是 registry 下载通道。
国内网络可换镜像源:如果你直接 pull 速度慢或失败,可以配置国内镜像 https://ollama.ac.cn(讲义中也提到过该地址),例如:
:: 设置镜像源后重新拉取 set OLLAMA_HOST=https://ollama.ac.cn ollama pull qwen:0.5b或者通过修改注册表/环境变量指向镜像地址,之后再 ollama pull 就能加速下载。
所以流程是:网页负责"选模型、看说明",ollama pull 负责"从 registry 下载",两者对应同一个模型库。
4.3 调用方式一:终端交互式调用
模型启动后出现>>>提示符,直接输入问题即可对话:
>>> 你好,请介绍一下本地大模型部署 >>> 写一段AI课程学习心得 >>> 解释模型量化的作用退出对话命令:/bye
4.4 调用方式二:本地 HTTP API 调用(程序对接必备)
Ollama 安装后默认常驻本地服务http://localhost:11434,支持离线 API 调用。
# 生成接口测试(Windows 下 curl 需转义双引号) curl http://localhost:11434/api/generate -d "{\"model\":\"qwen:0.5b\",\"prompt\":\"写一句AI课程欢迎语\",\"stream\":false}" # 查看本地所有已安装模型的 API 列表 curl http://localhost:11434/api/tags4.5 调用方式三:Python 代码调用(开发实操)
先安装依赖:
pip install requests完整可运行代码:
import requests # 本地Ollama接口地址 url = "http://localhost:11434/api/generate" # 请求参数配置j data = { "model": "qwen:0.5b", "prompt": "请简单介绍Ollama本地部署的优势", "stream": False } # 发送请求并获取结果 response = requests.post(url, json=data) result = response.json() # 打印AI回复 print("AI回复:", result["response"])4.6 调用方式四:可视化 Web 界面调用(Open WebUI)
通过 Open WebUI 搭建类 ChatGPT 网页界面,操作更直观。
操作顺序:启动 Docker Desktop →ollama run qwen:0.5b→ WebUI 起服务。
# 官方镜像一键部署 docker run -d -p 3000:3000 --name open-webui ghcr.io/open-webui/open-webui:main # 南大镜像(国内网络更稳定) docker run -d -p 3000:3000 --name open-webui ghcr.nju.edu.cn/open-webui/open-webui:main浏览器访问http://localhost:3000,自动关联本地 Ollama 所有模型。
五、启用 1 个或多个模型的介绍
5.1 核心认知
Ollama 是单服务进程(11434 端口全局共用)。不管开几个终端,底层都是共用同一套 Ollama 后台调度,只分两种用法:
ollama run 模型名(交互式对话);Python/代码调用 API(自动按需加载模型)。
5.2 同一个终端执行多条ollama run
场景一:串行输入 → 单模型,自动卸载前一个
ollama run qwen:0.5b :: 退出对话(/bye)之后,再输入 ollama run llama3:1b原理:交互式 run 独占终端会话,前一个模型退出才释放,再加载新模型;
资源后果:同一时间内存/显存永远只存 1 个模型,无爆内存风险。
场景二:同终端后台并行 → 多模型常驻
:: Windows:cmd 用 start /b 后台启动 start /b ollama run qwen:0.5b start /b ollama run llama3:1b :: Linux/macOS:用 & 后台运行 ollama run qwen:0.5b & ollama run llama3:1b &此时两个模型同时加载进内存/显存,效果与开两个独立终端完全一致,ollama ps能查到两个运行中的模型。
5.3 多模型并存的资源后果
纯 CPU 环境(多开不管的后果)
所有模型占用物理内存 RAM,多个模型内存占用累加,无内存共享;
8G 内存机器开 3 个小模型 → 内存占满、系统疯狂读写虚拟内存、整机卡顿;
后续再调用新模型,Ollama 按LRU(最近最少使用)淘汰闲置最久的模型,导致频繁重载、首句推理几十秒;
代码 API 请求会排队、超时、内存报错。
有 N 卡 GPU 环境(多开不管的后果)
显存余量充足:全部载入显存,推理速度正常,显存持续被占用;
显存不够:新模型自动溢出到系统内存,一半 GPU 一半 CPU 混合推理,速度暴跌 5~20 倍;
显存彻底打满:OOM 报错,自动踢出闲置模型,下次调用重新加载;
若代码设置
keep_alive: -1永久驻留,显存永久占用不自动释放,必须手动ollama stop。
5.4 只跑 Python 代码的场景
全程只在一个终端运行 Python 脚本时,不需要开
ollama run,API 自动按需加载模型,这是最常用场景。
# 同一份代码反复换 model 名称、多脚本并发调用,全部共用 11434 服务 data = {"model": "qwen:0.5b", "keep_alive": "1m"} requests.post("http://localhost:11434/api/generate", json=data) # 再改 model="llama3:1b" 再次请求,多个模型可同时驻留默认规则(OLLAMA_MAX_LOADED_MODELS默认 = 3):后台自动缓存已调用模型,多次调用不同模型会同时驻留多个在内存/显存,不受终端数量限制,只受硬件 + 环境变量限制。
不做管控的后果:
CPU 端:反复切换多种模型全部常驻内存,RAM 逐步占满、系统变卡、swap 狂读;闲置超时(默认 5 分钟)才自动卸载,期间资源一直占用;
GPU 端:多模型全进显存,显存慢慢耗尽,后续新模型落 CPU 运行;若配置
keep_alive: -1,模型永久挂在显存、永不自动释放,不手动 stop 永远占卡。
5.5 最简总结
同终端串行
ollama run:永远单模型,无资源爆炸风险;同终端后台并行 run / Python 频繁切换多 model:和多终端效果一致,多模型同占内存/显存;
CPU 怕多开爆内存、GPU 怕多开爆显存,不管
keep_alive=-1会永久锁资源;稳妥方案:代码配
keep_alive="1m"+ 启动脚本前设置OLLAMA_MAX_LOADED_MODELS=1。
六、模型驻留时间的配置说明、配置优先级说明
6.1 控制资源的核心配置
配置 1:keep_alive(代码内设置,优先级最高)
| 取值 | 含义 | 适用 |
|---|---|---|
0 | 用完即清(立即释放) | 低配机推荐 |
1m | 闲置 1 分钟释放 | 测试推荐 |
-1 | 永久常驻(必须手动 stop) | 不推荐滥用 |
在 API 请求 JSON 中传入
"keep_alive": "1m",可覆盖环境变量。
配置 2:OLLAMA_MAX_LOADED_MODELS(环境变量,全局管控并行加载数)
:: 全局最多同时加载 2 个模型,超出自动淘汰旧模型 set OLLAMA_MAX_LOADED_MODELS=2 python demo.py设
=1:任何场景同一时间只保留 1 个模型,调用新模型自动卸载旧的,杜绝多开爆资源,低配电脑必加。
6.2 配套实操命令
:: 设置 1 分钟自动释放 set OLLAMA_KEEP_ALIVE=1m :: 设置 5 分钟(恢复默认) set OLLAMA_KEEP_ALIVE=5m :: 设置永久驻留(必须手动 stop) set OLLAMA_KEEP_ALIVE=-1 :: 查看当前环境变量值 echo %OLLAMA_KEEP_ALIVE%CPU 环境(无显卡)专用配置:
:: 最多同时加载1个模型 set OLLAMA_MAX_LOADED_MODELS=1 :: 使用4个CPU线程 set OLLAMA_NUM_THREADS=4 :: 强制禁用GPU set CUDA_VISIBLE_DEVICES=GPU 环境(有 N 卡)专用配置:
:: 自动使用GPU(默认就是这个) set CUDA_VISIBLE_DEVICES=0 :: 模型加载到显存,不占内存 set OLLAMA_GPU_LAYERS=99 :: 最多同时加载2个模型 set OLLAMA_MAX_LOADED_MODELS=2运行状态查看与资源释放:
# 查看当前常驻所有模型(不分终端来源) ollama ps # 一键释放指定模型 ollama stop qwen:0.5b6.3 配置优先级说明
代码内
keep_alive> 环境变量OLLAMA_KEEP_ALIVE> 系统默认值(5 分钟)
| 配置层级 | 生效范围 | 优先级 |
|---|---|---|
API 请求中的keep_alive | 单次请求 | 最高 |
OLLAMA_KEEP_ALIVE环境变量 | 全局 | 中 |
| Ollama 内置默认(闲置 5 分钟自动卸载) | 兜底 | 低 |
OLLAMA_MAX_LOADED_MODELS | 全局并行模型数量上限 | 与驻留时间配置相互配合 |
七、Opencode 接本地模型的方法说明
Opencode 是 AI 编程终端工具,通过自定义 Provider 对接 Ollama 的 OpenAI 兼容端点(http://localhost:11434/v1)。
前置条件:
# 1. 确认 Ollama 服务运行中(默认端口 11434) # 2. 拉取一个代码模型(如 qwen2.5-coder) ollama pull qwen2.5-coder:14b # 3. 验证 OpenAI 兼容端点可用 curl http://localhost:11434/v1/models # 期望返回 {"object":"list","data":[{"id":"qwen2.5-coder:14b",...}]}配置文件位置:
全局:
%USERPROFILE%\.config\opencode\opencode.json(本机即C:\Users\20334\.config\opencode\opencode.json);项目级:当前项目根目录下的
opencode.json(优先级更高);不确定时运行
opencode debug paths查看。
核心 Provider 配置(在 opencode.json 中写入):
{ "$schema": "https://opencode.ai/config.json", "model": "ollama/qwen2.5-coder:14b", "provider": { "ollama": { "npm": "@ai-sdk/openai-compatible", "name": "Ollama (local)", "options": { "baseURL": "http://localhost:11434/v1" }, "models": { "qwen2.5-coder:14b": { "name": "Qwen2.5 Coder 14B (local)" } } } } }关键字段说明:
| 字段 | 说明 |
|---|---|
ollama | Provider ID,需与model字段的ollama/前缀一致 |
npm | 适配器包,固定为@ai-sdk/openai-compatible |
options.baseURL | 本地端点,必须以/v1结尾(漏掉会 404) |
models | 模型 ID 映射,key 必须与ollama pull的模型名完全一致 |
验证生效:
保存配置后完全退出并重启Opencode;
在 Opencode 内执行
/models;看到
Ollama (local)分类下的本地模型即可选中对话。
常见排错:
/connect中没有本地选项属正常:本地 Ollama 不走 API key,必须在opencode.json中声明 provider;404/连不上:确认
baseURL以/v1结尾、Ollama 正在运行;工具调用不稳定:本地模型上下文过小,可用 Modelfile 将
num_ctx提高到 16k~32k 后重建模型。
八、精度说明
8.1 模型精度基础
量化原理是降低模型参数的数值精度:原生模型多为 FP16/FP32 高精度浮点存储,量化后转为 INT8/INT4 低精度存储,大幅缩小模型体积、提升推理速度。
| 精度 | 体积 | 速度 | 精度表现 | 适用场景 |
|---|---|---|---|---|
| FP32(全精度) | 最大 | 最慢 | 最高 | 服务器/显卡充足环境 |
| FP16(半精度) | 大 | 较慢 | 很高 | 原生模型常见格式 |
| INT8 量化 | 体积减半 | 提升 | 轻微损耗(日常无感知) | 通用均衡选择 |
| INT4 量化 | 体积压缩 75% | 大幅提升 | 小幅损耗 | 最适配普通 CPU 设备 |
8.2 量化类型对照(GGUF 格式)
| 量化类型 | 体积 | 速度 | 精度 | 用途 |
|---|---|---|---|---|
| Q2_K | 极小 | 最快 | 较差 | 极限压缩、仅演示 |
| Q3_K_M | 极小 | 最快 | 一般 | 超小模型、演示 |
| Q4_K_M | 小 | 快 | 很好 | 生产/教学首选 |
| Q4_0 | 小 | 快 | 较好 | 最古老 4bit 量化,通用 |
| Q5_K_M | 中 | 较快 | 优秀 | 对话质量要求高 |
| Q8_0 | 大 | 较慢 | 极高 | 近乎原生 |
量化等级/格式只是算法不同、精度不同、速度不同,同一模型可产出多个量化版本,按需选用。
8.3 多精度量化版本一键切换
Ollama 支持一键切换不同量化版本,根据电脑内存选择适配模型:
| 量化版本 | 模型体积 | 硬件要求 | 特点 |
|---|---|---|---|
qwen1.5:0.5b-chat(原生版) | 500MB 左右 | 4G 内存即可运行 | 体积极小、秒级响应,满足基础 AI 对话需求 |
qwen1.5:0.5b-chat-q4_0(4 位量化) | 300MB 左右 | 2G 及以上内存 | 极致压缩、超低资源占用,老旧低配电脑专属优化 |
qwen1.5:0.5b-chat-q8_0(8 位量化) | 400MB 左右 | 4G 及以上内存 | 精度最优、几乎无效果损耗,流畅度与效果均衡 |
低配设备卡顿优化:
# 切换为极致轻量化 4 位量化版本 ollama run qwen1.5:0.5b-chat-q4_0自定义轻量化参数调优(Modelfile):
新建无后缀文件modelfile,写入:
FROM qwen:0.5b # 限制最大上下文长度,降低内存占用 PARAMETER num_ctx 2048 # 匹配CPU核心数,优化推理速度 PARAMETER num_thread 4 # 调整生成随机性,数值越低回答越精准 PARAMETER temperature 0.7构建并运行:
# 根据 modelfile 创建自定义模型 ollama create light-qwen -f modelfile # 运行自定义模型 ollama run light-qwen参数解析:
num_ctx越小、num_thread越少,设备占用越低、运行越流畅;temperature越低回答越精准。
运行优化小技巧:
运行模型时关闭多余后台软件,释放内存;
低配设备优先选择 Q4_0 量化版本,优先保证流畅度;
长期不用模型,执行
ollama stop 模型名释放设备资源。
九、下载模型后量化操作说明完整操作步骤
更常用的是直接从huggingface上下载量化好的模型(如:qwen2.5-coder-14b-gguf),然后写Modelfile,然后导入
详情可见我的另外一篇文章:基于 Ollama 部署 qwen2.5-coder-14b(GGUF 直下版)-CSDN博客
注意:谨慎pip install -U huggingface_hub这是把该包升级到最新版本,但可能会造成与其它库包的版本冲突。可先查看是否已有该包(通过9.2 步骤 1:安装 Python 依赖 就已经直接下载huggingface_hub 版本1.x.x)
可以使用pip check检查某环境中是否存在库包的版本冲突
目标:将下载的模型转为GGUF → INT4 量化 → Modelfile 导入 Ollama 部署调用。说明:模型自行从网页上下载(HuggingFace 等);llama.cpp 为官方模型转 GGUF 与量化工具。本机路径:llama.cpp 源码位于
D:\develop\llama.cpp-master。
9.1 核心准备工作
模型文件夹:完整包含
config.json、model.safetensors/pytorch_model.bin、tokenizer等全部文件(自行从网页下载);系统要求:Windows 10/11,已安装 Python 3.10+;
Ollama:已安装并正常运行(本机目录
C:\Users\20334\AppData\Local\Programs\Ollama)。
9.2 步骤 1:安装 Python 依赖
打开 CMD 或 PowerShell(可在虚拟环境中执行):
pip install torch transformers sentencepiece protobuf gguf
gguf包是convert_hf_to_gguf.py脚本的必需依赖,缺失会报ModuleNotFoundError: No module named 'gguf'。
9.3 步骤 2:下载 llama.cpp 转换工具
llama.cpp 是官方模型转 GGUF 工具,分两步准备(先 Git 克隆源码,再下载编译好的 Windows 版本解压进去,两步配合使用
第 1 步:Git 克隆源码(源码自带convert_hf_to_gguf.py转换脚本,这是转 GGUF 必需的工具;本机已放置于D:\develop\llama.cpp-master):
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp :: 本机路径:D:\develop\llama.cpp-master第 2 步:下载编译好的 Windows 版本并解压到上述 Git 目录(Windows 直接用编译好的版本,不用自己编译;里面自带llama-quantize.exe量化工具):
打开下载地址:https://github.com/ggerganov/llama.cpp/releases
下载哪一个版本根据自己电脑的实际配置选择;
解压到第 1 步 Git 克隆的目录下(本机:
D:\develop\llama.cpp-master),让解压出的 exe 与源码文件在同一目录,便于后续统一执行命令。
这样配置后,
convert_hf_to_gguf.py(源码自带,用于转 GGUF)与llama-quantize.exe(zip 提供,用于量化)就齐了;解压到同一目录便于后续在当前目录直接执行命令。这样两步,缺一不可,原因在于两个工具所在位置不同:
git clone 源码:convert_hf_to_gguf.py(把 HuggingFace 模型转成 GGUF 格式的转换脚本)只存在于源码仓库里,Releases 的 zip 包里没有,所以必须先拉源码才能拿到转换脚本。
下载 llama-bin-win-x64.zip 解压进去:量化工具 llama-quantize.exe 是编译好的二进制,不在源码里(源码里只有需要自己编译的 .cpp 源文件),直接从 Releases 下载现成的 exe 解压到源码目录,就省去了自己编译的麻烦。
解压到同一个目录的原因也很直接:后续执行
python convert_hf_to_gguf.py ./qwen3-4b-finetune --outtype f16 --outfile qwen3-4b-finetune-f16.gguf .\llama-quantize.exe qwen3-4b-finetune-f16.gguf qwen3-4b-finetune-int4.gguf Q4_K_M时,两个命令在当前目录就能直接找到对应工具,不用写一堆绝对路径。
9.4 步骤 3:放置下载好的模型
在
D:\develop\llama.cpp-master\下新建子文件夹(如qwen3-4b-finetune);将下载的完整模型全部复制进去;
最终路径:
D:\develop\llama.cpp-master\qwen3-4b-finetune\
文件夹内必须有:config.json、tokenizer_config.json、模型权重文件(model.safetensors或pytorch_model.bin)。
9.5 步骤 4:将模型转为 FP16 GGUF 基础格式
在D:\develop\llama.cpp-master\目录下打开 CMD/PowerShell,执行:
# 命令格式 python convert_hf_to_gguf.py [被转换文件的相对路径] --outtype [输出精度] --outfile [转换后的文件名] # 示例 python convert_hf_to_gguf.py ./qwen3-4b-finetune --outtype f16 --outfile qwen3-4b-finetune-f16.gguf执行成功后生成:
D:\develop\llama.cpp-master\qwen3-4b-finetune-f16.gguf
--outtype 是输出精度参数,f16 是最常用的取值。
--outtype 支持的取值(convert_hf_to_gguf.py):
f16 半精度浮点,最常用中间格式(模型权重本身多为 FP16) f32 全精度,文件更大(约 32GB),一般不必要 bf16 bfloat16,部分模型支持 q8_0 8-bit 量化,可直接输出量化格式 tq1_0 / tq2_0 三值量化(实验性) auto 自动按模型原始权重精度选择 使用建议:
做量化链路时,中间产物用 f16(或 auto),保证后续 llama-quantize 从高精度量化质量最好
9.6 步骤 5:INT4 量化(CPU 最优,Ollama 推荐)
继续在当前目录执行量化命令:
# 命令格式:llama-quantize.exe 输入.f16.gguf 输出.gguf 【量化类型】 llama-quantize.exe qwen3-4b-finetune-f16.gguf qwen3-4b-finetune-q4_K_M.gguf Q4_K_M量化类型示例:
# q4_0:最古老的 4bit 量化 llama-quantize.exe qwen1.5-0.5b-finetune-f16.gguf qwen1.5-0.5b-ft.int4.gguf q4_0 # Q3_K_M:超小体积量化 llama-quantize.exe qwen1.5-0.5b-finetune-f16.gguf qwen1.5-0.5b-finetune-q3_K_M.gguf Q3_K_M # Q4_K_M:生产/教学首选(本机 8B 模型示例) llama-quantize.exe qwen3-8B-finetune-f16.gguf qwen3-8B-finetune-q4_K_M.gguf Q4_K_M✅ 最终得到可用的INT4 量化模型:
D:\develop\llama.cpp-master\qwen3-4b-finetune-q4_K_M.gguf
9.7 步骤 6:编写 Ollama Modelfile 配置文件
在
D:\develop\llama.cpp-master\目录下新建文本文档,重命名为Modelfile(无后缀名,必须去掉 .txt);打开 Modelfile,写入以下内容(
FROM指向量化后的 gguf 文件):
# 加载本地 INT4 量化模型(相对路径基于 Modelfile 所在目录) FROM ./qwen3-4b-finetune-q4_K_M.gguf # 运行参数 PARAMETER temperature 0.7 PARAMETER top_p 0.9 PARAMETER num_ctx 4096 # 对话模板(Qwen 系 ChatML 格式) TEMPLATE """{{if .System}}<|im_start|>system {{.System}}<|im_end|>{{end}}<|im_start|>user {{.Prompt}}<|im_end|> <|im_start|>assistant """ PARAMETER stop "<|im_end|>" # 自定义系统提示(可修改) SYSTEM "你是基于微调后的Qwen3-4B大模型,回答专业、简洁、准确。"ollama create 通过 -f 参数指定 Modelfile 路径,文件名不限,.txt 后缀也行(只是建议去掉后缀保持规范)。
两种用法:
默认名 Modelfile ollama create 模型名(自动找当前目录的 Modelfile,可省略 -f) 自定义名(如 Modelfile-ft-q4) ollama create 模型名 -f Modelfile-ft-q4
9.8 步骤 7:导入模型到 Ollama
# 命令格式:ollama create [导入到Ollama中的模型名] -f [Modelfile文件] ollama create finetune-int4 -f Modelfile导入多个量化版本示例:
ollama create finetune-int4 -f Modelfile-ft-q4 ollama create finetune-int3 -f Modelfile-q3km验证导入结果:
ollama list看到finetune-int4即部署完成!随后即可用常规方式调用:
ollama run finetune-int4注意:将模型导入到Ollama后,两个中间产物(转FP16 GGUF、量化的产物)可以删除,但建议保留量化后的产物,因为如果后续修改配置文件,然后重新导入该模型,会使用到量化后的产物
FROM ./qwen3-4b-finetune-q4_K_M.gguf。为什么可以删
ollama create 时会把 GGUF复制一份进 .ollama\models\blobs(内容寻址存储)。模型运行时读的是 blobs 里的副本,不依赖原路径文件
9.9 量化部署常见问题(Windows 专用)
| 问题 | 解决方案 |
|---|---|
| 报错"不是内部命令" | 确保在 llama.cpp 解压目录(本机D:\develop\llama.cpp-master)下执行命令 |
| 转换失败 | 模型路径必须纯英文、无空格、无中文 |
| 量化失败 | 使用官方发布的llama-quantize.exe,不要自己编译 |
| Ollama 导入失败 | 检查 Modelfile 无后缀名、FROM模型路径写对 |
9.10 完整流程总结
核心流程:模型下载 → 转 FP16 GGUF → INT4 量化 → Modelfile 配置 → Ollama 导入;
Windows 先 Git 克隆 llama.cpp 源码,再把编译好的
llama-bin-win-x64.zip解压进同一目录最省心;最终得到小体积、CPU 流畅运行的私有模型,支持离线调用。
附录:常见问题排查(讲义补充)
| 报错现象 | 解决方案 |
|---|---|
| ollama 不是内部/外部命令 | 安装后未重启终端,重启终端即可;Windows 需确认安装时添加了环境变量 |
| 模型下载失败/中断 | 网络波动导致,重新执行ollama run即可,Ollama 支持断点续传 |
| 设备卡顿、响应极慢 | 更换更低精度量化模型(Q2_K/Q4_0),调低num_ctx参数,关闭后台进程 |
| 内存不足加载失败 | 4G 及以下内存设备优先使用 Q4_0 量化轻量化版本 |
| 微调模型导入失败 | 检查路径是否含中文、确认模型已成功转为 GGUF 格式、Modelfile 配置无误 |
附录:课程核心命令汇总(讲义补充)
# 环境验证 ollama --version # 部署运行原生 Qwen 0.5B 对话模型 ollama run qwen:0.5b # 部署运行极致轻量化 4 位量化版本(低配设备专用) ollama run qwen1.5:0.5b-chat-q4_0 # 查看已安装模型 ollama list # 停止模型运行 ollama stop 模型名 # 删除模型释放空间 ollama rm 模型名 # 自定义轻量化模型构建 ollama create 自定义模型名 -f modelfile # 微调模型部署核心命令 # 模型量化(在 D:\develop\llama.cpp-master 目录下执行) llama-quantize.exe 输入.f16.gguf 输出.gguf 【量化类型】 # 导入微调模型 ollama create 微调模型名 -f Modelfile