模型训练指南三:PT训练指南
PT(增量预训练 ) 的本质是:在大模型已经具备通用能力的基础上,喂入大量行业文档、书籍或代码,让模型吸收新知识。
渲染中...
**增量预训练 (Continual Pre-training / PT)** 的本质是:在大模型已经具备通用能力的基础上,喂入大量行业文档、书籍或代码(Raw Text),通过 **Next Token Prediction** 任务让模型吸收新知识。
作为技术人员,你只需要记住:PT 是为了让模型在**非问答格式**的纯文本上,学习特定领域的**语言分布、专业术语和逻辑背景**。
## PT 数据准备(最底层的基础)
- **数据形态**:纯文本(Raw Text)。不需要 `instruction` 或 `output` 标签。
- **文件格式**:通常为 `.txt` 或 `.jsonl`(每行一个 `{"text": "..."}`)。
- **处理逻辑**:模型会通过“预测下一个 Token”来学习这些内容。
## 两种实操方案步骤
### 1. LLaMA-Factory
**适用场景**:有 GPU 环境,追求最高效率。
**步骤**:
1. **数据注册**:将文本放入 `data/`,在 `data/dataset_info.json` 里添加:
```JSON
"my_corpus": { "file_name": "your_data.jsonl", "columns": { "prompt": "text" } }
```
2. **编写 `pt_config.yaml`**:
```YAML
stage: pt # 关键:指定为预训练阶段
model_name_or_path: qwen/Qwen2.5-7B
dataset: my_corpus
finetuning_type: lora # 或 full(全量训练需要极高显存)
lora_target: all # 针对所有线性层,PT 建议全覆盖
cutoff_len: 1024 # 上下文截断长度
learning_rate: 1e-5 # PT 学习率一定要小
num_train_epochs: 1.0
output_dir: ./pt_output
```
3. **执行命令**:
```Bash
llamafactory-cli train pt_config.yaml
```
### 2. 自己写代码
基于 Transformers 库
**适用场景**:深度定制 Loss 或 Tokenizer。
**步骤**:
1. **加载模型**:使用 `AutoModelForCausalLM`。
2. **核心代码逻辑**:
```Python
from transformers import Trainer, TrainingArguments, DataCollatorForLanguageModeling
# 1. 准备数据整理器 (针对 PT)
# mlm=False 表示因果语言模型任务 (Next Token Prediction)
data_collator = DataCollatorForLanguageModeling(tokenizer, mlm=False)
# 2. 训练配置
training_args = TrainingArguments(
output_dir="./output",
per_device_train_batch_size=4,
learning_rate=1e-5,
weight_decay=0.01,
num_train_epochs=1,
save_steps=500
)
# 3. 启动训练
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset,
data_collator=data_collator,
)
trainer.train()
```
## PT 训练技术细节易错点
1. **学习率 (Learning Rate)**:PT 的学习率必须比 SFT 还要**低一个量级**(通常是 $10^{-5}$ 或 $10^{-6}$)。因为底座模型已经很强,大的学习率会摧毁它原本的逻辑能力。
2. **数据质量**:PT 极其吃数据质量。如果你的语料里包含大量重复、乱码或低质网页数据,模型会很快变得“降智”。
3. **关于 Ollama**:再次强调,**Ollama 是用来“跑”模型的,不是用来“练”模型的**。你通过上述方案 2 或 3 练出来的权重,导出为 GGUF 格式后,才能给 Ollama 用。
**总结建议:** 先用 **LLaMA-Factory** 跑通 PT,因为它集成了数据切片、模型加载和 LoRA 配置,是最不容易出错的方法。END
评论
登录后查看和发表评论
前往登录