![[深度学习] 大模型学习8上-推理部署框架llama.cpp与Ollama使用指北](http://pic.xiahunao.cn/yaotu/[深度学习] 大模型学习8上-推理部署框架llama.cpp与Ollama使用指北)
[深度学习] 大模型学习8上-推理部署框架llama.cpp与Ollama使用指北在深度学习的浪潮中大语言模型LLM的推理部署一直是开发者关注的焦点。尤其是当我们在本地资源有限的环境下运行模型时如何高效、轻量地将模型跑起来成为一项必备技能。今天我们将从零开始逐步掌握两个最流行的推理部署框架llama.cpp和Ollama。本文将从基础概念讲起带你了解它们的工作原理、安装方法、核心用法并通过完整代码示例帮助你快速上手。—## 1. 为什么需要专门的推理框架大模型如 Llama、Mistral、Qwen 等动辄几十亿参数直接使用 PyTorch 或 TensorFlow 加载并进行推理不仅内存占用巨大而且速度慢尤其是在 CPU 环境下几乎无法忍受。而llama.cpp和Ollama针对推理过程做了极致优化-量化技术将模型权重从 16-bit 或 32-bit 压缩到 4-bit 或 8-bit大幅减少内存占用。-内存映射mmap按需加载模型文件避免一次性载入全部权重。-高效算子针对 CPU/GPU 的底层指令集如 AVX、NEON进行优化提升推理速度。简单来说它们让“在普通笔记本上运行大模型”成为可能。—## 2. 初识 llama.cppllama.cpp是一个纯 C/C 实现的大模型推理引擎最初由 Georgi Gerganov 开源支持多种模型格式如 GGUF、GGML。它的核心优势是- 无需依赖庞大的深度学习框架编译后仅几 MB。- 支持 CPU/GPU 混合推理尤其擅长 CPU 推理。- 支持 4-bit 量化内存占用极低。### 2.1 安装 llama.cpp首先克隆源码并编译bashgit clone https://github.com/ggerganov/llama.cppcd llama.cppmake -j4如果一切顺利你会在目录下看到main、quantize等可执行文件。### 2.2 下载量化模型我们需要一个 GGUF 格式的模型文件。以Qwen2-1.5B-Instruct为例可以去 HuggingFace 搜索或者使用如下命令下载需已安装huggingface_hubbashpip install huggingface-hubhuggingface-cli download Qwen/Qwen2-1.5B-Instruct-GGUF qwen2-1_5b-instruct-q4_k_m.gguf --local-dir ./models### 2.3 使用 llama.cpp 进行推理编写一个简单的 Python 脚本来调用llama.cpp提供的 Python 绑定需先安装llama-cpp-pythonpython# 使用 llama-cpp-python 进行推理from llama_cpp import Llama# 加载模型量化后的 GGUF 文件llm Llama( model_path./models/qwen2-1_5b-instruct-q4_k_m.gguf, n_ctx512, # 上下文长度 n_threads4, # CPU 线程数 verboseFalse # 关闭日志)# 构造提示词prompt 请用一句话解释什么是深度学习output llm( prompt, max_tokens128, # 最多生成 128 个 token temperature0.7, # 随机性控制 stop[\n, ###], # 停止符 echoFalse # 不重复输入)# 打印生成结果print(output[choices][0][text])运行这段代码你会看到模型生成的中文回答。这就是 llama.cpp 的基本用法。你可以通过调整max_tokens、temperature等参数来改变生成效果。—## 3. 进阶量化与自定义参数llama.cpp的另一个强大功能是支持自定义量化。你可以使用自带的quantize工具将 FP16 模型转换为 4-bit 或 8-bit 格式以进一步压缩体积。bash# 将原始模型转换为 GGUF 格式需先转换为 FP16python3 convert.py --outfile models/qwen2-fp16.gguf --outtype f16 models/qwen2/# 然后进行 4-bit 量化./quantize models/qwen2-fp16.gguf models/qwen2-q4_k_m.gguf Q4_K_M量化后的模型体积可减少约 75%推理速度提升 2-3 倍而质量损失通常可以接受。—## 4. 认识 Ollama更友好的部署方式如果说llama.cpp是“硬核派”那么Ollama则是“极简派”。Ollama 是一个开源的本地大模型管理工具它将模型下载、加载、推理、API 服务封装成一条命令极其适合快速体验和开发调试。### 4.1 安装 OllamaOllama 支持 macOS、Linux 和 Windows。以 macOS 为例bashcurl -fsSL https://ollama.com/install.sh | sh安装完成后你可以直接运行bashollama run qwen2:1.5b这会自动下载模型并启动交互式对话。### 4.2 使用 Python 调用 Ollama APIOllama 提供了 REST API你可以通过 HTTP 请求来调用模型非常适合集成到自己的应用中。下面是一个完整的 Python 示例pythonimport requestsimport json# 定义 API 地址默认端口 11434url http://localhost:11434/api/generate# 准备请求数据payload { model: qwen2:1.5b, prompt: 请写一首关于秋天的五言绝句, stream: False, # 一次性返回结果 options: { temperature: 0.8, # 控制创意 max_tokens: 100 # 最大生成长度 }}# 发送 POST 请求response requests.post(url, jsonpayload)# 解析响应if response.status_code 200: result response.json() print(Ollama 生成结果) print(result[response])else: print(f请求失败状态码{response.status_code})运行后你会收到模型生成的诗歌。Ollama 的 API 设计简洁非常适合快速构建原型应用。—## 5. 对比与选型建议| 特性 | llama.cpp | Ollama ||------|-----------|--------|| 底层实现 | C/C | Go llama.cpp 核心 || 上手难度 | 中等需编译 | 极低一键安装 || 自定义程度 | 高可量化、调参 | 低提供基本选项 || API 支持 | 需额外配置 | 自带 REST API || 适用场景 | 高性能定制部署 | 快速原型、教育演示 |如果你追求极致性能和深度定制选择llama.cpp如果你希望快速跑通流程、快速集成Ollama是不二之选。—## 6. 总结通过本文的学习我们掌握了两个主流大模型推理部署框架的核心用法。llama.cpp以其轻量、高效和高度可定制性成为本地部署的首选而Ollama则凭借极简的操作和内置 API让开发者可以迅速将大模型能力接入到自己的项目中。无论你是深度学习研究者、后端开发者还是 AI 爱好者掌握这两把“利器”都能让你在本地轻松驾驭大模型释放无限创造力。未来随着模型和框架的不断演进推理部署的门槛将进一步降低让我们拭目以待