如何运行本地LLM:Ollama、llama.cpp、LM Studio和vLLM对比

有多种方式可以在本地运行LLM。有些工具旨在简化入门过程,而其他工具则提供更多控制或支持同时服务多个用户。正确的选择取决于您是想要简单的本地聊天、可配置的推理引擎,还是生产级API。

Ollama

Ollama是本地运行模型的最简单方式之一。安装它,下载模型,然后从命令行运行。它还提供了本地API,供应用程序和其他工具使用。

优点:

  • 安装和模型管理简单
  • 命令行工作流程简单
  • 兼容OpenAI的API
  • 支持NVIDIA、AMD、Apple Silicon和基于Vulkan的GPU加速
  • Modelfiles允许您自定义模型和参数
  • 内存充足时支持并发请求

缺点:

  • 底层控制不如llama.cpp
  • 其模型管理围绕Ollama生态系统构建
  • 当需要最大吞吐量或分布式推理时,不是首选

难度:低。如果您想快速运行模型而不处理许多推理设置,这是一个不错的选择。

llama.cpp

llama.cpp是一个轻量级的C/C++推理引擎,专注于在广泛的硬件上高效运行模型。它使用GGUF模型,并允许您详细控制模型的加载和运行方式。

优点:

  • 对上下文、GPU卸载、批处理、线程、量化和其他推理设置进行细粒度控制
  • 广泛的硬件支持,包括CUDA、HIP、Metal、Vulkan和SYCL
  • 支持从低位格式到8位的多种量化级别
  • 可以在多个GPU之间分割模型
  • 当模型大于可用VRAM时,可以同时使用CPU和GPU
  • 包含llama-server,提供兼容OpenAI的API

缺点:

  • 配置比Ollama或LM Studio更复杂
  • GGUF模型通常需要单独下载和管理
  • 许多有用的设置需要理解推理参数

难度:中等。如果您想精确控制模型的运行方式,或想尝试性能和量化,这是一个不错的选择。

LM Studio

LM Studio是一个桌面应用程序,用于下载、配置和运行本地LLM。它提供了图形界面,用于查找模型和管理GPU卸载、上下文大小等事项。

优点:

  • 简单的图形界面
  • 通过Hugging Face搜索和下载模型
  • 加载前显示模型和资源信息
  • 兼容OpenAI的API服务器
  • 可以通过其llmster服务器无头运行模型
  • 通过llama.cpp支持GGUF,并在Apple Silicon上支持MLX模型

缺点:

  • 底层控制不如直接使用llama.cpp
  • 桌面应用程序不太适合某些服务器部署
  • 主要不是为大规模多用户服务设计的

难度:低。如果您想尝试本地模型而不花太多时间在命令行上,这是一个不错的选择。

vLLM

vLLM专为向应用程序和多个用户提供LLM服务而设计。其主要优势是在高并发下高效服务,使用PagedAttention、连续批处理、前缀缓存和分布式推理等技术。

优点:

  • 高吞吐量,支持多个并发请求
  • 连续批处理和高效的KV缓存管理
  • 兼容OpenAI的API服务器
  • 直接与许多Hugging Face模型配合使用
  • 支持量化,包括FP8、INT4、GPTQ、AWQ、GGUF等
  • 支持张量、流水线、专家和其他形式的并行
  • 专为生产推理和服务设计

缺点:

  • 设置和配置更复杂
  • 主要面向Linux环境
  • 对于单人交互式运行一个模型,通常没有必要
  • 部署前需要检查硬件和模型兼容性

难度:高。最适合部署推理服务的人,而不是仅仅在个人计算机上运行模型的人。

您应该选择哪个?

  • 只想轻松运行模型:Ollama或LM Studio。选择Ollama用于命令行和简单API,或选择LM Studio用于图形界面。
  • 想要控制推理:llama.cpp。它让您直接控制模型加载、量化、上下文、GPU卸载和其他设置。
  • 需要本地API:Ollama、llama.cpp或LM Studio。这三个都提供兼容OpenAI的API。
  • 需要服务多个用户:vLLM。其连续批处理和分布式推理功能专为此用例设计。
  • 想尝试不同的量化:llama.cpp或LM Studio。

在DaDesktop上运行

如果本地没有足够的GPU硬件,您可以在DaDesktop云桌面上运行这些工具。选择具有足够VRAM的GPU来运行您想要的模型,启动桌面,然后安装您偏好的推理软件。

Ollama和LM Studio在您想要简单的本地环境时很有用。llama.cpp让您对硬件和推理设置拥有更多控制。当您需要将模型作为高吞吐量API暴露时,vLLM是一个选择。

查看可用GPU以比较VRAM和其他规格。