ollama在跑这个模型的时候,cpu直接干到了120%,4块显卡,GPU分别使用17%,如何配置,消耗10分钟,如何优化
一、服务级配置(环境变量)
这类配置通过修改系统环境变量生效,主要解决硬件资源调度、存储路径和网络代理问题。
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"])
总结建议
- 解决 CPU/GPU 分配不均:优先使用服务级环境变量
OLLAMA_GPU_LAYERS=999或 模型级 Modelfile 中的PARAMETER num_gpu 999。 - 解决发票识别慢:在模型级配置中减小
num_ctx(如设为 4096),并在运行时配置中限制num_predict,同时考虑更换为专用的多模态模型(如 Qwen3-VL-8B)。 - 持久化配置:常用的固定参数(如 GPU 层数、基础温度)写入 Modelfile;随任务变化的参数(如上下文长度)在 API 调用时动态传入。ollama.service 物理路径在哪
更多推荐
所有评论(0)