ARTICLE · 1065984
本地大模型部署指南-Ollama(含源码)
面向 Windows、macOS 与 Linux 的低门槛本地模型运行时,适合个人开发和原型验证。
推荐环境:Windows 11 本机或 Linux 单机
模型格式:Ollama 模型库;本地 Modelfile 可引用 GGUF 等来源
示例接口:http://127.0.0.1:11434/api/chat
示例模型:qwen3:8b
安全提示:开发环境先绑定 127.0.0.1。生产环境不要将未鉴权服务直接暴露到公网,应先配置 TLS、认证、限流与访问审计。
一、部署前先确认这几件事
先明确使用目标:个人离线问答、桌面演示、内网 API,还是高并发生产服务。框架选择要同时考虑硬件、模型格式、并发需求与运维能力。
重要边界:本文给出部署流程,不代表当前机器已经安装或运行了模型。部署当天仍需重新核对框架版本、GPU 兼容性和模型许可证。
二、安装与启动
Windows 11 路径
Ubuntu/Linux + NVIDIA GPU 路径
版本提示:GPU 推理框架会受到 Python、PyTorch、CUDA、NVIDIA 驱动和模型架构的共同影响。升级前应在隔离环境验证,并保留可回滚版本。
启动服务
ollama serve
出现监听地址或模型加载完成日志后,还要继续执行下一节的模型列表检查和对话请求,不能只看进程是否启动。
三、接口验证与 Python 调用
请求流程:业务程序发起 HTTP 请求 -> 推理服务排队与调度 -> 模型加载权重并推理 -> 服务返回 JSON 或流式响应。生产环境应把公网入口、TLS、认证和限流交给网关,模型服务本身仅监听私网或回环地址。
先做健康检查或模型发现
curl http://127.0.0.1:11434/api/tags
预期结果是能列出已加载模型,或收到与框架文档一致的健康响应。若此步骤失败,先排查端口、服务进程、监听地址和防火墙。
最小 Python 客户端
下面仅使用 Python 标准库。启动服务后,将 `model` 字段替换为服务实际暴露的模型标识;业务代码还需要补充超时、重试边界、请求日志和敏感信息处理。
from __future__ import annotationsimport jsonfrom urllib.request import Request, urlopenurl = "http://127.0.0.1:11434/api/chat"payload = { "model": "qwen3:8b", "messages": [{"role": "user", "content": "请用一句话说明本地部署的意义。"}], "stream": false}request = Request( url, data=json.dumps(payload).encode("utf-8"), headers={"Content-Type": "application/json"}, method="POST",)with urlopen(request, timeout=60) as response: result = json.loads(response.read().decode("utf-8"))print(result["message"]["content"])
四、生产化部署建议
可用性:使用进程托管和健康检查,观察存活、就绪、重启次数与模型加载时长。
性能:设置连接/读取超时、请求大小上限和并发边界,监控首 token 延迟、tokens/s、P50/P95 与队列长度。
资源:限制 CPU、内存、显存和磁盘;持续观察 GPU 利用率、显存、KV Cache 与磁盘余量。
安全:模型服务仅私网监听或置于网关保护之后;审计认证失败、限流命中和异常请求。
Linux systemd 服务模板
[Unit]Description=Ollama local LLM serviceAfter=network-online.target[Service]User=llmWorkingDirectory=/opt/llmEnvironment=HOME=/var/lib/llmExecStart=/bin/bash -lc 'ollama serve'Restart=on-failureRestartSec=5[Install]WantedBy=multi-user.target
模板说明:这是结构示例,不应原样直接用于生产。必须替换实际的虚拟环境或二进制绝对路径、模型目录、用户权限、日志路径、环境变量和网关策略。
五、常见问题排查
常见原因:服务只监听回环地址、进程未启动,或防火墙阻断
建议动作:先在服务主机执行健康检查;确认监听地址、入站规则和反向代理配置。
常见原因:模型首次加载、CUDA 内核编译或磁盘缓存尚未就绪
建议动作:预热一条短请求;把模型放在 SSD;观察显存和磁盘占用。
常见原因:模型、KV Cache、上下文长度和并发总量超过显存
建议动作:换小模型或量化版本;降低上下文/并发;调整 GPU 内存参数。
常见原因:网关或服务启用了鉴权,但客户端未提供正确密钥
建议动作:检查反向代理与服务端鉴权策略;从环境变量读取密钥,不要写入代码。
常见原因:网络、代理、磁盘空间或模型仓库权限问题
建议动作:核对网络与代理;预留足够磁盘;先用浏览器或 CLI 验证模型仓库访问。
常见原因:模型模板、编码或客户端请求体不一致
建议动作:使用 UTF-8 JSON;选择明确支持中文的 instruct/chat 模型;检查 chat template。
六、官方资料
部署当天请再次核对官方发布版本、安装方式、兼容矩阵和模型许可。