用途
Ollama 用于在本地运行大语言模型,面向需要模型管理、本地 API 调用和程序集成的场景。资料中描述的工作方式包括命令行交互、一次性生成以及通过 HTTP 接口调用。
安装与启动
- macOS:
brew install ollama - Linux:
curl -fsSL https://ollama.com/install.sh | sh - Windows:从 https://ollama.com/download/windows 下载
启动服务:ollama serve。服务默认监听 http://localhost:11434,可通过设置 OLLAMA_HOST 更改绑定地址。
模型拉取与运行
ollama pull llama3:仅下载,不运行ollama run llama3:运行,缺失时自动拉取ollama list:列出已下载模型
交互式聊天会打开 REPL,输入 /bye 退出。一次性生成可通过管道输入:
echo "Explain quicksort in two sentences" | ollama run llama3
cat main.py | ollama run codellama "Review this code for bugs"
REST API
生成(completion)接口 /api/generate、多轮对话接口 /api/chat、嵌入接口 /api/embed 均通过 curl 举例说明。默认 stream 为 true,返回按行分隔的 JSON 数据块;设为 false 可一次性获得完整响应。
模型管理
ollama show llama3:查看模型详情(参数、模板、许可证)ollama cp llama3 my-llama3:复制/创建别名ollama rm my-llama3:删除模型ollama ps:列出当前已加载/运行的模型,显示显存占用、量化级别和卸载时间
Modelfile 与自定义模型
Modelfile 以 FROM 指定基础模型,可配置 SYSTEM 系统提示词和多个 PARAMETER。资料列出的关键参数包括:temperature(随机性,0.0 确定性,1.0+ 更发散)、num_ctx(上下文窗口 token 数,越大占用显存越多)、top_p(核采样阈值)、top_k(限制 token 选择池)、repeat_penalty(重复 token 惩罚)、stop(停止序列)、num_gpu(卸载到 GPU 的层数,0 为纯 CPU)。
创建与运行自定义模型:
ollama create my-coder -f ./Modelfile
ollama run my-coder
更新时编辑 Modelfile 后以相同名称再次运行 ollama create。
GPU 与 CPU 配置
Ollama 自动检测 NVIDIA(CUDA)、AMD(ROCm)和 Apple Silicon(Metal)GPU。ollama ps 的 PROCESSOR 列显示 gpu 或 cpu。强制纯 CPU 可用 CUDA_VISIBLE_DEVICES="" ollama serve(单次会话)或 OLLAMA_NUM_GPU=0 ollama serve(服务级);也可在 Modelfile 中用 PARAMETER num_gpu 0 强制 CPU,PARAMETER num_gpu 999 卸载全部层至 GPU(默认)。多 GPU 可设置 CUDA_VISIBLE_DEVICES=0,1。
常用模型
资料列出的模型与适用场景包括:llama3(8B,4.7 GB,通用聊天、推理、指令遵循)、llama3:70b(40 GB,显存充足时质量更高)、codellama(7B,3.8 GB,代码生成、补全、填充)、mistral(7B,4.1 GB,快速通用、结构化输出)、phi3(3.8B,2.2 GB,体量小、质量相对较好)、gemma2(9B,5.4 GB,推理与多语言较强)、deepseek-coder-v2(16B,8.9 GB,代码生成、多语言)、nomic-embed-text(274 MB,用于 RAG 的文本嵌入)、llava(7B,4.7 GB,多模态图像理解)。资料提到 8 GB 内存等受限硬件可使用 phi3 或带 q4 量化的 llama3。
嵌入与 RAG
可使用 nomic-embed-text(768 维)或 mxbai-embed-large(1024 维)。/api/embed 支持单条或数组输入,响应包含浮点向量数组的 embeddings 字段,可存入 ChromaDB、pgvector、Qdrant、FAISS 等向量数据库进行相似度检索。
程序集成
- Python:使用
requests直接调用 HTTP 接口,或安装ollama包使用ollama.chat、ollama.embed,并支持流式输出。 - JavaScript:使用
fetch调用接口,或安装ollama包使用Ollama类与chat方法。 - LangChain:Python 使用
langchain-ollama中的ChatOllama与OllamaEmbeddings;JavaScript 使用@langchain/ollama的ChatOllama。 - 多模态:使用 llava 或 llava-llama3,在
/api/chat消息中通过images传入 Base64 图像数据,Python 示例使用base64编码本地文件。
性能调优
资料给出的手段包括:按工作负载选择最小 num_ctx(默认 4096,32768 适合长文档但更占显存);模型超出显存时用 num_gpu 20 部分卸载;num_batch(默认 512)用于提升提示处理速度;通过请求中的 keep_alive 控制模型驻留时间(如 "30m"),设为 0 立即卸载,-1 无限期保持。服务级环境变量包括 OLLAMA_MAX_LOADED_MODELS(默认 1)、OLLAMA_NUM_PARALLEL、OLLAMA_FLASH_ATTENTION=1(降低内存占用)。
服务化运行
- macOS(Homebrew):
brew services start ollama - Linux(systemd,安装脚本自动创建):
sudo systemctl enable --now ollama,日志用sudo journalctl -u ollama -f;可用sudo systemctl edit ollama添加OLLAMA_HOST、OLLAMA_NUM_PARALLEL等环境变量,然后sudo systemctl daemon-reload && sudo systemctl restart ollama - Docker:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama,进入容器运行ollama run llama3;使用 NVIDIA GPU 时在运行命令中加入--gpus=all
限制
资料未提供模型性能基准、价格或收费信息、具体硬件兼容性列表以及安全与权限方面的说明。上述安装命令与代码均按资料原文保留。