当前位置: 首页 > news >正文

Ollama 实战手册

1 复读幻觉成因与治理路线

层级关键点常见症状
解码层采样温度太低、repeat_penalty 为 1“打人、打人、打人” 连环输出
数据层训练集本身出现多次同句暴力 / 色情词条反复
RL 策略层奖励模型只关心“相关”忽略“冗余”越回答越长、越跑越偏
上下文层KV‑cache 误对齐或窗口截断末尾整段复制粘贴

治理路线:

采样参数止血 ─► 数据去重 ─► RLHF/DPO 反复读奖励 ─►
长上下文微调(位置 & Flash‑Attention) ─► 监控报警

2 采样参数全景图 & 代码示例

目标参数默认建议区间
抑制复读repeat_penalty1.01.1 – 1.5
repeat_last_n6464 – 256
控制创造性temperature0.80.4 – 0.9
多样性top_p0.90.7 – 0.95
top_k4030 – 100
软停符stop"\n\n", "</end>"
长度惩罚length_penalty1.00.8 – 1.2
# transformers 示例
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct")
model = AutoModelForCausalLM.from_pretrained("meta-llama/…", device_map="auto")out = model.generate(**tok("解释量子纠缠:", return_tensors="pt").to(model.device),temperature=0.7,top_p=0.9,repetition_penalty=1.2,repeat_last_n=128,no_repeat_ngram_size=3,max_new_tokens=256,
)
print(tok.decode(out[0], skip_special_tokens=True))

3 Ollama 调参 4 大入口

场景操作适用版本
交互会话/set parameter repeat_penalty 1.2≥ v0.4.6
CLIollama run llama3 --temperature 0.7 …≥ v0.5.0 citeturn0search1
REST API"options": { "temperature": 0.7, "repeat_penalty": 1.2 }全版本
ModelfilePARAMETER repeat_penalty 1.2 + ollama create永久固化

技巧:在 systemctl edit ollama 里写 Environment="OLLAMA_…",一次性给所有模型注入默认值,升级也不会丢。

4 性能提速全链路

4.1 硬件层

  • GPU > CPUollama psProcessor=GPU 说明整模进显存;否则是 CPU/GPU 混合。
  • 多 GPU 切片:单卡放不下时自动分层;显存够时集中单卡反而更快。

4.2 模型层

手段提速质量
‑q4_0 / ‑q5_1 量化× 1.8 – 2.2‑2 ∼ ‑3 BLEU
KV Cache q8_0显存 ‑50 %无感
LoRA 增量参数量 ‑90 %取决于 LoRA

4.3 运行时层

# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_KEEP_ALIVE=-1"
  • Flash Attention≈ +20 – 40 %
  • num_thread 控制单请求 CPU 线程:最佳≈物理核数

4.4 并发层

变量说明典型值
OLLAMA_NUM_PARALLEL同模型并行请求4 – 8
num_thread每流 CPU 线程核心数
OLLAMA_KEEP_ALIVE‑1 = 模型常驻显存生产建议开启

5 线上运维

5.1 Ubuntu (systemd)

sudo systemctl daemon-reload   # 变更后重读
sudo systemctl restart ollama  # 热重启
journalctl -u ollama -f        # 流日志

5.2 Docker NVIDIA GPU

docker run --gpus all -e OLLAMA_FLASH_ATTENTION=1 \-e OLLAMA_NUM_PARALLEL=4 -e OLLAMA_KEEP_ALIVE=-1 \-p 11434:11434 ollama/ollama

5.3 Windows 服务化

  • 安装 nssm / winsw 把 ollama serve 注册为服务
  • 环境变量写在服务的 Environment 字段,可与 Modelfile 叠加

6 端到端示例 & Benchmark

步骤工具关键代码
① 语料清洗Python + regex过滤连续重复 > 2 次 token;Moses 去重
② LoRA 微调PEFT / LoRAmerge_weights=False 节省显存
③ 反复读 DPOtrl‑xreward = ‑λ · 重复率
④ Ollama 部署Modelfile量化 + 参数固化
⑤ 负载测试wrk + WebSocket每秒 > 1000 token

效果(Llama‑3‑8B‑Instruct,4090 × 1,128 token prompt):

  1. 原始 FP16 → 13 tok/s
  2. ‑q5_1 + Flash Attention → 26 tok/s
  3. 再调 num_thread 24 + OLLAMA_NUM_PARALLEL 439 tok/s

7 常见坑 FAQ

问题排查 & 解决
只用半数 CPU默认一核一线程,改 num_thread 或 Modelfile
OLLAMA_NUM_PARALLEL 不生效需在 服务器启动前 设置;Python 里 os.environ 改完要重新 serve
GPU 占用低于 40 %并发流不够 / CPU 瓶颈;调高 num_threadNUM_PARALLEL
Flash Attention 报 LoRA 不兼容关闭 FA 或先 merge LoRA 权重再量化
模型升级后参数丢失systemctl edit 生成 override.conf;升级不覆写
交互 /set 参数退出后失效/set 只对当前进程;持久化请改 Modelfile

8 结语

  • 复读治理:采样止血 → 数据去重 → RLHF 负奖励
  • 性能提速:GPU + Flash Attention + 低比特量化 = 黄金三件套
  • 并发稳态num_thread × OLLAMA_NUM_PARALLEL ≈ 吞吐上限
  • 运维:全部配置写进 systemd override;daemon‑reload + restart 万事大吉

按本文 Checklist 逐层落地,你的 Ollama 实例将 不复复读、跑得飞快、线上稳如老狗。Have fun hacking!

http://www.xdnf.cn/news/75583.html

相关文章:

  • 软考软件设计师考试情况与大纲概述
  • 【C语言】初阶算法相关习题(一)
  • Docker 部署 PostgreSQL 数据库
  • 记录学习的第三十天
  • 20.4 显示数据库数据
  • Centos 、Linux 基础运维命令
  • 【程序员 NLP 入门】词嵌入 - 如何基于计数的方法表示文本? (★小白必会版★)
  • MacOS 10.15上能跑大语言模型吗?
  • 用Java实现简易区块链:从零开始的探索
  • Mongodb分布式文件存储数据库
  • 相对论大师-记录型正负性质BFS/图论-链表/数据结构
  • sqoop的参数及初体验
  • 【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解
  • chromedp 反反爬设计方案
  • 美乐迪电玩大厅加载机制与 RoomList 配置结构分析
  • JavaScript之深浅拷贝
  • 安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
  • 【安装部署】Linux下最简单的 pytorch3d 安装
  • 安宝特案例 | AR如何大幅提升IC封装厂检测效率?
  • C#进阶学习(十)更加安全的委托——事件以及匿名函数与Lambda表达式和闭包的介绍
  • 【架构】ANSI/IEEE 1471-2000标准深度解析:软件密集型系统架构描述推荐实践
  • 【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出)
  • 4.21—4.22学习总结 JavaWeb:HTML-CSS
  • Laravel 对接阿里云 OSS 说明文档
  • ecovadis评级范围,如何拿到ecovadis评级高分
  • K8S探针的应用
  • 【教程】安装 iterm2 打造漂亮且高性能的 mac 终端
  • k8s-1.28.10 安装metrics-server
  • 模拟实现strncat、qsort、atoi
  • AR/VR衍射光波导性能提升遇阻?OAS光学软件有方法