Tokenizer 与模型
Pipeline 够用之后,下一步是拆开 Preprocessor 与 PreTrainedModel。几乎所有检查点都通过 AutoClass + from_pretrained 加载。
AutoClass 怎么选
config.json 里的 model_type 决定具体子类(如 DistilBertForSequenceClassification)。你不必记住类名。
编码与解码
要点:
input_ids:词表下标,模型真正吃的整数序列。attention_mask:1为有效 token,0为 pad,避免 pad 参与注意力。return_tensors="pt":直接得到 PyTorch 张量(基础见 PyTorch 教程)。- DistilBERT 会加
[CLS]/[SEP];GPT 类通常只有 BOS/EOS 或甚至没有。
批处理要设 padding,并保证 pad token 存在:
前向计算 vs 生成
分类头吃 tokenizer 输出,取 logits:
因果 LM 用 generate()(下一章),不要只跑一次 forward 就当「写完了文章」。
指令模型与 chat template
Qwen/Qwen2.5-0.5B-Instruct 这类模型必须走 apply_chat_template,不能把用户句子当纯续写:
模板写在 Tokenizer 配置里,换模型不要手抄 Qwen 的标记去套 DeepSeek。
保存与三类文件
对应官方三件套:PreTrainedConfig、PreTrainedModel、Preprocessor。之后 from_pretrained(save_dir) 即可离线加载。