收尾复盘

全专栏的决策速查、常见错误索引,以及一条从零开始的完整路径。

作者 David更新于 第 19 篇(共 19 篇)

三条主线

整个专栏其实只在回答三个问题:

① 怎么把模型拿到手     → 格式怎么选、从哪下、国内怎么办
② 怎么让它跑起来       → 显存够不够、用哪套推理栈
③ 怎么让它变成我的     → 数据怎么整、怎么微调、怎么发布

决策速查

下载

国内?        → HF_ENDPOINT=https://hf-mirror.com,或用 ModelScope
只要权重?     → allow_patterns=["*.safetensors","*.json","*.model","*.txt"]
GGUF 仓库?    → 必须 --include 指定量化档,否则全下
要部署/进容器? → --local-dir,别用缓存(符号链接跨层易断)
生产环境?     → 钉 commit hash,不用分支名

选模型

显存 4G   → 4B int4,或纯 CPU 走 GGUF
显存 8G   → 8B Q4_K_M / AWQ        ← 最常见
显存 12G  → 8B int8,可开始 QLoRA 微调
显存 16G  → 8B bf16,QLoRA 微调舒服
显存 24G  → 32B int4,或 14B 微调   ← 甜点
纯 CPU    → 16G 内存跑 8B Q4,约 5~10 token/s

同显存下优先「大模型 + 重量化」。

部署

单人本地用       → Ollama
没有 N 卡 / Mac  → llama.cpp(-ngl 按显存调)
要接进 Python    → transformers(torch_dtype="auto" 必写)
有并发、要吞吐    → vLLM(--max-model-len 别用模型上限)

训练

想让模型「知道」内容    → RAG,不是微调
想让模型「按某种方式说」 → LoRA
显存 12~16G           → QLoRA(4bit 基座)
起手参数              → r=16, alpha=32, lr=2e-4, target_modules="all-linear"
数据量                → 先 500~1000 条精数据,别一上来堆 10 万
epoch                → 数据越少轮数越少,500 条跑 1~2 轮

常见错误索引

按出现频率排。这张表是整个专栏最实用的部分——遇到问题先在这里找。

症状原因在哪一章
8B 模型占了 32 G 显存没写 torch_dtype="auto",默认 fp32transformers
模型答非所问 / 输出乱没用 apply_chat_templatetransformers
输出里带着自己的提问忘了切 inputs.input_ids.shape[1]:transformers
模型停不下来一直生成eos_token_id 不对,漏下 generation_config.json仓库结构
下载 401gated 模型没在网页同意条款认识 Hub
设了镜像还连官方os.environ 写在 import 之后国内访问
下了几十 G 用不上的东西GGUF 仓库没加 --include下载
加载报「找不到文件」漏下 model.safetensors.index.json仓库结构
模型「忘了」前面的对话Ollama 默认上下文只有 4096GGUF 路线
vLLM 启动就 OOM--max-model-len 用了模型上限vLLM
聊长了就 OOMKV cache 随上下文增长选模型
map 里报类型错误batched=True 时收到的是列的字典datasets
训练 loss 掉到 0数据重复 / 过拟合 / 泄漏训练实操
训到一半 OOM某几条超长样本训练实操
微调后通用能力变差灾难性遗忘训练实操
别人下了模型用不了忘传 tokenizer推回 Hub
「这月账单怎么这么多」忘删的 Endpoint / GPU Space收费版

一条从零开始的完整路径

如果你想把整个流程走一遍,这是最短的可行序列:

① 环境(10 分钟)

export HF_HOME=/data/hf                        # 别撑满系统盘
export HF_ENDPOINT=https://hf-mirror.com       # 国内
pip install -U huggingface_hub transformers torch accelerate

② 跑通一个小模型(10 分钟)

ollama run qwen3:4b

先确认「模型能在我机器上跑」这件事,再谈别的。

③ 接进代码(20 分钟)

用 transformers 那一章的最小例子,跑通 apply_chat_template + generate + 切输出。

④ 准备 200 条数据(半天)

按做数据集的对话格式,先做 200 条——不是 2 万条。人工过一遍。

⑤ 跑通训练(1 小时)

用微调那一章的脚本,先 max_steps=10 跑通,再放开。

⑥ 验收(1 小时)

准备 20 条训练集外的输入,训练前后对比。再测几条无关问题,确认没训傻。

⑦ 发布(20 分钟)

push_to_hub(private=True),写清 base_model 与已知局限,从零加载验证一遍。

整条路径一天之内能走完,前提是每一步都用小规模。

最常见的失败模式是「第四步就做了 2 万条数据、第五步直接全量训」——出了问题根本不知道是哪一环的锅。

小步快跑,每步都验证,比一次做对更快。

几条不随版本变化的经验

① 先跑通,再跑好。 小模型、小数据、少步数把全链路打通,再逐项放大。

② 质量比数量重要。 1000 条精数据胜过 10 万条粗数据——尤其对 LoRA。

③ 效果不好先看数据。 顺序是数据 → 超参 → 模型规模,不是反过来。

④ 微调不灌知识。 要模型「知道」什么,用 RAG;微调是教它「怎么说」。

⑤ 量化的性价比被低估。 4bit 让硬件门槛直接降一档,质量损失通常可接受。

⑥ 很多任务不需要 LLM。 分类、NER、语义匹配,几百 MB 的小模型又快又稳。

⑦ 定期清理花钱的资源。 这一条省下的钱,往往比所有技术优化加起来还多。

继续往下走

想深入去哪
Transformer 到底怎么工作的《AI 大模型解构》
从零实现一个 GPT《nanoGPT 源码解读》
PyTorch 底层机制《PyTorch 源码漫游》
从比特到 AGI 的完整路径《从 Bit 到 AGI》
把模型接成 Agent《从 LLM 到 Coding Agent》

官方资源:


回到专栏首页可查任意章节。

这个专栏讲的所有东西,本质上只是让你能自由地取用别人的成果、再把自己的东西还回去。 Hub 上那上百万个模型,每一个都是有人训完传上来的——你也可以是其中之一。

本页目录