1.为什么要本地部署

想象一下这样的场景:你在咖啡店用笔记本电脑写代码时,AI助手能直接调用本地模型帮你补全代码;医生在问诊时,无需联网就能通过本地模型分析患者病历;作家在飞机上断网状态下,依然能用AI润色文稿。这就是本地部署大模型所带来的变革。

随着开源模型DeepSeek的爆火,配合推理加速和量化技术的发展,普通人的本地设备运行智能助手成为可能,与云端服务相比,本地部署具有三个优势:

  • 隐私安全:敏感数据不出本地
  • 成本更低:无需为每次对话付费
  • 实时响应:断网环境也能使用,时效更高

你可能会疑惑:对于自己的硬件条件和需求,该如何选择模型?如何选择工具或框架进行部署模型?同时本地部署的模型可以在哪些场景应用起来?这些问题在本文中会进行一一解答。

下面将介绍当下最热门的几种本地部署大模型的方法,从“一键安装”的傻瓜式工具到高性能推理框架,总有一款适合你的设备和需求。每一种部署方法的章节都是完整独立的,大家也可以直接跳到自己感兴趣的部署方式进行阅读,不会有任何的阅读影响。

2.部署方法对比

整理了主流工具的“能力画像”,可以快速找到适合你的方案。

工具/框架 上手难度 简介 核心优势 适合人群 支持的交互
Ollama 开箱即用的本地LLM运行框架,支持模型管理、微调和跨平台部署 一键部署、跨平台兼容 新手开发者,快速体验 CLI、HTTP API、Python SDK。兼容OpenAI API
LM Studio ⭐⭐ 可视化桌面工具,提供零代码模型管理与本地服务部署 零代码操作、文档问答 非技术人员/知识工作者,快速原型验证 GUI、HTTP API、Python SDK、TypeScript SDK
llama.cpp ⭐⭐⭐ 基于C/C++的高性能推理引擎,提供底层硬件加速和量化技术 极致压缩、跨硬件适配 极客/硬件受限用户 CLI、HTTP API(兼容OpenAI)
Transformers ⭐⭐⭐ HuggingFace的核心库,支持模型的训练与部署的全流程 全流程支持、模型生态丰富 学术研究/算法工程师 Python SDK、HTTP API
vLLM ⭐⭐⭐⭐ 高性能推理引擎,优化内存管理,具备高吞吐量与低成本部署 高吞吐量、企业级并发支持 企业级开发者、高并发场景 Python SDK、REST API、gRPC
TGI ⭐⭐⭐⭐ HuggingFace的用于文本生成推的RUST/Python/gRPC服务框架 生产级优化,多模型并行 企业级服务,与Huggingface生态深度集成 HTTP API、Python SDK、gRPC
Dify ⭐⭐⭐ 低代码LLM应用开发平台,支持可视化工作流与本地知识库集成 可视化工作流,多模型编排 企业级应用开发者、快速构建私有知识库系统的团队 Web GUI、HTTP API、Python SDK
DeepSpeed ⭐⭐⭐⭐⭐ 微软的深度学习库,利用模型和数据压缩技术,提升推理和训练效率 超大规模模型压缩,混合精度优化 科研机构、需微调超大规模模型的企业 CLI、Python SDK

3.部署实践

3.1.模型下载

想要在本地部署大模型,需要先将模型下载到本地,有些应用工具可以直接下载,有些则需要手动下载然后加载到程序中,各有利弊。工具下载简单方便,门槛低,不过对网络有要求,如huggingface国内网络就访问不了,且下载速度较慢。手动下载则需要掌握模型文件的知识,自主选择合适的模型文件,门槛高些。

手动下载模型的网站

社区 地址
huggingface https://huggingface.co/models
AI开发者的“github”,提供模型、数据集、类库、教程社区等
hf-mirror https://hf-mirror.com/models
huggingface国内镜像网站
魔塔社区 https://www.modelscope.cn/models
阿里通义发起的AI社区平台

常见的模型文件格式

目前常见的模型文件格式有:safetensors、gguf、pth(PyTorch)和onnx等。

  • safetensors
    • Huggingface专为深度学习模型设计的格式,具有以下特性:1)安全性上比PyTorch的.pth要好;2)支持PyTorch、TensorFlow、JAX主流框架,能无缝集成HuggingFace生态;3)支持零拷贝加载,从磁盘映射内存,减少显存/内存消耗。
    • 适用快速加载超大规模模型(如70B参数规模)、对生产环境安全性高的企业级部署等场景。
  • gguf
    • 全称是GPT-Generated Unified Format,是llama.cpp为量化模型优化而设计。
    • 1)支持多种量化策略;2)对CPU/边缘计算优化,如在Apple Silicon芯片通过Metal实现推理加速;3)文件内嵌模型架构、训练信息、量化参数等元数据,部署无额额外配置文件。
    • 适用压缩模型体积的场景,在Macbook、手机登设备本地部署大模型,使用llama.cpp、ollama等轻量化推理框架。
  • pth
    • PyTorch框架专用的文件格式,保存模型权重(参数)和模型结构。深度集成于PyTorch框架,适合学术研究与模型预训练。
  • onnx
    • 开放神经网络交换格式(Open Neural Network Exchange),通过protobuf协议序列化,兼容TensorFlow、PyTorch、MXNet等框架,支持硬件加速。

模型选择指南:

  • 1)从安全性考虑,推荐safetensors,适合企业服务、云端容器部署;
  • 2)从手机/Mac低配硬件考虑,推荐GGUF,适合个人开发者、离线场景;
  • 3)需要继续微调模型,推荐.pth(PyTorch),适合研究人员、模型迭代开发;
  • 4)需要跨平台生成部署,推荐ONNX,适合工业级多硬件场景。

另外模型参数规模的选择也要看本地机器硬件的条件,有个经验公式可以参考:

  • 无量化模型:模型显存占用(GB) = 大模型参数(B) * 2
  • 4bit量化模型:模型显存占用(GB) >= 大模型参数(B) / 2

比如无量化的7B参数模型,机器的显存需要达到14GB以上。

3.2.Ollama

官方地址https://ollama.com

Ollama是一个开源的本地大语言模型运行框架,专为在本地机器上便捷部署和运行LLM而设计。

Ollama具有以下特性:

  • 支持众多模型:提供开箱即用的预训练模型,包括大部分当下热门的大模型。
  • 集成和使用方便:提供命令行工具(CLI)和Python SDK,能够快速将Ollama集成到现有应用中。
  • 本地部署和离线使用:允许本地部署,脱离外部服务依赖,保证数据隐私。
  • 支持模型微调:支持使用自己的数据对模型再训练,优化模型的性能和准确度。
  • 推理性能优化:支持多种硬件加速(如Apple Silicon)、批量处理,还提供对模型的量化能力。
  • 跨平台:支持MacOS、Windows、Linux以及通过Docker容器运行
  • 开源与社区:Ollama是开源项目,并具有活跃的社区。

3.2.1.安装部署

官网下载:https://ollama.com/download

  • MacOS
    • 下载直接双击安装,安装完后验证:ollama --version
  • Windows
    • 下载直接双击安装。默认安装在C盘用户目录下,若C盘空间不够可以更改安装路径。
      OllamaSetup.exe /DIR="d:\some\location"
  • Linux
    • 一键安装脚本:curl -fsSL https://ollama.com/install.sh | sh
    • 安装完后验证:ollama --version
  • Docker
    • 拉取Docker镜像:docker pull ollama/ollama
    • 运行容器:docker run -p 11434:11434 ollama/ollama
    • 访问:http://localhost:11434

安装完成后,可以使用ollama CLI对模型进行操作管理,从模型的下载运行,到模型管理,再到服务管理,详细可以使用ollama --help进行查看。

支持的硬件平台

Windows Nvidia GPU、AMD GPU、Intel GPU
macOS Apple Silicon、Apple Intel CPU
Linux Nvidia GPU、AMD GPU、ARM64 CPU

3.2.2.运行推理

① 命令行运行

命令行部署运行模型非常简单,使用ollama run指令即可,若本地没有该模型则会自动下载,运行成功后即可在终端与模型进行对话交互,这也是ollama最方便的地方。

ollama run deepseek-r1:1.5b

结束对话输入/bye或按Ctrl+d结束,Ollama支持的模型:https://ollama.com/library

② Python SDK运行

Ollama支持Python SDK编码运行,引入python包并调用封装好的函数即可。

安装Python包

pip install ollama

快速开始-文本生成

import ollama
response = ollama.generate(
    model="llama3.2",  # 模型名称
    prompt="你是谁。"  # 提示文本
)
print(response)

对话模式

from ollama import chat
response = chat(
    model="llama3.2",
    messages=[
        {"role": "user", "content": "你是谁啊?"}
    ]
)
print(response.message.content)

流式响应

from ollama import chat
stream = chat(
    model="llama3.2",
    messages=[{"role": "user", "content": "你是谁啊?"}],
    stream=True
)
for chunk in stream:
    print(chunk["message"]["content"], end="", flush=True)

3.2.3.模型集成

ollama在本地运行模型后,除了在命令行终端中进行简单地问答交互,还可以通过HTTP API或者Python SDK两种方式与模型进行交互,能够很方便地在现有的应用中将模型集成进去。

①HTTP Server

服务启动后,默认在本地这个端口运行http服务:http://localhost:11434。常用的API有

  • POST/api/generate,文本生成:向模型发送提示词,生成文本
  • POST/api/chat,聊天:支持多轮对话

更多API与请求报文可以参考官方文档:https://github.com/ollama/ollama/blob/main/docs/api.md

②Python SDK

通过python编码与模型进行交互,在上面章节中已经介绍过ollama包的使用。

另外ollama也兼容OpenAI的 API规范,包括Python库、JavaScript库以及REST API。

另外Ollama作为目前最热门的模型推理工具之一,已经有非常多的Web或桌面应用接入Ollama的模型服务,如Open-WebUI、Dify等。

3.3.llama.cpp

官方地址https://github.com/ggml-org/llama.cpp

llama.cpp是一个基于C/C++的高性能的模型推理引擎,通过底层硬件加速和量化技术,实现各种硬件平台上的高效推理。

llama.cpp具有以下特性:

  • 支持广泛的硬件平台:Apple Silicon(通过ARM NEON、Metal和Accelerate)、x86、NVIDIA GPU(通过CUDA)、AMD GPU(通过hipBLAS)、Intel GPU(通过SYCL)、昇腾NPU(通过CANN)和摩尔线程GPU(通过MUSA)
  • CPU + GPU混合推理,能部分加速大于总VRAM容量的模型
  • 提供模型量化的工具

3.3.1.安装部署

① 手动安装

克隆项目到本地构建

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

编译CPU版本:

cmake -B build
cmake --build build --config Release -j 8

编译GPU版本:

cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j 8

② brew安装

MacOS、Linux可以直接使用brew安装:brew install llama.cpp,除了Homebrew安装,Mac/Linux还可以使用Nix、Flox工具安装,区别不大。

除了上面的两种构建方法,还可以使用Docker镜像,或直接下载预构建好的二进制文件。

3.3.2.模型准备

llama.cpp使用的是GGUF格式的模型文件,可以直接下载gguf模型文件使用,也可以下载safetensors格式的模型,然后转换成gguf格式。

1、先下载好safetensors的模型文件:

XXXX/DeepSeek-R1-Distill-Qwen-1.5B/
└── config.json
└── generation_config.json
└── model.safetensors
└── tokenizer_config.json
└── tokenizer.json

2、使用llama.cpp直接转化为目标格式

# 安装python依赖库
pip install -r requirements.txt
# 转换模型:将模型转换成FP16精度的格式
python convert_hf_to_gguf.py DeepSeek-R1-Distill-Qwen-1.5B/

成功后会生成一个FP16精度、GGUF格式的模型文件DeepSeek-R1-Distill-Qwen-1.5B-F16.gguf

3、量化模型

FP16精度的模型运行可能有点慢,可以进行量化来提升推理速度。量化类型分级:Q2_K至Q8_K等多种量化级别,如采用Q4_K_M的量化策略:

./build/bin/llama-quantize DeepSeek-R1-Distill-Qwen-1.5B-F16.gguf DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf Q4_K_M

3.3.3.运行推理

①命令行运行

./build/bin/llama-cli -m DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf

llama.cpp会自动激活对话模式,如果没有,可添加参数-cnv启用。

也可以使用简单的提示词生成回答完成推理:

./build/bin/llama-cli -m DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf -p "你是谁" -n 128 -no-cnv

②HTTP Server

./build/bin/llama-server -m DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf --port 8080

启动http服务,llama.cpp提供了兼容OpenAI的API服务,浏览器访问http://127.0.0.1:8080即可进行对话。

3.4.Transformers库

官方地址https://github.com/huggingface/transformers

**huggingface的transformers库,是当前AI领域最热门的开源工具库之一,支持从模型下载、加载、训练、微调到部署的全流程。**它通过对底层机器学习框架(如PyTorch、TensorFlow、JAX)进行抽象,简化了transformer模型的实现,降低了transformer模型的训练、部署的复杂性。

transformers具有以下特性:

  • 丰富的预训练模型支持:10万+预训练模型,依托huggingface生态,涵盖BERT、GPT、RoBERTa、T5等主流架构,以及微调版本。
  • 多框架兼容:支持PyTorchTensorFlowJAX三种深度学习框架,并能够无缝切换。
  • 统一的API:模型加载(AutoModel.from_pretrained)、分词处理(AutoTokenizer)、任务管道(pipeline)

支持的硬件平台

transformers是基于底层机器学习框架使用的,包括PyTorch、TensorFlow、JAX,因此transformers库支持在多种硬件平台加载大模型进行推理。

硬件 说明
Nvidia GPU 通过CUDA加速,通过accelerate实现多卡并行
Apple Silicon M1/M2/M3,通过PyTorch的MPS实现加速
Intel CPU/GPU 通过optimum-intel支持Intel CPU和集成显卡
TPU 通过TensorFlow 或 JAX 在Google Cloud TPU上运行

3.4.1.安装python库

使用transformers库运行推理,需要先安装这两个python库,这里使用PyTorch库:

pip install transformers,torch

3.4.2.运行推理

随着llama.cpp越来越火,gguf格式的模型也被广泛使用,transformers框架即支持safetensors格式的模型,也支持gguf格式的模型,只是在函数调用上有一点差异。

一、safetensors格式模型部署

将safetensors模型的相关文件都要下载到本地,注意包含下面的目录文件

XXXX/DeepSeek-R1-Distill-Qwen-1.5B/
└── config.json
└── generation_config.json
└── model.safetensors
└── tokenizer_config.json
└── tokenizer.json

使用python库函数进行加载运行,transformers需要单独创建分词器进行输入输出的编解码

from transformers import AutoTokenizer, AutoModelForCausalLM

# safetensors模型文件所在目录
model_path = "XXXX/DeepSeek-R1-Distill-Qwen-1.5B"

# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(model_path)
# 加载模型
model = AutoModelForCausalLM.from_pretrained(model_path)

input_text = "请问1+1等于多少"
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs)
print(tokenizer.decode(outputs[0]))

二、gguf格式模型部署

要运行gguf模型,还需要再安装这两个库

pip install gguf,accelerate

将gguf模型文件下载到本地,直接加载模型文件即可使用,使用方式基本类似。

XXXX/DeepSeek-GGUF/
└── DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf
from transformers import AutoTokenizer, AutoModelForCausalLM

# gguf文件
path = "XXXX/DeepSeek-GGUF"
gguf_file_name = "DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf"

# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(path, gguf_file=gguf_file_name)
# 加载模型
model = AutoModelForCausalLM.from_pretrained(path, gguf_file=gguf_file_name)

input_text = "请问1+1等于多少"
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs)
print(tokenizer.decode(outputs[0]))

3.5.vLLM

官方地址:https://github.com/vllm-project/vllm

vLLM是一款高性能推理的服务引擎,核心目标是通过创新的内存管理和计算优化,提升LLM推理的吞吐量与资源效率,降低部署成本。

核心功能:

  • 支持的模型数量多且类型多:与Hugging Face模型能无缝集成,且支持多种类型,包括LLM(如Llama)、混合专家模型(如DeepSeek)、嵌入模型(如E5-Mistral)、多模态模型(如LLaVA)
  • 高性能推理:具有高吞吐量服务、使用PagedAttention高效管理注意力键值内存,并支持连续批处理;优化CUDA集成,包括FlashAttention 和 FlashInfer和集成。
  • 支持多种量化技术:GPTQ, AWQ, INT4, INT8, and FP8
  • 兼容OpenAI API服务

3.5.1.安装部署

vLLM支持多种硬件平台:

  • GPU:NVIDIA CUDA、AMD ROCm、Intel XPU
  • CPU:Intel/AMD x86、ARM AArch64、Apple silicon
  • Other AI accelerators:Google TPU、Intel Gaudi、AWS Neuron、OpenVINO

vLLM是基于python环境,因此先创建独立的python环境

conda create -n forvllm python=3.12
conda activate forvllm

①GPU

如果使用的是NVIDIA的GPU,可以直接使用pip安装vLLM。

pip install vllm

②CPU

git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -r requirements-cpu.txt
pip install -e . 

vLLM对macOS的芯片提供了实验性支持,支持FP32和FP16数据类型。

3.5.2.推理运行

①编码推理

加载本地模型或者从远程下载模型,支持从HuggingFace和ModelScope下载模型,并支持离线批量推理。

from vllm import LLM, SamplingParams

# 提示词 数据,支持批量
prompts = [
    "你是谁",
    "AI的未来是什么样子",
]
# 指定采样过程的参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
# Create an LLM.
llm = LLM(model="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B")

# 为提示词生成文本,输出是list
outputs = llm.generate(prompts, sampling_params)

# 打印输出
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
  • 默认从HuggingFace下载模型,若要切换到ModelScope,需要设置环境变量:export VLLM_USE_MODELSCOPE=True。(注意modelscope库要提前安装:pip install modelscope

②OpenAI兼容服务

vLLM能够部署OpenAI API的服务,可以对使用OpenAI API的应用程序的替代品。

vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

默认部署在8000端口,可以使用--host--port参数指定地址。

部署成功可以尝试进行http交互

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B",
        "prompt": "你是谁",
        "max_tokens": 7,
        "temperature": 0
    }'

也可以使用python sdk进行交互

from openai import OpenAI

# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)
completion = client.completions.create(model="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B",
                                      prompt="你是谁")
print("Completion result:", completion)

3.6.LM Studio

官网地址:https://lmstudio.ai/

LM Studio是一款用于本地开发和试验LLM的应用程序,在可视化界面上做的比较好,不需要编码技能。

核心特点:

  • 体验好的可视化界面,操作便捷
  • 可管理模型和配置,通过HuggingFace搜索和下载
  • 可搭建本地服务,多种方式与模型交互:REST API、Python SDK、TypeScript SDK、CLI
  • 跨平台支持:macOS(M1-M4,不支持Intel芯片)、Windows(x64、ARM)、Linux(x64)。
  • 支持使用llama.cpp运行LLM,支持使用Apple的MLX运行LLM。
  • 支持RAG文档集成

3.6.1.安装部署

直接安装桌面版lmstudio即可,相关的模型引入有两种方式

①手动下载模型

也可以直接在模型社区下载.gguf模型文件,如HF国内镜像网站(https://hf-mirror.com/)、魔塔(https://www.modelscope.cn/home)等社区,将模型文件放到指定目录,下面是LMStudio的模型目录结构,publisher是发布者名称

~/.lmstudio/models/
└── publisher/
    └── model/
        └── model-file.gguf

②应用直接下载

可以在Discover选项卡中直接搜索并下载模型,LMStudio是通过HuggingFace,国内网络会连不上。

如果本地网络无法连接huggingface,可以将下载地址替换huggingface的国内镜像网络,借用IDE工具的全局替换能力,打开LM Studio.app

将关键字**huggingface.co替换成hf-mirror.com**,重启应用即可。

核心目的是将所有地址是https://huggingface.co替换成https://hf-mirror.com,Mac版本下主要是这两个文件,不过不同系统、版本的LM Studio可能有些不同,全局替换更稳妥

  • /Applications/LM\ Studio.app/Contents/Resources/app/.webpack/main/index.js
  • /Applications/LM\ Studio.app/Contents/Resources/app/.webpack/renderer/main_window.js

3.6.2.推理运行

在桌面应用程序中,将模型文件放入指定目标或下载模型后,可以直接选择模型使用。

另外将LM Studio作为本地部署服务使用,可通过API与模型交互,LM Studio支持三种模式:

  • OpenAI兼容模式
  • REST API模式
  • lmstudio.js客户端模式

3.7.其他工具与框架

除了上面提到的部署大模型的工具与框架,还有很多没有详细介绍到,目前整个生态呈现百花齐放且高速发展的阶段,每隔一段时间就会有新的应用出现。本地部署的还有下面几种方式:

  • TGI:huggingface推出的text generation inference(TGI),是一个用于文本生成推理的Rust/Python/gRPC服务,相比transformers,TGI使用方便且做了推理优化。在集成上兼容OpenAI的API,并支持量化与微调能力。
  • Dify:开源的低代码LLM应用开发平台,支持可视化构建AI应用,能集成本地知识库和插件,需要依赖后端模型服务如vLLM或Ollama
  • DeepSeed:微软的开源深度学习优化库,在深度优化硬件设备、操作系统、框架多个层面,利用模型和数据压缩技术,极大提升了推理和训练效率。

4.未来发展

本地部署大模型正在重塑人工智能应用的边界,从Ollama的极简交互到vLLM的高吞吐推理,从llama.cpp的跨硬件适配到transformers的全流程支持,各种部署方案为不同场景提供了灵活选择。这些技术不仅降低了AI应用的门槛,更是在保障数据隐私的同时,实现成本可控、实时响应、自主迭代的智能体验。

随着大模型的高速发展,各种技术能力的突破,硬件与框架的持续升级,在本地设备部署的大模型将会在越来越多的场景得到使用。当然,各种部署方式各有利弊,根据自己的场景选择合适的部署方式即可。

公众号:机智工坊
原文:汇总本地部署DeepSeek的N种方法

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐