用过云端大模型的人,大概都撞过两堵墙:一是账单——哪怕用最便宜的 DeepSeek,持续调用也是一笔固定支出;二是隐私——有些资料、有些数据,你并不想让它走出自己的电脑。
于是问题自然浮现:能不能把大模型搬回本地,自己跑?
第一是成本。 上云再便宜,也是持续的支出;本地一次投入硬件,之后调用几乎零边际成本。
第二是安全。 本地的一些资料、内容,本来就不便公开分享。数据不出本机,就是最彻底的「不外传」。
第三是开放。 有些时候,我们想利用大语言模型没有围栏的那些特性,让它的输出尺度更宽、内容更开放。这一点,云端服务很难满足。
除此之外,从工程角度看,使用本地的模型既可以作为断网情况下的一种保障方案,也可以在不改变工作流程的情况下,把本地模型作为一个测试开发环境。
本地跑大模型的第一个坎,是内存。
大模型最初是用 16 位浮点数训练的。一个 70 亿参数(7B)的 16 位模型,光是加载进内存,就要大约 14GB。
所以你在下载模型时,会看到 Q4_K_M、Q8_0 这样的标签——这就是量化。Q4 把权重压缩到 4 位,内存需求直接减半甚至更多。还是那个 7B 模型,它的 Q4_K_M 版本,只需要约 4.5GB 的 RAM。
量化通过牺牲部分精度,换取了将大模型部署在普通电脑上的可能。虽然模型在准确性上,和云上的所谓“满血版”相比,会稍有折扣,但在本地场景下完全具备实用价值。
技术上的可行,不代表日常的可用。在本地开始使用某个大语言模型之前,建议先进行基准测试。在本地机器上运行以下脚本,若聊天模型的每秒词元数(Tokens/sec)低于 15,则建议更换更小的模型或更高的量化级别。运行该脚本后,将输出首个词元延迟(TTFT)、总词元数以及每秒词元数:
import time
from ollama import chat
PROMPT = "Write a Python class that implements a thread-safe LRU cache."
start = time.perf_counter()
token_count = 0
stream = chat(
# model="qwen2.5-coder:7b",
model="deepseek-r1:latest",
messages=[{"role": "user", "content": PROMPT}],
stream=True,
)
first_token_time = None
for chunk in stream:
content = chunk["message"]["content"]
if content:
if first_token_time is None:
first_token_time = time.perf_counter()
token_count += 1
print(content, end="", flush=True)
elapsed = time.perf_counter() - start
ttft = (first_token_time - start) if first_token_time else 0
print(f"\n\n--- Benchmark ---")
print(f"Time to first token : {ttft:.2f}s")
print(f"Total tokens : {token_count}")
print(f"Total time : {elapsed:.2f}s")
print(f"Tokens/sec : {token_count / elapsed:.1f}")
除了使用脚本的方式,还可以通过 Cherry Studio 加载本地模型,来查看模型的基准测试效果。


在众多推理工具中,LM Studio 和 Ollama 的底层引擎均基于 llama.cpp。
目前,Ollama 是大多数开发者的首选。它将复杂的推理引擎封装成一个简单的命令行工具。
Ollama 提供了与 OpenAI 兼容的 API 接口。这意味着,原本为云端模型编写的脚本或框架,只需更改 Base URL 即可直接无缝对接本地模型。
from openai import OpenAI
# Point the standard OpenAI client at your local Ollama instance
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama", # required by the SDK but not validated
)
response = client.chat.completions.create(
model="qwen3-coder:30b",
messages=[
{"role": "user", "content": "Explain the difference between a mutex and a semaphore."},
],
)
print(response.choices[0].message.content)
此外,Ollama 也支持在命令行窗口中直接交互:
ollama run qwen2.5-coder:7b
ollama launch codex --model qwen2.5-coder:7b
最后,Ollama还可以和图形化界面(Cherry Studio)结合使用。
通过Cherry Studio的模型服务,在 Ollama 配置页面添加对应的模型,即可实现直观的本地可视化交互与管理。
