Ollama 本地语言模型管理:KDnuggets 速查表
内容提要
Ollama 简化了本地语言模型运行,但需确保模型与上下文能装入内存。`ollama ps` 可查看模型占用及 GPU/CPU 分配,低于 100% GPU 表示部分已转 CPU,生成变慢。macOS 桌面应用需通过 `launchctl setenv` 设置环境变量,否则配置无效。传入 JSON schema 可约束结构化输出,而 "json" 仅保证合法 JSON。速查表还涵盖磁盘管理、API 端点、Modelfile 及环境变量。
延伸解读
内存与上下文:本地模型运行的关键
文章强调,运行本地语言模型时,模型权重和上下文必须能装入可用内存。如果内存不足,部分模型会从 GPU 转移到 CPU,导致生成速度大幅下降。使用 `ollama ps` 可以查看当前驻留的模型及其处理器分配情况,当 GPU 使用率低于 100% 时,说明已有部分计算回退到 CPU。此外,该命令还会显示实际分配的上下文长度,这可能与你请求或预期的数值不同,需要特别留意。
macOS 环境变量配置的陷阱
在 macOS 上,Ollama 桌面应用由系统启动,而非通过终端 shell,因此不会读取 `.zshrc` 中的 `export` 设置。这意味着在终端中看似正确的配置实际上不会生效。必须通过 `launchctl setenv` 命令设置环境变量,才能让桌面应用识别。这是导致上下文长度或模型目录等配置无法更改的最常见原因,新手尤其容易忽略这一点。
结构化输出:JSON schema 与 "json" 的区别
Ollama 支持结构化输出,但有两种方式需要区分。传入 JSON schema 作为 `format` 参数会约束解码过程,使模型输出严格符合指定结构,从而保证每次都能正确解析。而仅传入字符串 `"json"` 则较为宽松,只保证输出是合法 JSON,但不保证包含哪些键。因此,如果需要特定字段,应使用 schema 而非简单的 `"json"`。
速查表涵盖的其他实用功能
除了上述要点,速查表还整理了磁盘管理命令、API 端点(如 `/api/chat` 和 `/api/embed`)以及 `/v1/` 兼容层,后者允许现有的 OpenAI 客户端无需修改即可切换到本地服务。此外,Modelfile 可用于保存带有自定义默认值的基础模型,环境变量则控制模型保持加载的时长以及同时运行的数量。这些内容为本地模型的管理和实验提供了全面参考。
Q&A
Ollama 的 ollama ps 命令有什么作用?
ollama ps 用于查看当前加载的模型及其内存占用情况,包括模型是否完全在 GPU 上运行。如果 PROCESSOR 列显示低于 100% GPU,说明部分模型已转移到 CPU,生成速度会变慢。它还会显示分配的上下文大小。
在 macOS 上如何正确设置 Ollama 的环境变量?
在 macOS 上,Ollama 桌面应用由系统启动,不会读取 shell 的 .zshrc 文件,因此通过 export 设置的环境变量无效。必须使用 launchctl setenv 命令通过 launchd 设置环境变量,否则配置不会生效。
Ollama 中如何确保模型输出符合特定的 JSON 结构?
在 Ollama 中,可以通过传入 JSON schema 作为 format 参数来约束解码过程,使模型输出严格符合该结构,从而保证每次都能正确解析。而仅使用字符串 "json" 只能保证输出是合法的 JSON,但不保证包含哪些键。
Ollama 提供了哪些 API 端点?
Ollama 提供了 /api/chat 和 /api/embed 等端点,同时还提供了 /v1/ 兼容层,允许现有的 OpenAI 客户端无需修改即可切换到本地主机使用。
Ollama 的 Modelfile 有什么用途?
Modelfile 用于保存基础模型并附带自定义的默认设置,方便用户基于同一基础模型快速创建带有特定配置的模型实例。
Ollama 中哪些环境变量可以控制模型加载行为?
Ollama 提供了环境变量来控制模型保持加载的时间以及同时运行的模型数量,具体变量名称未在文中列出,但速查表涵盖了这些内容。