Skip to content

完成 TinyInfiniTrain 全部作业与 A100 完整训练实验 - #11

Open
pikaxinge wants to merge 2 commits into
InfiniTensor:masterfrom
pikaxinge:submission
Open

完成 TinyInfiniTrain 全部作业与 A100 完整训练实验#11
pikaxinge wants to merge 2 commits into
InfiniTensor:masterfrom
pikaxinge:submission

Conversation

@pikaxinge

Copy link
Copy Markdown

概述

完成 TinyInfiniTrain 全部六项作业,并在不修改公开测试文件的前提下通过全部 8 个测试:

  • Neg autograd 前向与反向分发;
  • CPU/CUDA MatMul 前向、批量计算与反向传播;
  • CPU/CUDA Adam 参数与一、二阶矩更新;
  • Tensor Flatten、Backward 与子视图 offset 修正;
  • 保留真实函数签名的类型安全 Kernel Dispatcher;
  • Tiny Shakespeare 数据解析、Tokenizer 与确定性文本生成。

在基础作业之外,本提交增加了可中断续跑的 GPT-2 完整训练 runner、Adam checkpoint、early stopping、逐 step/epoch 指标、学习率对照实验和静态曲线生成脚本。

作业报告

报告逐题记录了对应测例、调用链、公式、边界检查、实现中解决的问题和验证结论,并将公开 test_gpt2 的短程轨迹验证与完整数据集训练实验明确分开。

测试结果

验证环境:GCC 13.4、CUDA 12.6、NVIDIA A100-SXM4-40GB。

验证项 结果
Neg / MatMul / Dispatcher / Tensor / Adam 定向测试 7/7 通过,6.32 s
test_gpt2 1/1 通过,52.51 s
Logits 校验 100 个采样点通过,绝对误差阈值 1e-3
全部公开测试 8/8 通过

测试中的固定 seed 生成文本以 The meaning of life is 开头。相对官方基线,test/.github/ 均无改动。

完整训练实验

模型从 GPT-2 124M 预训练权重开始,在完整 Tiny Shakespeare train/validation split 上使用 FP32 Adam 微调。训练覆盖 305,216 target tokens/epoch,验证覆盖 32,704 target tokens/次;所有分段运行均通过 checkpoint 连续恢复,逐 step 的 global step 无缺失、无重复。

基线 lr=1e-4 实验:

指标 结果
Early-stop epoch 4
Train loss(epoch 1 -> 4) 3.6451 -> 1.4092(下降 61.34%)
Best validation loss / PPL 3.9249 / 50.65(epoch 1)
Final validation loss / PPL 5.4255 / 227.13
累计训练吞吐 1,179.25 target tokens/s
CUDA async pool high-water 3,008,656,476 B(约 2.80 GiB)

训练 loss 持续下降而 validation loss 后期上升,表明数据集上出现过拟合,因此最终使用 best.ckpt,不把 early-stop 时的 final.ckpt 当作最佳模型。

同 seed、同数据顺序且只改变学习率的对照结果:

Learning rate Best epoch Best validation loss Best validation PPL
1e-4 1 3.9249 50.65
5e-5 2 3.8118 45.23
2e-5 2 3.7102 40.86

因此默认学习率更新为 2e-5,并保留 patience=3min_delta=0.005 的 early stopping。该对照为单 seed 配置选择实验,不声称跨 seed 统计显著性。

实验产物与复现

cuda_async_pool_peak_bytes 只表示 CUDA async default memory pool 的 high-water mark,不等价于整卡峰值显存。大型 checkpoint 未纳入 Git;仓库保留 CSV、JSON、曲线和固定 prompt 文本用于复核实验结论。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant