本地运行大模型——Ollama
除了可以调用商业api,如前面一直用的OpenAI的模型,我们也可以部署自己的模型,或者说在很多环境下,对于数据的保密性要求,我们只能使用本地部署大模型。提到大模型部署,不得不提Ollama,Ollama 的出现极大地简化了在个人计算机上本地运行大模型的过程。
一、Ollama
Ollama 是一个开源的、轻量级的大型语言模型服务工具。它将模型的权重、配置和数据打包成一个统一的格式(Modelfile),并提供了一个简单的命令行界面和 API 服务,让用户可以轻松地在本地下载、运行和管理这些模型。
Ollama 的核心优势在于其易用性和高效性。你不再需要深入了解复杂的模型部署细节,也无需手动配置繁琐的运行环境。通过几条简单的命令,即可在自己的电脑上(支持 macOS、Windows 和 Linux)启动大模型。
整个对大模型的管理过程就像docker,比如ollama pull <llm_name>
拉取大模型并运行大模型,就像docker pull <image>
二、Ollama部署大模型
使用 Ollama 部署大模型的过程非常直接。首先,你需要从Ollama 官网下载并安装适合你操作系统的客户端。
安装完成后,打开你的终端(命令行工具),就可以通过ollama run
命令来下载并运行一个模型。例如,想要运行 Llama 3 的 8B 版本,只需执行:
ollama run llama3
Ollama 会自动从其模型库中下载模型文件,并在下载完成后启动一个交互式的命令行界面,你便可以直接与模型进行对话了。
你可以在Ollama Library页面找到所有支持的模型列表和它们的标签。
三、Ollama 常用操作
下载并运行模型
ollama pull <llm_name>
列出本地已下载模型
ollama list
运行已下载模型
ollama run <llm_name>
删除一个模型
ollama rm <llm_name>
查看模型详情信息
ollama show --modelfile <llm_name>
四、Ollama环境变量
Ollama的设置信息需要通过系统的环境变量来设置,以MacOS为例
环境变量 | 描述 | 默认值 |
---|---|---|
OLLAMA_HOST | 设置 Ollama 服务监听的 IP 地址和端口。如果你希望从网络中的其他设备访问 Ollama,可以将其设置为 0.0.0.0:11434 。 | 127.0.0.1:11434 |
OLLAMA_MODELS | 指定存放下载模型的目录路径。这对于将模型存储在具有更大空间的外部驱动器上非常有用。 | ~/.ollama/models |
OLLAMA_ORIGINS | 设置允许访问 Ollama API 的跨域来源 (CORS)。可以设置为逗号分隔的 URL 列表。为了允许所有来源,可以设置为 * ,但这在生产环境中应谨慎使用。 | (未设置) |
OLLAMA_TMPDIR | 指定用于存放临时文件的位置。 | 系统的临时目录 |
OLLAMA_DEBUG | 设置为1 或true 以启用详细的调试日志输出。 | false |
OLLAMA_NOHISTORY | 如果设置为1 或true ,在ollama run 的交互模式下将禁用历史记录功能。 | false |
例如:
设置ollama监听端口
export OLLAMA_HOST=0.0.0.0:12345
ollama serve
其它还有一些调优的参数,一般不需要修改。
五、主流本地大模型工具对比
当然,除了 Ollama,还有一些其他的优秀工具。
特性 | Ollama | vLLM | Xinference |
---|---|---|---|
主要目标 | 极致简化。让任何人都可以在个人电脑上通过一条命令快速运行开源大模型。 | 极致性能。为生产环境提供最高的推理吞吐量和最低的延迟。 | 功能全面与可扩展。提供一站式的、可扩展的推理平台,支持多种 AI 模型。 |
易用性 | 极高。以命令行工具为核心,开箱即用,几乎零配置。 | 较低。需要编写 Python 服务代码,对环境和配置有一定要求。 | 高。提供命令行、WebUI 和 Python SDK,兼顾了易用性和灵活性。 |
性能与优化 | 基础水平。主要优化在于使用量化模型(GGUF),本身不以高性能并发为目标。 | 顶尖水平。核心优势,使用 PagedAttention 等先进技术,吞吐量和并发性能极高。 | 良好。性能优于 Ollama,支持量化模型和分布式部署来提升性能,但单点性能不如 vLLM。 |
支持的模型类型 | 主要支持语言模型 (LLM),特别是 GGUF 格式。 | 主要支持语言模型 (LLM),对主流 PyTorch 模型格式支持良好。 | 非常广泛 (核心优势)。原生支持语言模型、嵌入模型、重排模型、多模态模型等。 |
API 与集成 | 提供 REST API 和 Python/JS 库,但功能相对基础。 | 不直接提供 API,需结合 FastAPI 等 Web 框架自行构建服务。 | 提供与 OpenAI 兼容的 REST API,集成非常方便,可无缝对接现有生态。 |
硬件支持 | 非常广泛。支持 NVIDIA GPU, Apple Silicon (M系列芯片) 和纯 CPU 运行。 | 严格限制。主要为 NVIDIA GPU 设计和优化,依赖 CUDA。 | 广泛。支持 NVIDIA/AMD GPU, Apple Silicon 和 CPU。 |
分布式能力 | 无。设计为单机本地运行。 | 支持。支持张量并行,可将大模型分布在多张 GPU 上运行。 | 原生支持 (核心优势)。可以轻松地部署在多设备或多服务器的分布式集群中。 |
管理界面 | 无。纯命令行操作。 | 无。需要自行构建。 | 有。提供一个直观的 WebUI 来启动、管理和测试模型。 |
核心应用场景 | 个人开发者、爱好者、研究人员在本地电脑上进行快速实验、学习和原型验证。 | 对性能要求苛刻的生产环境,如需要服务大量用户的在线 AI 应用。 | 构建复杂的 AI 应用(如 RAG)、企业内部模型服务平台、需要从单机平滑扩展到集群的场景。 |
一句话总结 | 本地运行大模型最简单的方式。 | 让大模型在生产中跑得最快的方式。 | 功能最全面的、可扩展的 AI 推理平台。 |