一、服务级配置(环境变量)

这类配置通过修改系统环境变量生效,主要解决硬件资源调度、存储路径和网络代理问题。

1. Linux/macOS (Systemd 服务)

如果你使用 systemctl管理 Ollama 服务,需要编辑服务文件来添加环境变量。

  • ‌编辑服务配置‌:
    
    sudo systemctl edit ollama.service

  • ‌添加/修改环境变量‌:
    在 [Service] 部分添加以下内容(以解决你之前的多卡 GPU 调度和显存问题为例):

    [Service]

    Environment="OLLAMA_GPU_LAYERS=999" # 强制尽可能多的层加载到 GPU Environment="OLLAMA_MAX_VRAM=24GB" #限制单卡最大显存使用,防止溢出 Environment="CUDA_VISIBLE_DEVICES=0,1,2,3" # 指定使用的 GPU 编号 Environment="OLLAMA_NUM_PARALLEL=2" # 控制并发请求数,避免资源争抢
    Environment="OLLAMA_CONTEXT_LENGTH=8192"   #上下文长度 -c参数

    Environment="OLLAMA_NUM_CTX=8192"  #将上下文窗口限制为 8192 (根据需求可调整为 16384 或 32768)
    Environment="OLLAMA_NUM_PARALLEL=10" #限制并行请求数,避免多实例争抢
    Environment="OLLAMA_KEEP_ALIVE=5m" #设置模型空闲后卸载时间,节省显存

  • ‌重载并重启服务‌:
    
    sudo systemctl daemon-reload sudo systemctl restart ollama

2. Windows
  • ‌方法‌:右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
  • ‌操作‌:在“系统变量”或“用户变量”中新建或编辑变量:
    • 变量名:OLLAMA_GPU_LAYERS,变量值:999
    • 变量名:CUDA_VISIBLE_DEVICES,变量值:0,1,2,3
  • ‌生效‌:修改后需完全退出 Ollama 托盘程序并重新启动,或重启电脑。
3. 修改模型默认存储路径

如果默认 C盘或 home 目录空间不足,可通过环境变量 OLLAMA_MODELS 修改。

  • ‌Linux‌: 在 ~/.bashrc 或 systemd service 文件中添加 Environment="OLLAMA_MODELS=/path/to/new/dir"。
  • ‌Windows‌: 新建系统环境变量 OLLAMA_MODELS,值为新的文件夹路径(如 D:\OllamaModels)。

二、模型级配置(Modelfile)

这类配置绑定在特定模型上,适合固化推理参数(如上下文长度、温度、GPU 层数)。这是解决你“发票识别慢”和“CPU 占用高”的关键步骤。

1. 创建 Modelfile

新建一个名为 Modelfile 的文件(无后缀),内容如下:


dockerfile

# 基于原始模型 FROM qwen3.5:9b

# 【关键】强制将所有层加载到 GPU,解决 CPU 满载问题 PARAMETER num_gpu 999

# 【关键】针对发票识别等短任务,减小上下文窗口以节省显存和加速 PARAMETER num_ctx 4096

# 其他推理参数优化 PARAMETER temperature 0.1

# 降低随机性,提高 OCR/提取任务的准确性 PARAMETER top_p 0.9 PARAMETER repeat_penalty 1.1

2. 构建自定义模型

在终端执行:




ollama create qwen3.5:9b-optimized -f Modelfile
3. 使用新模型

以后运行或调用时,使用新名称 qwen3.5:9b-optimized,它将自动应用上述所有优化配置。


三、运行时配置(API 调用参数)

在代码调用或 ollama run 时临时指定,优先级最高,仅对当前请求生效。

1. CLI 命令行方式

bash

ollama run qwen3.5:9b-optimized --num_ctx 2048 --temperature 0.1

2. API 调用方式 (Python/cURL)

在发送请求时,在 options 字段中指定参数:


python

import requests response = requests.post("http://localhost:11434/api/generate", json={ "model": "qwen3.5:9b-optimized", "prompt": "识别这张发票的金额", "images": ["base64_encoded_image_string"], "stream": False, "options": { "num_ctx": 2048, # 临时覆盖上下文长度 "temperature": 0.1, # 临时覆盖温度 "num_predict": 512 # 限制最大输出 token,加快结束速度 } }) print(response.json()["response"])

总结建议

  1. ‌解决 CPU/GPU 分配不均‌:优先使用‌服务级环境变量‌ OLLAMA_GPU_LAYERS=999 或 ‌模型级 Modelfile‌ 中的 PARAMETER num_gpu 999。
  2. ‌解决发票识别慢‌:在‌模型级配置‌中减小 num_ctx(如设为 4096),并在‌运行时配置‌中限制 num_predict,同时考虑更换为专用的多模态模型(如 Qwen3-VL-8B)。
  3. ‌持久化配置‌:常用的固定参数(如 GPU 层数、基础温度)写入 Modelfile;随任务变化的参数(如上下文长度)在 API 调用时动态传入。ollama.service 物理路径在哪
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐