从零构建大模型:从预训练到 RLHF 的完整实践
Cortex 是一个致力于让个人开发者也能承担训练成本的 LLM 项目。本项目实现了从零开始构建大模型的全过程,代码完全开源且解耦。
/think和/no think标签选择开启/关闭思考模式。/think和/no think标签控制是否开启思考。访问 ModelScope 创空间直接体验模型效果:
环境准备:确保 Python >= 3.10。
获取代码:
git clone https://github.com/qibin0506/Cortex.git
cd Cortex
安装依赖:
pip3 install -r requirements.txt
启动服务:
python3 app.py
首次运行将自动下载模型文件,启动后访问 http://0.0.0.0:8080/ 即可体验。
训练过程分为四个主要阶段,请按顺序执行。
| 阶段 | 脚本 | 上下文 | 目标与说明 |
|---|---|---|---|
| I. Pretrain | train_pretrain.py |
512 | 基础知识学习。 |
| II. Midtrain | train_midtrain.py |
2048 | 长文本适应。 |
| III. SFT | train_sft.py |
2048 | 对话能力赋予。 |
| IV. DPO/PPO | train_dpo.py / train_ppo.py |
2048 | 人类偏好对齐。 |
监控:日志位于 ./log 目录。
vis_log ./log/log.txtvis_lr ./log/lr.txtCheckpoint 转换:每个阶段结束后,DeepSpeed 的 Checkpoint 需要转换为标准 bin 文件以便下一阶段加载。
# 1. 开始训练
smart_train train_pretrain.py
# 2. 转换权重 (训练完成后执行)
cd ./ckpt_dir
python3 zero_to_fp32.py ./ ../
cd ..
mv pytorch_model.bin last_checkpoint.bin
# 3. 清理
rm -rf ./ckpt_dir ./log
Pretrain 指标预览
# 1. 开始训练 (自动加载 last_checkpoint.bin)
smart_train train_midtrain.py
# 2. 转换权重
cd ./ckpt_dir
python3 zero_to_fp32.py ./ ../
cd ..
mv pytorch_model.bin last_checkpoint.bin
# 3. 清理
rm -rf ./ckpt_dir ./log
Midtrain 指标预览
# 1. 开始训练
smart_train train_sft.py
# 2. 转换权重并归档
cd ./ckpt_dir
python3 zero_to_fp32.py ./ ../
cd ..
mv pytorch_model.bin last_checkpoint.bin
cp last_checkpoint.bin sft.bin
# 3. 清理
rm -rf ./ckpt_dir ./log
SFT 指标预览
# 1. 开始训练
smart_train train_ppo.py
# 2. 转换权重
cd ./ckpt_dir
python3 zero_to_fp32.py ./ ../
cd ..
mv pytorch_model.bin dpo.bin
# 3. 清理
rm -rf ./ckpt_dir ./log
DPO 指标预览
JUDGE_API_KEY(必选)、JUDGE_BASE_URL(可选,默认为siliconflow.cn)、JUDGE_MODEL(可选,默认为DeepSeek-V3.2)选择适合自己的LLM作为奖励模型。
注意:如果JUDGE_BASE_URL、JUDGE_MODEL选择默认,JUDGE_API_KEY需要去siliconflow申请,具体方式请参考官网。# 1. 开始训练
smart_train train_ppo.py
# 2. 转换权重
cd ./ckpt_dir
python3 zero_to_fp32.py ./ ../
cd ..
mv pytorch_model.bin ppo.bin
# 3. 清理
rm -rf ./ckpt_dir ./log
# 4. 提取最终策略模型 (Policy)
# ppo.bin 包含 policy 和 value,需提取供推理使用
python3 extract_ppo_result.py
# 输出: ppo_policy.bin
PPO 指标预览
暂无开放 Issues,或尚未同步最近议题。