Skip to content

Latest commit

 

History

History
121 lines (94 loc) · 8.33 KB

File metadata and controls

121 lines (94 loc) · 8.33 KB

/work/paddle_tests里有语言模型的训练性能测试 e65bc72bb4eb8759e9dce6fe50919abd475d4389 1dff34c0b1fbde9e5f53e625c0fd31f838f2e548 这个目录是A100里跑的bert,6312个step python benchmark_train_full.py --model bert --cinn_mode both 直接跑上边这句python指令就是跑Bert SST-2 开CINN和不开CINN的都会跑到 cinn-training-benchmark/results_full目录下已经跑了Bert-base-uncased的全量loss曲线和400-500 step的loss曲线 我现在想跑下边这3个模型的400-500 step的loss曲线,和训练性能 Ernie-3.0-nano-zh GPT-2-medium Llama-2-7b-chat 跑出来的性能数据也补充到/work/PaddleX_QA_test_new_400-500/PaddleX_QA_test_llm_train_dy.csv和/work/PaddleX_QA_test_new_400-500/PaddleX_QA_test_llm_train_cinn.csv文件里 进展记录到/work/PaddleX_QA_test_new_400-500/PaddleX_QA_test_llm_train.md里

2026-06-28 进展记录

  • 已确认本任务是 LLM 训练性能测试,不写入推理 CSV。
  • 目标模型:Ernie-3.0-nano-zh、GPT-2-medium、Llama-2-7b-chat。
  • 根据 /work/paddle_tests/LLM_train_fullstep.md,Llama-2-7b-chat 训练用 Small Llama 168M 替代,避免 CINN OOM。
  • 输出要求:保留每 step 的 step,loss,step_time_ms CSV、stdout loss 变化日志、400-500 step loss 曲线,并汇总到 PaddleX_QA_test_llm_train_dy.csv / PaddleX_QA_test_llm_train_cinn.csv
  • 已启动后台训练任务:顺序运行 erniegpt2llama 的 500-step 训练(No-CINN + CINN),避免并发抢 GPU。
  • stdout/stderr 原始日志:/work/paddle_tests/llm_train_logs/llm_train_500steps_20260628.log,包含每 10 step 的 loss / avg_time / throughput 变化。
  • 运行时兼容处理:预加载标准库 typing,并在内存中补齐 aistudio_sdk.hub.download,不修改三方包源码。
  • 任务已完成:3 个模型 × 500 steps × 2 模式(No-CINN + CINN)全部跑通,结果如下。

2026-06-28 训练结果汇总

硬件:A100 GPU 框架:Paddle 3.5.0.dev20260526 / PaddleNLP 2.8.0 配置:batch_size=1, seq_len=128, steps=500, lr=1e-4

性能汇总(跳过前 10 步以排除 JIT 编译开销)

模型 No-CINN avg ips CINN avg ips Speedup (total) CINN Speedup @ 400-500 step
Ernie-3.0-nano-zh (17.9M) 97.6 samples/s 164.7 samples/s 1.69x 1.70x
GPT-2-medium (354.9M) 16.4 samples/s 24.4 samples/s 1.48x 1.68x
Small Llama 168M (替代 Llama-2-7b-chat) 26.3 samples/s 55.3 samples/s 2.10x 2.17x

ips = samples / second,batch_size=1,换算公式:ips = 1000 / step_time_ms。

Loss 收敛情况(No-CINN 和 CINN 完全一致)

模型 初始 loss step 400 loss step 500 loss
Ernie-3.0-nano-zh 0.6754 0.000561 0.000451
GPT-2-medium 0.4464 ~0 (收敛) ~0 (收敛)
Small Llama 168M 10.5442 0.000279 0.000224

GPT-2-medium loss 快速降到 ~0,因为训练数据为随机合成 token,模型快速记住了固定输入;loss 曲线形态正常,性能数据有效。

BERT SST-2 全量训练补充

BERT SST-2 来自 /work/paddle_tests/results_full,是真实 SST-2 数据集全量训练结果,配置为 batch_size=32、seq_len=128、epochs=3、steps=6312、lr=2e-5;与上面 3 个模型的 batch_size=1、500-step synthetic batch 配置不同,因此单独列出。

模型 No-CINN avg ips CINN avg ips Speedup (total) CINN Speedup @ 400-500 step No-CINN dev_acc CINN dev_acc
BERT-base-uncased SST-2 182.8 samples/s 198.8 samples/s 1.09x 1.09x 0.925459 0.928899

ips = batch_size × 1000 / step_time_ms = 32 × 1000 / step_time_ms。

指标 No-CINN CINN
step 0 train_loss 0.673346 0.673346
step 400 train_loss 0.449716 0.460620
step 500 train_loss 0.196355 0.197339
last step train_loss 0.006000 0.007912
best/dev acc 0.927752 / 0.925459 0.928899 / 0.928899
  • BERT 400-500 step delta loss = CINN - No-CINNmax_abs_delta=0.028724(step 428),共有 11 个点超过 1e-2 threshold。
  • BERT 相关文件:/work/paddle_tests/results_full/bert_sst2_{nocinn,cinn}_steps.csvbert_sst2_{nocinn,cinn}_summary.jsonbert_sst2_loss_compare_400_500.pngbert_sst2_compare_full.png

输出文件

文件 说明
PaddleX_QA_test_llm_train_dy.csv No-CINN 性能汇总(每 step CSV 路径、loss 变化、ms 指标)
PaddleX_QA_test_llm_train_cinn.csv CINN 性能汇总
/work/paddle_tests/results_full/bert_sst2_{nocinn,cinn}_steps.csv BERT SST-2 全量训练每 step loss+time 原始记录
/work/paddle_tests/results_full/bert_sst2_{nocinn,cinn}_summary.json BERT SST-2 全量训练 summary(dev_acc、last_step_time 等)
/work/paddle_tests/results_full/bert_sst2_loss_compare_400_500.png BERT SST-2 400-500 step loss + delta loss 曲线
/work/paddle_tests/ernie_3.0_nano_train_{nocinn,cinn}_500steps.csv Ernie 每 step loss+time 原始记录
/work/paddle_tests/gpt2_medium_train_{nocinn,cinn}_500steps.csv GPT-2 每 step loss+time 原始记录
/work/paddle_tests/llama2_train_{nocinn,cinn}_small_500steps.csv Small Llama 每 step loss+time 原始记录
/work/paddle_tests/llm_train_logs/llm_train_500steps_20260628.log 完整 stdout 训练日志(含每 10 step 打印)
/work/paddle_tests/{model}_train_loss_400_500.png 400-500 step loss 曲线对比图
/work/paddle_tests/{model}_train_loss_comparison.png 全量 0-500 step loss+时间对比图

400-500step loss曲线图。delta loss也需要画出来,delta loss 1e-2的threshold也需要标注出来,超出1e-2的点也需要标注出来

2026-06-28 Loss 曲线重画记录

  • 已按 BERT bert_sst2_loss_compare_400_500.png 的双子图风格重画 3 个模型的 400-500 step loss 曲线:左图为 CINN / No-CINN loss,右图为 delta loss = CINN - No-CINN
  • 已在 delta loss 子图标注 +1e-2 / -1e-2 threshold,并在图中标注是否存在 |delta loss| > 1e-2 的点。
  • 本次 3 个模型在 CSV 记录精度下 max_abs_delta=0,均无超出 1e-2 threshold 的点,因此图中标注为 No |delta loss| > 1e-2
  • Ernie-3.0-nano-zh 与 Small Llama 168M 的 No-CINN / CINN loss 完全重合,原因是脚本固定 seed、固定初始权重,并且 500 step 全程复用同一个 synthetic batch;这说明数值一致,不代表没有走 CINN。
  • GPT-2-medium 在 400-500 step loss 显示为 0,是因为 354M 参数模型对单个固定 synthetic batch 快速过拟合,loss 已下降到浮点显示精度接近 0;性能数据仍有效。

2026-06-28 nsys 验证记录

命令

nsys profile --trace=cuda -o ernie_{nocinn,cinn}_full_nsys \
    python nsys_train_kernel_probe.py --model ernie --mode {nocinn,cinn} --warmup 3 --profile_steps 2

结果

  • 采集成功(.nsys-rep 文件已生成),nsys 报告了一个 Data member NumTpcs was not initialized 的非致命错误,原因是本机 nsys 版本(2026.1.3,基于 CUDA 13.3 build)与 GPU 驱动(12.2)不完全匹配,导致 GPU TPC 拓扑信息缺失。这是环境问题,不影响 CUDA kernel trace 的有效性。

来自日志的关键证据(无需解析 .nsys-rep):

指标 No-CINN CINN
profile 2 steps elapsed 35.06 ms 14.86 ms
CINN 编译标志 add_cinn_pass.cc:334] Compiling subgraph with CINN backend
PIR 执行器启动 pir_interpreter.cc: New Executor is Running / trace mode
to_static_tmp 生成 paddle/to_static_tmp/ 中多个 forward 文件
  • CINN 模式日志中明确出现 add_cinn_pass.cc:334] Compiling subgraph with CINN backendpir_interpreter.cc: trace mode,确认走了 PIR 静态图 + CINN 后端;No-CINN 日志中这两行完全不出现。
  • 相同 5 step 区间的 elapsed 时间:CINN 14.86 ms vs No-CINN 35.06 ms(2.36x),与 500-step benchmark 的 1.69x speedup 数量级一致(短 step 区间因 GPU 缓存热效应会更高)。
  • .nsys-rep 文件已保存到 /work/paddle_tests/ernie_{nocinn,cinn}_full_nsys.nsys-rep,如需在 Nsight Systems GUI 打开查看 kernel timeline 可直接使用。