覆盖 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.binconfig.jsontokenizer.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:11434 API 立即调用

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:使用 OllamaChatOllama

五、模型管理

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-chat
  • llama3.2-3b-code
  • deepseek-r1-7b-math

版本控制

  • mymodel-v1.0
  • mymodel-v2.0-beta
  • mymodel: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 最佳实践总结

  1. 优先下载 GGUF — 直接从 HuggingFace / ModelScope 获取 GGUF 版本,省去转换步骤
  2. 目录结构规范 — 每个模型建独立目录,Modelfile 与模型文件同目录
  3. 网络好时用在线加载ollama run hf.co/... 一键搞定
  4. 网络受限或特定版本 — 下载 GGUF 后手动导入
  5. 企业部署 — 用 Modelfile 统一配置,便于版本管理
  6. 导入后立即测试 — 验证模型功能正常再投入使用

更多推荐