Fineweb-代码-SEC训练流水线 | AI生成和翻译

首页 2026.07

综合摘要 — code-sec-fineweb 项目

我们构建了什么

一个完整的训练流水线:原始数据 → 预训练模型 → SFT 微调。

阶段 1:数据流水线 — /mnt/data/zz/prepare_data.sh

数据集 来源 格式 大小 目的
github-code codeparrot/github-code(1126 分片中的 38 个) Parquet,content 列 → 转换为 text 11 GB 代码理解(Python、JS、Go 等)
sec-edgar SEC 10-K 申报文件(17 个文件) Parquet,提取 text 2.6 GB 金融文档理解
fineweb-edu HuggingFaceFW/fineweb-edu(9 个分片) Parquet,text 20 GB 通用网络文本知识
合并后 所有 3 个数据集通过符号链接放入同一目录 64 个 Parquet 文件(63 个训练 + 1 个验证) 34 GB 混合训练数据

转换脚本:

阶段 2:预训练 — 在 RTX 4070 上耗时 16.5 小时

bash /mnt/data/zz/fineweb-code-sec-gpt.sh

模型: d12(286M 参数),n_embd=768,n_head=6,seq_len=2048,window=L

训练进度:

Step   5000 | val_bpb: 1.680 | loss: 1.397 | 1.6h
Step  25000 | val_bpb: 1.568 | loss: 1.136 | 8.2h
Step  50000 | val_bpb: 1.418 | loss: 1.062 | 16.5h

检查点:/home/lzw/.cache/nanochat/base_checkpoints/d12/(每 5k 步,每个 793MB)

阶段 3:SFT 微调 — 正在运行

bash /mnt/data/zz/fineweb-code-sec-gpt/sft_code_sec.sh

基础模型: d12 step 50k → 在对话数据上微调

SFT 数据混合(1,071,759 行):

数据集 行数 目的
SmolTalk 460K 通用对话
MMLU x3 300K 多项选择推理
SimpleSpelling 200K 拼写任务
SpellingBee 80K 字母计数
GSM8K x4 32K 数学应用题
Identity 1K 模型身份/人格
自定义代码+SEC 1K 我们精选的代码和 SEC 对话

自定义数据格式(prepare_sft_data.py):

# JSONL 每行:
[{"role":"user","content":"写一个 Python 函数..."},
 {"role":"assistant","content":"def fibonacci(n):..."}]

SFT 使用 loss 掩码 — 仅训练 assistant token(mask=1),user/BOS/工具输出被忽略(mask=0)。对话格式使用特殊 token:<|user_start|><|user_end|><|assistant_start|><|assistant_end|>

SFT 状态:Step 1,591 / ~9,000(17.7%)

Loss: 1.47(从 2.4 下降 → 表明模型正在学习对话格式)
速度:51,450 tok/s,1.27s/step
运行时间:已过 33 分钟,完成一个 epoch 还需约 2.5 小时

第一次验证评估在 step 500(尚未达到 — eval-every=500)。检查点保存到 ~/.cache/nanochat/chatsft_checkpoints/d12/

待完成事项

  1. SFT 完成 — 完整 epoch 将在约 2.5 小时内结束
  2. 测试生成 — 运行 run_prompts.py --step=<sft_step> 比较预训练模型与 SFT 模型的质量
  3. GGUF 导出 — 转换为 GGUF 格式用于 llama.cpp 服务

/mnt/data/zz/ 中的脚本

fineweb-code-sec-gpt.sh        # 预训练(50k 步)
prepare_data.sh                # 完整数据流水线
train_log.sh                   # 监控工具

fineweb-code-sec-gpt/
  prepare_sft_data.py          # 创建 1000 条代码+SEC 对话 JSONL
  sft_code_sec.sh              # SFT 微调
  run_prompts.py               # 从任意检查点生成样本
  prompt_*.txt                 # 13 个测试提示(代码/SEC/通用)
  results.txt                  # 生成结果(预训练模型)

AI生成和翻译,但整理分享仍需精力。如果觉得有帮助,欢迎 捐助支持。 微信:@lzwjavaWeChat QR · X: @lzwjava · 打个招呼 👋

返回 捐助