Ollama方式部署

Ollama 是一款专注于简化大型语言模型本地部署和运行的开源框架,基于 Go语言实现,支持跨平台运行,并以“开箱即用”为核心理念,适合个人开发者和轻量化场景。

本文将以部署 Qwen3-14B 模型服务为例,介绍离线环境中通过 Ollama 方式部署模型服务的步骤:

  1. 前往网盘的“deb”文件夹,下载Ollama Docker镜像(网盘中提供的Ollama Docker镜像版本为0.6.6)
  2. 下载完成后,加载Ollama Docker镜像

    docker load -i ollama-image.tar

  3. 准备模型文件

    将GGUF格式的模型文件(例如 Qwen3-14B-Q8_0.gguf放置在本地目录中,例如 /path/to/your/models

  4. 创建Modelfile

    在模型目录中创建一个名为 Modelfile 的文件,内容如下,此文件用于定义模型的加载方式和提示词模板。

    # Modelfile
    # FROM 指向容器内的模型文件路径
    FROM /models/Qwen3-14B-Q8_0.gguf

    PARAMETER 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,即不做限制
  5. 启动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的元数据
  6. 在Ollama中创建模型

    将 Modelfile 文件复制到容器中,并使用它创建模型:

    # 复制 Modelfile
    docker cp /path/to/your/models/Modelfile ollama-server:/Modelfile

    # 在容器内执行创建模型命令
    docker exec ollama-server ollama create Qwen3-14B -f /Modelfile

  7. 验证服务

    执行以下命令,确认模型已成功创建

    curl http://localhost:11434/api/tags