Ollama 是一款专注于简化大型语言模型本地部署和运行的开源框架,基于 Go语言实现,支持跨平台运行,并以“开箱即用”为核心理念,适合个人开发者和轻量化场景。
本文将以部署 Qwen3-14B 模型服务为例,介绍离线环境中通过 Ollama 方式部署模型服务的步骤:
- 前往网盘的“deb”文件夹,下载Ollama Docker镜像(网盘中提供的Ollama Docker镜像版本为0.6.6)
- 下载完成后,加载Ollama Docker镜像
docker load -i ollama-image.tar
- 准备模型文件
将GGUF格式的模型文件(例如
Qwen3-14B-Q8_0.gguf
)放置在本地目录中,例如/path/to/your/models
- 创建Modelfile
在模型目录中创建一个名为
Modelfile
的文件,内容如下,此文件用于定义模型的加载方式和提示词模板。# Modelfile
# FROM 指向容器内的模型文件路径
FROM /models/Qwen3-14B-Q8_0.ggufPARAMETER num_ctx 32768
PARAMETER num_predict -1# Qwen3 模型使用的提示词模板
TEMPLATE """{{ if .Messages }}
{{- if or .System .Tools }}<|im_start|>system
{{ .System }}
{{- if .Tools }}# Tools
You are provided with function signatures within <tools></tools> XML tags:
<tools>{{- range .Tools }}
{"type": "function", "function": {{ .Function }}}{{- end }}
</tools>For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
<tool_call>
{"name": <function-name>, "arguments": <args-json-object>}
</tool_call>
{{- end }}<|im_end|>
{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 -}}
{{- if eq .Role "user" }}<|im_start|>user
{{ .Content }}<|im_end|>
{{ else if eq .Role "assistant" }}<|im_start|>assistant
{{ if .Content }}{{ .Content }}
{{- else if .ToolCalls }}<tool_call>
{{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
{{ end }}</tool_call>
{{- end }}{{ if not $last }}<|im_end|>
{{ end }}
{{- else if eq .Role "tool" }}<|im_start|>user
<tool_response>
{{ .Content }}
</tool_response><|im_end|>
{{ end }}
{{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
{{ end }}
{{- end }}
{{- else }}
{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ end }}{{ .Response }}{{ if .Response }}<|im_end|>{{ end }}"""您需要根据实际情况,修改
Modelfile
文件中加粗部分的内容,对应的配置项说明如下:- num_ctx:模型上下文长度,如不配置,则默认值为2048,使用AI助理的推荐配置为32768
- num_predict:生成文本时最大输出的令牌数,默认值-1,即不做限制
- 启动Ollama服务
使用以下命令启动Ollama容器。请将
/path/to/your/models
和/path/to/your/ollama_data
替换为您的实际路径:docker run -d --gpus all \
--name ollama-server \
-p 11434:11434 \
-v /path/to/your/models:/models \
-v /path/to/your/ollama_data:/root/.ollama \
ollama/ollama:0.6.6- --gpus all:允许容器访问所有GPU
- -v /path/to/your/models:/models:将本地模型目录挂载到容器的 /models 目录
- -v /path/to/your/ollama_data:/root/.ollama:持久化Ollama的元数据
- 在Ollama中创建模型
将 Modelfile 文件复制到容器中,并使用它创建模型:
# 复制 Modelfile
docker cp /path/to/your/models/Modelfile ollama-server:/Modelfile# 在容器内执行创建模型命令
docker exec ollama-server ollama create Qwen3-14B -f /Modelfile -
验证服务
执行以下命令,确认模型已成功创建:
curl http://localhost:11434/api/tags