本地 AI 模型选择不能只看参数量,也不能把“模型文件小于显存”直接当作一定流畅。运行时还需要上下文和其他开销,电脑也要给系统与软件留空间。本文教你用同一套任务比较两个候选模型,记录冷启动、生成速度和答案质量,适合准备让旧电脑继续发挥作用的用户。

一、先记录机器,不急着下载最大的模型
在任务管理器查看物理内存、独立 GPU 显存和空闲磁盘。共享 GPU 内存不等同于显卡自己的独立显存。记录 CPU、显卡、驱动、Ollama 版本与正在运行的软件,后续对比才有意义。
一般可以从较小的量化模型开始验证用途,但本文不提供“一定能跑”的容量对照表。模型架构、量化方式、上下文长度、并发与后端支持,都会改变实际占用。
二、为模型准备三个真实任务
选你经常做的事,而不是只问“介绍一下自己”。建议包含一个摘要、一个结构化提取和一个无答案问题。每条事先写好验收标准,例如摘要不超过 100 字,提取保留全部日期,未提供的信息必须标记未知。
测试A:把一段300字笔记整理成3项行动,不新增责任人。
测试B:从演示订单提取编号与金额,保留前导零。
测试C:资料没有写保修时间,要求回答“未说明”。
每个任务用同样输入和同样输出长度限制。
模型越大不一定越适合这些任务。一个更快、错误更少的小模型,可能比一个需要长时间换页的大模型更实用。
三、检查模型实际上跑在哪里
ollama --version
ollama list
ollama ps
ollama ps 可以显示当前已加载模型及 CPU/GPU 使用分配。模型没有加载时列表可能为空;先发一个请求再看。不要只凭“电脑有独显”就认定模型已经使用 GPU。
四、用 PowerShell 记录一次生成
把 model 改成已经下载的候选模型名,prompt 改成固定测试输入。以下测试通过本机 API 运行,输出指标用于相对比较。
$body = @{
model = 'qwen2.5:3b'
prompt = '只根据资料回答:设备每周六备份。问题:保修几年?资料没有写就回答未说明。'
stream = $false
options = @{ temperature = 0; num_predict = 128; num_ctx = 4096 }
} | ConvertTo-Json -Depth 5
$timer = [Diagnostics.Stopwatch]::StartNew()
$r = Invoke-RestMethod -Method Post -Uri 'http://127.0.0.1:11434/api/generate' -ContentType 'application/json; charset=utf-8' -Body ([Text.Encoding]::UTF8.GetBytes($body)) -TimeoutSec 300
$timer.Stop()
$rate = if ($r.eval_duration -gt 0) { $r.eval_count / ($r.eval_duration / 1e9) } else { 0 }
[pscustomobject]@{
Model = $r.model
WallSeconds = [math]::Round($timer.Elapsed.TotalSeconds, 2)
LoadSeconds = [math]::Round($r.load_duration / 1e9, 2)
OutputTokensPerSecond = [math]::Round($rate, 2)
Answer = $r.response
}
eval_duration 等时长字段按接口说明为纳秒。输出 token/s 是生成阶段的指标,不代表整次请求时延,也不等于汉字每秒。首字延迟需要流式测量,不能从这里的总耗时直接推出。
五、分开测冷启动与连续使用
首次请求可能包含模型加载;紧接着重复请求主要反映已加载状态。分别记录,不要把一台机器的冷启动与另一台的热运行放在同一列比较。测试期间尽量关闭不必要的大型应用。
每个任务至少重复几次,记录中位耗时和错误数量。速度快但把未知信息编成确定答案,不能算通过。中文、代码和长文任务也应分别测试,避免用一种能力代表全部用途。
六、常见问题与排错
模型能运行,但电脑变得很卡?
查看系统内存和磁盘占用,可能在频繁换页。先降低模型体量、上下文与并发,再考虑硬件升级。
显存够,为什么仍然溢出?
模型文件不是全部运行占用。长上下文、其他模型和图形程序都会争用资源;一次只改一个变量比较。
要不要追着新模型换?
保留一套固定任务。新模型确实提高了正确率或减少耗时再迁移,并保留原模型方便回退。
相关资料见 Ollama FAQ与运行模型接口。下一步可用小型评测集把选择过程固定下来。