tinygrad 复现 MLPerf Training v5.1 BERT 基准:tinybox_green 平台全流程实战指南

发布时间:2026/9/10 12:07:35

tinygrad 复现 MLPerf Training v5.1 BERT 基准:tinybox_green 平台全流程实战指南 tinygrad 复现 MLPerf Training v5.1 BERT 基准tinybox_green 平台全流程实战指南【免费下载链接】tinygradYou like pytorch? You like micrograd? You love tinygrad! ❤️项目地址: https://gitcode.com/GitHub_Trending/tiny/tinygrad本文以 tinygrad 仓库中 MLPerf Training v5.1 提交training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/README.md为核心完整讲解在 tinybox_green 上从零搭建 BERTNLP 预训练基准测试的依赖安装、Wikipedia 数据集下载与预处理、基准运行与日志输出的全过程。读完本文你将掌握该提交的完整复现步骤、run_and_time.sh中每个关键环境变量的作用以及底层训练脚本 model_train.py 中 LAMB 优化器、warmup 调度与梯度裁剪的实现细节。一、基准任务概览用 tinygrad 训练 BERT该 README 是 tinygrad 为 MLPerf Training 提交v5.1 目录下中BERT 基准Problem: BERT for NLP提供的运行说明。MLPerf BERT 任务本质是BERT 预训练masked language modeling next sentence prediction模型需要从 Wikipedia 语料中学习语言表征最终以 masked LM 与 next-sentence 两个任务的准确率作为质量指标。在 model_train.py 的train_bert()中默认质量目标为TARGET0.72对应masked_lm_accuracy seq_relationship_accuracy的合成指标源码见 L1006训练默认步数为TRAIN_STEPS 3600000 // GBS约 360 万样本等效训练使用LAMB 优化器、PolynomialDecayWithWarmup 学习率调度和全局梯度范数裁剪global_norm 1.0时缩放到 1.0见 L1122-L1128。整个训练循环被TinyJit编译保证多 GPU 数据并行下的单步开销可控。二、环境准备安装 tinygrad 与 mlperf-loggingREADME 明确要求从mlperf_training_v5.0分支安装 tinygrad并启用mlperf可选依赖其中包含 mlperf-logginggit clone tinygrad 仓库地址 python3 -m pip install -e .[mlperf]-e表示可编辑安装便于在源码上直接改动调试.[mlperf]触发 pyproject.toml 中定义的 mlperf 扩展依赖安装后model_train.py才能from mlperf_logging import mllog见 model_train.py安装前需按 README 提示取消 setup.py 中 mlperf 依赖的注释确保mlperf_logging包被正确引入。此外还需安装数据处理相关的 Python 包pip install gdown numpy tqdm tensorflow依赖用途gdown从 Google Drive 下载 Wikipedia 2020 数据集与 BERT 初始权重见 wikipedia_download.pynumpy预处理脚本中的数组运算与特征拼装tqdm下载、解压与训练/验证循环的进度条tensorflow加载 BERT 预训练 checkpointmodel.ckpt-28252权重tinybox_green 硬件前提P2P 驱动README 单独强调了 tinybox_green 平台需要安装P2P 内核驱动支持 GPU 间 peer-to-peer 直接通信避免数据绕经主机内存并注明这是生产环境 tinybox green 的默认配置。若在非默认环境复现需按官方驱动说明安装后再运行基准否则多卡GPUS6数据并行训练中的张量分片t.shard_(GPUS, axis0)性能会明显受损。三、数据集准备下载、校验与预处理3.1 下载原始数据使用 tinygrad 自带的下载脚本从 Google Drive 拉取 2020 Wikipedia 语料与 MLCommons 参考实现使用的数据集一致BASEDIR/raid/datasets/wiki WIKI_TRAIN1 VERIFY_CHECKSUM1 python3 extra/datasets/wikipedia_download.py该命令的关键环境变量BASEDIR数据集根目录README 统一约定为/raid/datasets/wikiWIKI_TRAIN1除 BERT 配置、vocab 与初始 checkpoint 外额外下载results_text.tar.gz训练语料见 wikipedia_download.pyVERIFY_CHECKSUM1解压后对照bert_reference_results_text_md5.txt对每个文件做MD5 校验任一文件不匹配即抛出ValueError见 wikipedia_download.py。3.2 预处理训练数据BASEDIR/raid/datasets/wiki NUM_WORKERS16 python3 extra/datasets/wikipedia.py pre-train allpre-train all对所有 500 个主题执行预训练样本生成NUM_WORKERS16并行预处理线程数。README 特别给出内存约束预处理的线程数受可用内存限制128GB RAM 环境下最多建议 16 线程。如需只生成某个主题取值范围 0 到 499BASEDIR/raid/datasets/wiki python3 extra/datasets/wikipedia.py pre-train 423.3 预处理验证数据BASEDIR/raid/datasets/wiki python3 extra/datasets/wikipedia.py pre-eval该步骤生成与官方验证集对应的预训练特征供 model_train.py 中的batch_load_val_bert使用。预处理脚本本身还支持一组可调环境变量见 wikipedia.py环境变量作用默认语义MAX_SEQ_LENGTH最大序列长度对应训练配置 512MAX_PREDICTIONS_PER_SEQ每条序列最大 masked LM 预测数对应 76RANDOM_SEED随机种子保证掩码可复现DUPE_FACTOR同一数据用不同掩码重复的次数数据增强MASKED_LM_PROB掩码概率官方默认 0.15SHORT_SEQ_PROB短序列采样概率提高训练稳定性脚本内置了完整的 BERT tokenization 流程whitespace / wordpiece / 中文分字 / 标点切分 / 去除控制字符等见 wikipedia.py是对 MLCommonscreate_pretraining_data.py的 tinygrad 化移植。四、运行基准run_and_time.sh 逐行拆解README 给出的运行方式为执行实现目录下的启动脚本。注意README 正文书写的是 v5.0 路径当前仓库 v5.1 提交中实际文件位于 tinybox_green/run_and_time.sh直接执行bash examples/mlperf/training_submission_v5.1/tinycorp/benchmarks/bert/implementations/tinybox_green/run_and_time.sh脚本会经历两个阶段init初始化/预编译与run正式计时运行并将输出同时写入时间戳命名的日志文件# init BENCHMARK10 INITMLPERF1 BERT_LAYERS2 python3 examples/mlperf/model_train.py | tee $LOGFILE # run PARALLEL0 RUNMLPERF1 python3 examples/mlperf/model_train.py | tee -a $LOGFILE4.1 关键环境变量一览tinybox_green以下变量全部来自 tinybox_green/run_and_time.sh与 model_train.py 中的getenv读取一一对应环境变量取值含义PYTHONPATH.DEVNV—选择 NVIDIA 后端DEV决定 tinygrad 默认设备MODELbert—选择train_bert分支SUBMISSION_PLATFORMtinybox_green写入 MLPerf 日志的提交平台名DEFAULT_FLOATHALF—默认浮点精度为 fp16训练与求和都走 HALFSUM_DTYPEHALF—归约累加使用 fp16GPUS6BS90EVAL_BS90—6 卡数据并行训练/验证 batch size 90单卡 15IGNORE_OOB1—关闭越界out-of-bounds检查换取性能BEAM8—beam search 编译优化宽度 8BEAM_UOPS_MAX10000—beam 搜索最大 uop 数BEAM_UPCAST_MAX256BEAM_LOCAL_MAX1024—upcast / local 尺寸上限BEAM_MIN_PROGRESS5—beam 最小进步阈值IGNORE_JIT_FIRST_BEAM1—忽略 JIT 首次编译的 beam 耗时BASEDIR/raid/datasets/wiki—数据集目录与预处理一致LOGMLPERF1—启用 mlperf_logging 输出SEED$RANDOM—每次运行随机种子保证提交多样性4.2 初始化与正式运行两阶段的意义init 阶段INITMLPERF1以BENCHMARK10只跑 10 步、使用BERT_LAYERS2的浅层模型与假数据完成设备预热与 kernel 编译缓存同时向 MLPerf 日志写入SUBMISSION_*、CACHE_CLEAR等元数据并触发INIT_START/INIT_STOP计时事件见 model_train.py。run 阶段RUNMLPERF1PARALLEL0关闭多进程加载真实数据batch_load_train_bert/batch_load_val_bert开始正式训练与周期评估日志事件涵盖RUN_START、EPOCH_START/STOP、EVAL_START/STOP、EVAL_ACCURACY达标TARGET0.72后写入RUN_STOP(statusSUCCESS)。训练步内部由TinyJit Context(TRAINING1)的train_step_bert完成输入张量shard_/to_到各 GPU → 前向得到lm_logits与seq_relationship_logits→ 计算 loss 并乘loss_scaler反传 → 梯度除以 scaler → 计算全局 L2 范数并裁剪到 1.0 → LAMB 更新 → 调度器步进见 model_train.py。4.3 训练超参数由 run_and_time.sh 或环境变量覆盖train_bert()中一组可覆盖的默认超参数model_train.py环境变量tinybox_green 默认说明BS11 * GPUSHALF 下训练 batch sizeGRADIENT_ACC_STEPS1梯度累积当前断言必须为 1EVAL_BS1 * GPUS验证 batch sizeOPT_BASE_LEARNING_RATE0.000175 * sqrt(GBS/96)LAMB 基础学习率OPT_LAMB_BETA_1/20.9 / 0.999LAMB 一阶/二阶动量TRAIN_STEPS3600000 // GBS总训练步数NUM_WARMUP_STEPS1warmup 步数LOSS_SCALER2**11fp16 下混合精度损失缩放DECAY0.01权重衰减EPSILON1e-6LAMB epsilonPOLY_POWER1.0多项式衰减幂次SAVE_CKPT_FREQ/KEEP_CKPT_AMOUNT1000 / 5检查点保存频率与保留数量LAMB 优化器把参数分为两组带权重衰减的普通参数以及bias/LayerNorm相关的无衰减参数parameters_no_wd两者共享同一组学习率调度见 model_train.py这与 MLPerf 官方 BERT 收敛配方一致。五、多平台对照tinybox_red 与 tinybox_8xMI300XREADME 同时列出了另外两个实现目录的运行方式当前仓库 v5.1 中的对应脚本为tinybox_red/run_and_time.shAMD 平台tinybox_8xMI300X/run_and_time.sh8 卡 MI300X三份脚本共享INITMLPERFRUNMLPERF两阶段结构差异主要在硬件相关配置配置项tinybox_greentinybox_redtinybox_8xMI300XDEVNVAMDAMDGPUS668BS/EVAL_BS90 / 9090 / 901024 / 1024BEAM853BEAM_UOPS_MAX1000080006000学习率配方默认公式默认公式OPT_BASE_LEARNING_RATE0.0011、OPT_LAMB_BETA_10.60466、OPT_LAMB_BETA_20.85437、DECAY0.1训练步数默认默认TRAIN_STEPS3900附加项—HCQDEV_WAIT_TIMEOUT_MS100000、运行前sudo rmmod amdgpuFREE_INTERMEDIATE0几点说明tinybox_red 在 init 前先sleep 5 sudo rmmod amdgpu || true重置 AMD 驱动并通过HCQDEV_WAIT_TIMEOUT_MS100000放宽硬件队列等待超时用于规避偶发挂起tinybox_8xMI300X 的 LAMB 超参数与TRAIN_STEPS3900参考了 MLCommons 公开结果中的收敛配方脚本注释给出了出处说明大 batch1024下需要配套调整学习率、动量与衰减才能稳定收敛三份脚本均开启LOGMLPERF1正式提交时日志由mllog写入result_bert_seed.log见 model_train.py。此外仓库还提供单卡开发脚本 tinybox_1xMI300X/dev_beam.sh以GPUS1 BS128、BENCHMARK10 BERT_LAYERS2 DEBUG2快速验证单卡性能适合没有整机时的本地调优。六、运行输出与日志解读正式运行中tqdm.write每步输出一行结构化信息model_train.pystep ms run / ms python / ms fetch data / ms device / loss / LR / GB used / GFLOPS例如10 123.45 ms run, 12.30 ms python, 5.20 ms fetch data, 105.95 ms NV:0*6, 7.52 loss, 0.000175 LR, 11.20 GB used, 1482.35 GFLOPSms run单步总耗时ms pythonPython 侧开销越小说明 JIT 编译越充分ms fetch data数据管线预取耗时ms device设备执行耗时NV:0*6表示 6 卡并行GFLOPS基于GlobalCounters.global_ops统计的实际计算吞吐。BENCHMARK10触发后脚本会输出预估总训练时长与每 epoch 的总算力/访存统计方便在正式提交前快速评估是否达到目标性能窗口。七、总结与复现检查清单按照 README 完整复现 tinybox_green 上的 MLPerf BERT 基准可归纳为四步安装从mlperf_training_v5.0分支pip install -e .[mlperf]并补齐gdown numpy tqdm tensorflow数据WIKI_TRAIN1 VERIFY_CHECKSUM1下载并校验wikipedia.py pre-train all128GB 内存下NUM_WORKERS16与pre-eval预处理硬件确认 tinybox_green 已安装 P2P 驱动生产默认运行执行 tinybox_green/run_and_time.sh先INITMLPERF预热再RUNMLPERF正式计时并输出result_bert_seed.log。整套流程展示了 tinygrad 将 MLPerf 官方 BERT 预训练配方完整落地到自有硬件栈的能力从数据管线的 tokenization 复刻wikipedia.py到训练核心的 LAMB 多项式衰减 梯度裁剪model_train.py再到多平台NV / AMD / 8xMI300X的 beam 编译优化参数调优均可直接对照本指南与仓库源码逐项核验。【免费下载链接】tinygradYou like pytorch? You like micrograd? You love tinygrad! ❤️项目地址: https://gitcode.com/GitHub_Trending/tiny/tinygrad创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/10 12:07:35

CANN/GE算子参数设置

aclopSetKernelArgs 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Tensor…

2026/9/10 12:07:35

CANN/ge批量构建模型API

aclgrphBundleBuildModel 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、T…

2026/9/10 13:07:44

Python基础语法与核心特性全解析

1. Python基础语法概述 Python作为当下最流行的编程语言之一,以其简洁优雅的语法和强大的功能库著称。我最初接触Python时,最让我惊喜的就是它近乎伪代码的语法设计——用最少的代码表达最清晰的逻辑。比如经典的"Hello World"在其他语言中可…

2026/9/10 13:02:44

MATLAB疲劳驾驶检测系统:嵌入式部署与光照鲁棒性实现

简介:本资源是一套基于MATLAB实现的疲劳驾驶检测算法系统,面向智能交通、计算机视觉初学者及高校课程设计者,解决驾驶员状态实时监测中的关键问题。算法通过分析眼睛闭合频率、哈欠动作等生理特征判断疲劳状态,并提供可视化GUI交互…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码