跳到正文
跟我做
开发者 AI 实战3 分钟Ollama

本地跑大模型前,先算清这台电脑够不够

一个不装依赖的 Node 脚本,读内存、CPU 和 NVIDIA 显卡,按 4-bit 量化给出 3B、7B、14B、32B 的选择建议,再决定要不要下载模型。

约 3 分钟
本页目录
  1. 这篇教程解决什么问题
  2. 先看这张表
  3. 写脚本
  4. 真实输出
  5. 怎么读结果
  6. 常见坑
  7. 1. 只看内存,不看显存
  8. 2. 一上来跑全精度
  9. 3. 同时开很多任务
  10. 4. 忽略上下文长度
  11. 下一步读什么

30 秒速查

  • 先看内存:8GB 选 3B,16GB 选 7B,32GB 再上 14B
  • 跑 node resources/ollama-hardware/check.mjs
  • 有 NVIDIA 显卡会快很多,但不是必需
  • 模型选 4-bit 量化,别一上来跑全精度

这篇教程解决什么问题

想在本机跑大模型,第一步通常不是装 Ollama,而是下载一个 5GB 的模型,跑到一半发现内存不够,或者慢到没法用。

这篇先不下载任何模型。用一个脚本读本机的内存、CPU 和 NVIDIA 显卡,按 4-bit 量化给出建议:能跑 3B、7B、14B 还是 32B,大概占多少空间。

先算清楚,再决定要不要下。

先看这张表

4-bit 量化是本地运行的常用档位,画质(效果)和占用比较平衡:

模型 大约占用 适合的机器
3B 2 GB 8 GB 内存,短文本
7B 4.5 GB 16 GB 内存,摘要/分类
14B 9 GB 32 GB 内存,长一点的文档
32B 20 GB 64 GB 内存或大显存

除了模型本身,还要给系统、上下文和软件留约 4 GB。16 GB 内存跑 14B,余量就很小了。

写脚本

保存为 resources/ollama-hardware/check.mjs:

import os from "node:os";
import path from "node:path";
import { spawnSync } from "node:child_process";
import { pathToFileURL } from "node:url";

// 看这台电脑适合跑多大的本地模型。只看内存和显卡,不启动模型。
// 4-bit 量化模型的大小是估算值,实际会因模型和量化方式略有差异。

const MODEL_SIZE = {
  "3B": "约 2 GB",
  "7B": "约 4.5 GB",
  "14B": "约 9 GB",
  "32B": "约 20 GB",
};

export function recommend({ totalMemGB, gpuGB = 0 }) {
  let models;

  if (totalMemGB < 8) {
    models = ["3B"];
  } else if (totalMemGB < 16) {
    models = ["7B"];
  } else if (totalMemGB < 32) {
    models = ["7B", "14B"];
  } else {
    models = ["14B", "32B"];
  }

  const sizes = models.map((name) => MODEL_SIZE[name]);
  const size = sizes.length === 1
    ? sizes[0]
    : `${sizes[0].replace(/^约 /, "").replace(" GB", "")}–${sizes[1].replace(/^约 /, "")}`;
  const hasGpu = gpuGB > 0;

  return {
    models,
    size,
    hasGpu,
    note:
      totalMemGB < 8
        ? "内存偏小,只适合短文本;长文档或批量任务建议用云端。"
        : hasGpu
          ? "有独立显卡,同样的模型会快很多。"
          : "没有独立显卡也能跑,只是速度慢一些。",
  };
}

export function detectGpu() {
  const result = spawnSync(
    "nvidia-smi",
    ["--query-gpu=name,memory.total", "--format=csv,noheader,nounits"],
    { encoding: "utf8" },
  );

  if (result.error || result.status !== 0) return null;

  const [name, memory] = result.stdout.trim().split("\n")[0].split(",");
  if (!name || !memory) return null;

  return { name: name.trim(), memoryMB: Number(memory.trim()) };
}

export function inspect() {
  const gpu = detectGpu();
  return {
    platform: os.platform(),
    arch: os.arch(),
    totalMemGB: os.totalmem() / 1024 ** 3,
    cores: os.cpus().length,
    cpu: os.cpus()[0]?.model ?? "未知",
    gpu,
  };
}

const isDirectRun =
  process.argv[1] &&
  pathToFileURL(path.resolve(process.argv[1])).href === import.meta.url;

if (isDirectRun) {
  const system = inspect();
  const plan = recommend({
    totalMemGB: system.totalMemGB,
    gpuGB: system.gpu ? system.gpu.memoryMB / 1024 : 0,
  });

  console.log(`系统:${system.platform} ${system.arch}`);
  console.log(`内存:${system.totalMemGB.toFixed(1)} GB`);
  console.log(`CPU:${system.cores} 核(${system.cpu})`);
  console.log(
    system.gpu
      ? `显卡:${system.gpu.name}(${Math.round(system.gpu.memoryMB / 1024)} GB)`
      : "显卡:未检测到 NVIDIA 显卡",
  );
  console.log(`建议:${plan.models.join(" 或 ")} 的 4-bit 量化模型`);
  console.log(`占用:${plan.size},另留 4 GB 给系统和上下文`);
  console.log(`说明:${plan.note}`);
}

脚本只做三件事:

  • 读 os.totalmem() 和 CPU 核数;
  • 尝试调用 nvidia-smi,没有就跳过;
  • 按内存分档,给出模型建议和占用估算。

不会启动 Ollama,也不会联网。

真实输出

在一台 23.3 GB 内存、8 核 CPU、没有 NVIDIA 显卡的 Linux 机器上跑:

node resources/ollama-hardware/check.mjs
系统:linux x64
内存:23.3 GB
CPU:8 核(11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz)
显卡:未检测到 NVIDIA 显卡
建议:7B 或 14B 的 4-bit 量化模型
占用:4.5–9 GB,另留 4 GB 给系统和上下文
说明:没有独立显卡也能跑,只是速度慢一些。

你的内存、CPU 和显卡会不同,看「建议」和「占用」两行就够。

怎么读结果

  • 内存 8 GB 以下:只建议 3B,或者直接用云端。硬跑 7B 会频繁换页,体验很差。
  • 16 GB 左右:7B 是甜点区,摘要、分类、打标签都能做;14B 会很紧。
  • 32 GB 以上:可以试 14B;有 24 GB 以上显存再考虑 32B。
  • 有 NVIDIA 显卡:同样的模型快很多,但显存不够时仍会退回内存,别只看显卡型号。

常见坑

1. 只看内存,不看显存

模型优先放显存。8 GB 显存跑 7B 的 4-bit 模型刚好;跑 14B 会 offload 到内存,速度掉一大截。

2. 一上来跑全精度

全精度 7B 要 28 GB 左右,不是普通笔记本能承受的。先跑 4-bit,够用再谈更大的模型。

3. 同时开很多任务

本地模型吃满内存和显存,并发设 1 到 2 就够。开两个批量任务,不如跑完一个再跑下一个。

4. 忽略上下文长度

上下文越长,占用越高。把上下文从 2K 拉到 32K,内存可能多吃几个 GB;先按默认值跑通。

下一步读什么

确认机器能跑,再去看断网也能批量处理:怎么用 Ollama 做摘要、分类、打标签,以及什么时候该换回云端。

模型和安装信息在 Ollama 工具页;这条路线收在本地 AI 工具箱。

常见问题

没有独立显卡能跑吗?

能。CPU 也能跑 7B 的 4-bit 模型,只是慢;先用短文本试,别一上来跑长文档或批量任务。

16GB 内存能跑 14B 吗?

很紧。14B 的 4-bit 模型约 9GB,加上系统和上下文容易爆内存;16GB 优先 7B,32GB 再考虑 14B。

脚本会启动 Ollama 或下载模型吗?

不会。它只读本机内存、CPU 和 NVIDIA 显卡,先判断值不值得下载;确认能跑再 ollama pull。

显存和内存有什么区别?

模型权重放在显存或内存里。显存不够时,Ollama 会把部分层放到内存,速度下降;内存不够则直接失败。

每周一张复习表

每周分享一张实用复习表,不收钱不打扰,想走随时走

邮箱存在 Cloudflare KV 里,只用来发每周更新;任何时候写信到hello@genwozuo.com说「退订」就删掉。详见隐私政策。

同方向继续

全部教程