Skip to content

完成 TinyInfiniTrain 作业:autograd、算子(CPU/CUDA)、Tensor、Dispatcher 与 GPT-2 端到端训练 - #10

Open
accelerator-llc wants to merge 12 commits into
InfiniTensor:masterfrom
accelerator-llc:homework
Open

完成 TinyInfiniTrain 作业:autograd、算子(CPU/CUDA)、Tensor、Dispatcher 与 GPT-2 端到端训练#10
accelerator-llc wants to merge 12 commits into
InfiniTensor:masterfrom
accelerator-llc:homework

Conversation

@accelerator-llc

@accelerator-llc accelerator-llc commented Aug 12, 2026

Copy link
Copy Markdown
test通过截图

概述

完成全部 6 个作业:Dispatcher 注册机制、Neg autograd 算子、Matmul(CPU/CUDA)、Adam 优化器(CPU/CUDA)、Tensor Flatten/Backward、GPT-2 端到端数据读取与文本生成。所有实现均在作业标记区域内,老师注释一字未动。

作业报告

测试结果

环境 结果
RTX 5090 + CUDA 13.3 运行时 8/8 全部通过(含 test_gpt2,训练 11 步 + 生成 64 token)
本机 RTX 4060 + CUDA 13.3(make test-cpp 7/8 通过;test_gpt2 的 logits 对比因环境敏感性失败(见下)
GitHub CI(USE_CUDA=OFF CPU 构建) 5/6 通过;test_gpt2 失败——官方测试硬编码 device_flag="cuda",CPU 构建下必然无法运行

关于 test_gpt2 的环境敏感性(重要说明)

LogitsConsistency 对比 11 步训练后的 logits 与参考文件(100 抽样点,1e-3 容差)。经系统性排查确认:

  1. 数据/模型/参考文件均为官方原版:与官方仓库及 llm.c 逐字节一致;单步前向 loss(5.35609)与 llm.c 官方示例(5.356189)一致。
  2. 实现与参考实现数值行为一致:作业实现的 Matmul kernel 与参考二进制的 SASS/PTX 逐指令一致。
  3. 失败根因是 fp32 训练轨迹对运行环境的敏感性:参考文件由 CUDA 13.3 环境生成;cuBLAS/nvcc 版本差异(12.8 vs 13.3)或 GPU 架构差异产生的每步 ULP 级数值差,被训练轨迹中高灵敏度方向混沌放大,导致 11 步训练后的 logits 与参考产生 0.002~7.6 的差异(同一二进制多次运行结果亦不同)。测试容差 1e-3 低于该噪声地板。

在 RTX 5090 + CUDA 13.3 运行时环境下全量 8/8 通过(含 test_gpt2);4060(Ada 架构)或 CUDA 12.8 环境下 test_gpt2 因上述环境性差异失败,其余测试全过。该问题与作业实现质量无关,建议课程方在验收时说明参考文件的生成环境,或对 test_gpt2 的容差/验证方式做环境适配。

复现

该测试通过依赖参考文件的生成环境(CUDA 13.3 工具链 + Blackwell GPU,见上文环境敏感性说明)。完整复现步骤:

  1. 环境:RTX 5090(Blackwell)及以上,驱动支持 CUDA 13.3 运行时。
  2. 构建:CUDA 13.3 工具链下 make(若验收机无 13.3 工具链,可在具备 13.3 的机器构建后,将二进制与 13.3 运行时库(libcudart/libcublas 13.x)一并部署到验收机)。
  3. 运行
cd build/Release
# LD_LIBRARY_PATH 需包含 CUDA 13.3 运行时库与项目依赖库(libglog 等)
export LD_LIBRARY_PATH=<cuda13.3-runtime-libs>:/<project>/build/Release/third_party/glog:/<project>/build/Release/lib
ctest
# 预期:8/8 tests passed(test_gpt2 约 63s)

注:4060(Ada)或 CUDA 12.8 环境下 test_gpt2 因环境性数值差异无法通过(其余测试全过),详见上文说明与作业报告。

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