Ollama导入和使用模型详解
·
覆盖 GGUF / Safetensors / PyTorch 三种格式的导入方法,以及模型的运行、管理、API 调用和进阶技巧。
一、加载 GGUF 格式模型
GGUF 是 Ollama 原生支持的量化格式,推荐优先使用。
1.1 手动导入本地 GGUF 文件
① 下载 GGUF 文件
可从 Hugging Face、魔搭社区(ModelScope)等平台下载。以 ModelScope 为例:
# 安装 CLI 工具
pip install modelscope
# 下载单个文件到指定目录
modelscope download --model Jackrong/Qwen3.5-9B-DeepSeek-V4-Flash-GGUF README.md --local_dir ./dir
更多下载方式见 ModelScope 文档中心
建议将 GGUF 文件统一存放在专用目录(如 D:\AI\Models)。
② 创建 Modelfile
在模型文件同级目录创建 Modelfile(无扩展名):
FROM ./your-model.gguf
# 完整示例
FROM ./qwen2.5-7b-instruct-q4_0.gguf
SYSTEM "你是一个专业的AI助手"
PARAMETER temperature 0.7
PARAMETER top_p 0.9
路径说明:
- 相对路径:
./model.gguf(与 Modelfile 同目录) - 绝对路径:
FROM D:\AI\Models\qwen2.5-7b.gguf(推荐)
③ 导入到 Ollama
# 在 Modelfile 所在目录执行
ollama create mymodel -f ./Modelfile
# 或指定完整路径
ollama create qwen2.5-7b -f D:\AI\Models\Modelfile
| 参数 | 说明 |
|---|---|
mymodel |
自定义模型名称 |
-f |
指定 Modelfile 路径 |
④ 验证与运行
ollama list # 查看已导入模型
ollama run mymodel # 运行模型
1.2 直接加载在线 GGUF 模型
Ollama ≥ v0.3.12 支持直接从在线平台加载。
从 Hugging Face 加载
ollama run hf.co/{username}/{repository}
# 示例
ollama run hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF
ollama run hf.co/mlabonne/Meta-Llama-3.1-8B-Instruct-GGUF
从魔搭社区(ModelScope)加载
ollama run modelscope.cn/{username}/{model}
# 示例
ollama run modelscope.cn/Qwen/Qwen2.5-3B-Instruct-GGUF
ollama run modelscope.cn/second-state/gemma-2-2b-it-GGUF
指定量化版本
# 使用量化标签
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:IQ3_M
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Q8_0
# 或使用完整文件名
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Llama-3.2-3B-Instruct-IQ3_M.gguf
1.3 完整工作流程示例
场景:导入本地 Qwen2.5-7B GGUF 模型
# 1. 下载模型到 D:\AI\Models\qwen2.5-7b-instruct-q4_0.gguf
# 2. 创建 Modelfile
# FROM D:\AI\Models\qwen2.5-7b-instruct-q4_0.gguf
# SYSTEM "你是一个专业的AI助手"
# PARAMETER temperature 0.7
# 3. 导入
ollama create qwen2.5-7b -f D:\AI\Models\Modelfile
# 4. 运行测试
ollama run qwen2.5-7b
1.4 高级 Modelfile 配置
自定义模型参数
FROM ./llama3.2-3b-instruct.gguf
SYSTEM "你是一个幽默的助手,用轻松的方式回答问题"
TEMPLATE "{{ .Prompt }}"
PARAMETER temperature 0.8
PARAMETER top_p 0.95
PARAMETER num_ctx 4096
PARAMETER top_k 40
常用管理命令
ollama show mymodel --modelfile # 查看已导入模型的 Modelfile 内容
ollama cp mymodel mymodel-copy # 复制模型(创建别名)
ollama rm mymodel # 删除模型
1.5 GGUF 导入常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
Error loading model |
路径错误或权限不足 | 检查 GGUF 路径;Windows 以管理员运行终端 |
Model not found |
Modelfile 中 FROM 路径不正确 | 尝试使用绝对路径 |
| 内存不足 | 量化级别过高 | 选更低量化(Q4_K_M 比 Q8_0 小很多) |
二、其他格式模型导入
2.1 格式支持概览
| 格式 | 是否原生支持 | 导入方式 | 备注 |
|---|---|---|---|
| GGUF | ✅ | 直接导入 | 推荐格式,支持量化 |
| Safetensors | ⚠️ | 直接导入或转换 | 需完整配置文件 |
| PyTorch (.bin) | ❌ | 需转换 | 通过 llama.cpp 转 GGUF |
| ONNX | ❌ | 需转换 | 需转 GGUF |
| LoRA 适配器 | ✅ | 结合基础模型导入 | 用于微调模型 |
2.2 Safetensors 格式导入
直接导入完整模型
要求模型目录包含完整配置文件:
D:\Models\qwen2.5-7b\
├── model.safetensors
├── config.json
├── tokenizer.json
└── tokenizer_config.json
Modelfile 配置:
FROM D:\Models\qwen2.5-7b
导入 LoRA 适配器
FROM qwen2.5:7b # 基础模型
ADAPTER ./lora-weights # 适配器目录
# 或绝对路径
FROM qwen2.5:7b
ADAPTER D:\Models\lora-weights
2.3 PyTorch (.bin) 格式转换导入
步骤 1:准备环境
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
pip install torch transformers safetensors
确保模型目录包含:pytorch_model.bin、config.json、tokenizer.json
步骤 2:转换为 GGUF
# 转 FP16
python convert_hf_to_gguf.py /path/to/model --outtype f16 --outfile model.f16.gguf
# 转量化格式(推荐)
python convert_hf_to_gguf.py /path/to/model --outtype q4_0 --outfile model.q4_0.gguf
支持的量化类型:q4_0, q4_1, q5_0, q5_1, q8_0, q2_K, q3_K_S, q3_K_M, q4_K_S, q4_K_M
步骤 3:导入 Ollama
# Modelfile
FROM ./model.q4_0.gguf
SYSTEM "你的系统提示词"
ollama create mymodel -f ./Modelfile
2.4 从 HuggingFace / ModelScope 下载转换
优先下载 GGUF 版本:
ollama run hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF
ollama run modelscope.cn/Qwen/Qwen2.5-3B-Instruct-GGUF
无可用的 GGUF 时,下载原始格式后转换:
# 1. 下载原始模型
git lfs install
git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct
# 2. 转换为 GGUF
cd llama.cpp
python convert_hf_to_gguf.py ../Qwen2.5-7B-Instruct \
--outtype q4_K_M \
--outfile qwen2.5-7b-q4_K_M.gguf
# 3. 导入
ollama create qwen2.5-7b -f ./Modelfile
2.5 自动化转换脚本
Windows PowerShell 一键转换脚本:
# convert_model.ps1
param(
[string]$ModelPath,
[string]$OutputName,
[string]$QuantType = "q4_K_M"
)
if (-not (Test-Path "$ModelPath\pytorch_model.bin") -and
-not (Test-Path "$ModelPath\model.safetensors")) {
Write-Host "错误:未找到模型文件" -ForegroundColor Red
exit 1
}
Write-Host "正在转换模型..." -ForegroundColor Yellow
python llama.cpp/convert_hf_to_gguf.py $ModelPath `
--outtype $QuantType `
--outfile "$OutputName.$QuantType.gguf"
$ModelfileContent = @"
FROM ./$OutputName.$QuantType.gguf
SYSTEM "你是一个AI助手"
PARAMETER temperature 0.7
"@
$ModelfileContent | Out-File -FilePath "Modelfile" -Encoding UTF8
Write-Host "正在导入到 Ollama..." -ForegroundColor Green
ollama create $OutputName -f ./Modelfile
Write-Host "转换完成!运行:ollama run $OutputName" -ForegroundColor Cyan
2.6 其他格式导入注意事项
| 问题 | 原因 | 解决 |
|---|---|---|
unsupported format |
格式不支持 | 转换为 GGUF |
missing config.json |
配置文件不全 | 确保有 config.json、tokenizer.json |
out of memory |
内存不足 | 使用更低量化版本 |
三、使用已导入的模型
3.1 交互式对话
# 进入交互模式
ollama run mymodel
# 单次提问
ollama run mymodel "介绍一下你自己"
# 多行输入(输入 /bye 或按 Ctrl+C 退出)
ollama run mymodel
>>> 你好,请用 Python 写一个斐波那契数列函数
>>> 再写一个 JavaScript 版本
>>> /bye
3.2 后台启动模型
使用 ollama start 将模型加载到内存/GPU,但不进入对话,方便 API 调用:
# 启动模型到后台
ollama start qwen3-vl:4b
# 查看运行状态
ollama ps
# 输出示例:
# NAME ID SIZE PROCESSOR CONTEXT UNTIL
# qwen3-vl:4b 1343d82ebee3 9.3 GB 36%/64% CPU/GPU 32768 5 minutes from now
- 模型默认保持 5 分钟,通过
--keep_alive参数调整 - 可通过
http://localhost:11434API 立即调用
3.3 临时修改运行参数
ollama run mymodel --temperature 0.8 --top-p 0.9 "请发挥创造力"
四、API 调用
Ollama 默认在 http://127.0.0.1:11434 提供 HTTP API。
4.1 REST API
# 生成接口
curl http://127.0.0.1:11434/api/generate -d '{
"model": "mymodel",
"prompt": "你好,请介绍一下AI的发展历史",
"stream": false
}'
# 聊天接口
curl http://127.0.0.1:11434/api/chat -d '{
"model": "mymodel",
"messages": [
{"role": "user", "content": "Python中如何读取文件?"}
]
}'
4.2 Python 调用
import requests
import json
# 非流式
response = requests.post('http://127.0.0.1:11434/api/generate',
json={
'model': 'mymodel',
'prompt': '解释一下量子计算',
'stream': False
}
)
print(response.json()['response'])
# 流式输出
response = requests.post('http://127.0.0.1:11434/api/generate',
json={
'model': 'mymodel',
'prompt': '写一首关于春天的诗',
'stream': True
},
stream=True
)
for line in response.iter_lines():
if line:
data = json.loads(line.decode('utf-8'))
print(data.get('response', ''), end='')
4.3 OpenAI 兼容接口
可直接在支持 OpenAI API 的工具中使用:
from openai import OpenAI
client = OpenAI(
base_url='http://127.0.0.1:11434/v1',
api_key='ollama' # 可任意填写
)
response = client.chat.completions.create(
model="mymodel",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)
4.4 与其他工具集成
- Chatbox / Open WebUI:设置模型为自定义名称(如
mymodel) - Continue / VS Code 插件:配置 Ollama provider 并选择模型
- LangChain:使用
Ollama或ChatOllama类
五、模型管理
5.1 查看模型
ollama list # 列出所有模型
ollama show mymodel # 查看详情
ollama show mymodel --modelfile # 查看 Modelfile 内容
5.2 运行状态管理
ollama ps # 查看正在运行的模型
# 输出示例:
# NAME ID SIZE MODIFIED STATUS
# mymodel:latest 11d8c2483df9 2.5 GB 2 minutes ago running (GPU)
ollama stop mymodel # 停止指定模型(释放 GPU 内存)
# 停止所有运行中的模型
ollama stop $(ollama ps --format json | ConvertFrom-Json).name
5.3 复制与删除
ollama cp mymodel mymodel-backup # 复制(创建别名)
ollama cp mymodel qwen-chinese # 按用途命名
ollama rm mymodel # 删除模型
5.4 ollama stop vs ollama rm
| 命令 | 作用 | 影响 | 恢复方式 |
|---|---|---|---|
ollama stop |
停止运行中的模型 | 释放 GPU/内存 | 下次运行自动重新加载 |
ollama rm |
删除模型文件 | 释放磁盘空间 | 需重新 ollama pull |
5.5 版本标签
ollama create mymodel:v1 -f ./Modelfile
ollama create mymodel:latest -f ./Modelfile
ollama create mymodel:chat -f ./chat.Modelfile
# 使用特定版本
ollama run mymodel:v1
ollama run mymodel:chat
六、批量处理与自动化
6.1 批量问答
# batch_ask.ps1
$questions = @(
"什么是机器学习?",
"Python的优缺点是什么?",
"如何学习编程?"
)
foreach ($q in $questions) {
Write-Host "问题: $q" -ForegroundColor Green
ollama run mymodel $q
Write-Host "-" * 50
}
6.2 性能测试
# 单次响应速度
Measure-Command { ollama run mymodel "你好" }
# 批量测试
$prompts = 1..10 | ForEach-Object { "这是第 $_ 个测试问题" }
foreach ($p in $prompts) {
$time = (Measure-Command { ollama run mymodel $p }).TotalMilliseconds
Write-Host "耗时: ${time}ms"
}
6.3 多模型对比
$prompt = "用Python实现快速排序"
Write-Host "模型1回答:" -ForegroundColor Yellow
ollama run mymodel $prompt
Write-Host "`n模型2回答:" -ForegroundColor Cyan
ollama run llama3.2-3b $prompt
6.4 按场景路由
# 导入专用模型
ollama create code-assistant -f D:\Models\codellama\Modelfile
ollama create chinese-chat -f D:\Models\qwen2.5\Modelfile
# 按场景调用
function Ask-CodeQuestion { param([string]$q) ollama run code-assistant $q }
function Ask-GeneralQuestion { param([string]$q) ollama run chinese-chat $q }
Ask-CodeQuestion "Python中如何实现单例模式?"
Ask-GeneralQuestion "推荐几本好书"
七、命名最佳实践
描述性命名
qwen2.5-7b-chatllama3.2-3b-codedeepseek-r1-7b-math
版本控制
mymodel-v1.0mymodel-v2.0-betamymodel:latest(默认标签)
功能区分
assistant-zh(中文助手)assistant-en(英文助手)coder-python(Python 专家)
八、故障排除与量化建议
8.1 路径与格式注意事项
- Windows 路径:使用正斜杠
D:/AI/Models/model.gguf或双反斜杠D:\\AI\\Models\\model.gguf,避免中文路径和特殊字符 - 文件完整性:确保 GGUF 完整下载,
ollama create进度条可辅助验证 - 版本要求:在线加载需 Ollama ≥ v0.3.12,通过
ollama --version检查 - 存储位置:导入的模型存储在 Ollama 默认目录,
ollama list可查看模型大小
8.2 量化选择建议
| 硬件条件 | 推荐量化 | 说明 |
|---|---|---|
| 低配设备 | q4_0, q4_K_S |
最小内存占用 |
| 平衡性能 | q4_K_M, q5_K_M |
推荐选择 |
| 高精度需求 | q8_0, f16 |
最大精度 |
8.3 最佳实践总结
- 优先下载 GGUF — 直接从 HuggingFace / ModelScope 获取 GGUF 版本,省去转换步骤
- 目录结构规范 — 每个模型建独立目录,Modelfile 与模型文件同目录
- 网络好时用在线加载 —
ollama run hf.co/...一键搞定 - 网络受限或特定版本 — 下载 GGUF 后手动导入
- 企业部署 — 用 Modelfile 统一配置,便于版本管理
- 导入后立即测试 — 验证模型功能正常再投入使用
更多推荐




所有评论(0)