Skip to content

大模型训练与推理

大模型工具链可以拆成模型与数据、微调与分布式、推理与服务三层。先让最小模型和少量样本闭环,再引入量化、并行和高吞吐服务。

Transformers

Transformers 统一配置、Tokenizer、预训练模型和训练接口。加载模型时固定明确 revision,并记录模型 ID、Tokenizer、dtype 和生成参数;trust_remote_code 会执行仓库代码,只对可信来源启用。

python
from transformers import AutoTokenizer, AutoModelForCausalLM

name = 'organization/model'
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForCausalLM.from_pretrained(name, torch_dtype='auto')

比较结果时不要只记录模型名:同名仓库会更新,Chat template、特殊 Token 和截断策略也会改变输出。

Datasets

Datasets 支持本地文件、Hub 数据和流式读取。预处理函数应可重复、确定并保留原始 ID;map 后检查行数、字段、空样本和缓存是否符合预期。数据集脚本或远程代码与模型代码一样需要信任审查。

Accelerate

Accelerate 用统一入口准备模型、优化器和 DataLoader,并启动多进程或混合精度训练。它减少设备样板,但不会自动修复 batch size、梯度同步和指标聚合错误。保存和加载使用其分布式感知接口,启动配置进入项目记录。

PEFT

PEFT 通过 LoRA 等适配器只训练少量参数。必须记录 base model revision、Target modules、rank、alpha、dropout 和适配器权重。合并适配器后重新评估,不能假设数值和部署行为完全相同。

TRL

TRL 提供监督微调和多种偏好/强化学习训练器。不同算法依赖不同数据 Schema、参考模型和奖励定义;开始前先验证一条样本经过模板后实际送入模型的文本,并用人工可检查的小集合验证损失与奖励方向。

DeepSpeed

DeepSpeed 用 ZeRO、卸载和并行技术降低大模型训练资源压力。配置中的 stage、精度、batch 与累积步数必须和训练代码一致。先建立单卡基线,再开启一项优化并对齐损失与吞吐,否则很难定位通信、数值或保存问题。

vLLM

vLLM 面向高吞吐推理和模型服务,常用于提供兼容式 HTTP API。上线前验证模型架构、量化、并行、最大上下文和显存预算;吞吐与首 Token 延迟需要分别测量。对公网服务增加认证、限流、输入长度限制和请求日志脱敏。

Ollama 与 llama.cpp

Ollama 简化本地模型拉取、运行和 API 调用;llama.cpp 适合在 CPU、消费级 GPU 和多种平台运行 GGUF 量化模型。量化会改变速度、内存与质量,实验报告应记录格式和量化等级。

本地运行降低数据外发,但不等于没有风险:模型文件有来源与许可证,Prompt 和日志仍可能落盘,服务端口也不应默认暴露公网。

从微调到服务

  1. 固定模型、数据 revision 和模板。
  2. 小样本完成 Tokenize、前向、反向和保存。
  3. 选择全量或 PEFT,并建立可比较基线。
  4. 需要时再加入 Accelerate/DeepSpeed。
  5. 保存评估通过的模型与完整配置。
  6. 用 vLLM 或本地运行时部署,做正确性、并发和失败测试。

参考:TransformersDatasetsAcceleratePEFTTRLDeepSpeedvLLM