[具身智能-356]: Ollama(目前主流的本地大模型推理与运行框架)的系统架构

张开发
2026/4/12 10:38:53 15 分钟阅读

分享文章

[具身智能-356]: Ollama(目前主流的本地大模型推理与运行框架)的系统架构
Ollama目前主流的本地大模型推理与运行框架。其架构设计以“轻量、易用、跨平台”为核心采用典型的Client-Server 模型底层深度集成llama.cpp并对多硬件加速进行了统一抽象。以下为完整架构解析 一、 核心架构拓扑逻辑分层[ 用户交互层 ] CLI / Web UI / 第三方应用 / Docker ↓ (HTTP/REST) [ 服务端守护进程 (ollama serve) ] ← 监听默认端口 11434 ├─ 模型管理器 (Model Registry Cache) ├─ 会话与上下文管理器 (Conversation/KV Cache) ├─ API 路由层 (/api/*, /v1/* OpenAI 兼容) ↓ [ 推理运行时 (Inference Runtime) ] ├─ 模型加载器 (GGUF 解析、量化权重映射) ├─ 硬件抽象层 (HAL: CPU / Apple Metal / NVIDIA CUDA / AMD ROCm / Vulkan) ├─ 核心计算引擎 (llama.cpp 张量调度、Attention 优化、层卸载) ↓ [ 硬件资源层 ] GPU显存 / 系统内存 / 磁盘缓存 / 线程池 二、 核心组件详解组件职责技术实现1. 客户端 (CLI/Web)接收用户指令、展示流式输出、管理模型生命周期Go 语言编写支持run/pull/list/rm/create等命令官方提供基础终端交互生态衍生大量 Web UI如 Open WebUI、Chatbox2. 服务端守护进程常驻后台服务处理并发请求、状态管理、资源调度基于 Go 的轻量 HTTP Server无状态设计支持多客户端并发接入内置进程保活与优雅重启机制3. 模型管理器模型下载、版本控制、本地缓存、配置解析模型以GGUF格式存储于~/.ollama/models通过Modelfile定义基础模型、系统提示词、温度、上下文长度等参数支持分层拉取与增量更新4. API 路由层提供标准化接口供程序调用原生/api/generate、/api/chat、/api/embed近期版本内置/v1/chat/completions等 OpenAI 兼容端点支持流式/非流式响应5. 推理引擎核心实际执行前向计算、Token 生成、KV Cache 管理底层封装llama.cpp自动完成权重反量化、GGML/GGUF 张量加载、注意力机制优化支持动态上下文窗口与 speculative decoding6. 硬件抽象层 (HAL)自动探测可用算力分配计算任务启动时扫描设备优先级Metal CUDA ROCm Vulkan CPU支持num_gpu参数控制层卸载比例实现显存/内存协同推理 三、 单次请求处理链路接入用户通过 CLI 或 HTTP 调用/api/chat携带模型名、消息列表、参数temperature/top_p/max_tokens路由与加载Server 检查模型缓存 → 若不存在则从官方 Registry 下载 → 解析 Modelfile 合并运行时配置上下文构建加载历史对话受num_ctx限制拼接系统提示词与当前 Prompt进行 Tokenization推理调度HAL 将模型层按显存容量分配至 GPU/CPU → llama.cpp 执行自回归生成流式返回 Token缓存与清理生成的 KV Cache 保留在内存中供后续对话复用闲置超时后自动释放或持久化至磁盘响应输出Server 将流式结果按 JSON 或 OpenAI 格式返回客户端同时记录使用统计Token 数、耗时⚙️ 四、 关键技术特征GGUF 量化生态原生支持 Q4_0/Q5_K_M/Q8_0 等量化格式在精度与显存占用间取得平衡适配消费级硬件自动硬件适配无需手动编译运行时动态链接 Metal/CUDA/ROCm 库失败则无缝降级至 CPU 推理上下文与缓存管理内置 KV Cache 复用机制多轮对话避免重复计算支持num_keep固定系统提示词缓存OpenAI 兼容通过/v1/路由直接对接 LangChain、LlamaIndex、FastGPT 等主流 AI 应用框架容器化支持官方提供ollama/ollamaDocker 镜像支持 GPU 透传--gpus all与卷挂载持久化模型 五、 扩展与二次开发方式需求实现路径自定义模型编写Modelfile使用FROM指定基座SYSTEM/PARAMETER/TEMPLATE覆盖行为接入私有服务启动时绑定OLLAMA_HOST0.0.0.0:11434配合 Nginx 反代或 API 网关实现鉴权/限流嵌入业务系统调用 REST API 或使用官方 Go/Python SDK直接集成至 Web/移动端/边缘设备性能调优调整OLLAMA_NUM_PARALLEL并发数、OLLAMA_MAX_LOADED_MODELS、GPU 层卸载比例日志与监控设置OLLAMA_DEBUG1输出详细推理日志结合 Prometheus Exporter 采集请求延迟/显存/Token 速率⚠️ 六、 架构边界与注意事项非分布式训练框架仅支持单节点推理不支持多机张量并行或模型微调显存强依赖7B 模型 Q4 约需 46GB 显存13B 约 810GB超出将自动降级至 CPU 导致延迟飙升并发能力有限默认单请求串行处理高并发场景需自行实现请求队列或部署多实例安全隔离较弱服务端默认无鉴权暴露至公网需配合防火墙/OAuth 代理模型文件本地明文存储如需进一步输出Ollama Docker GPU 部署架构图OpenAI API 兼容对接示例Python/LangChain⚡高并发场景下的架构改造方案Nginx 负载均衡 多实例池硬件算力选型对照表消费级/边缘/服务器 GPU 适配模型规模请告知您的具体使用场景本地开发/边缘部署/企业内网集成/二次开发等我将提供针对性架构设计。

更多文章