当前位置: 首页 > article >正文

GitHub 热门项目 `modded-nanogpt` 实测:把“90 秒训练 124M”搬到 RTX 3090 后,先炸的不是显存,而是 Hopper 专用内核

GitHub 热门项目modded-nanogpt实测把“90 秒训练 124M”搬到 RTX 3090 后先炸的不是显存而是 Hopper 专用内核很多人看到modded-nanogptREADME 里的“124M 模型 90 秒训练”会本能地想先 clone 下来看看自己手头的 24GB 消费卡能不能学一遍。我这次就是这么做的。但把它搬到本地 RTX 3090 后最先挡住我的不是显存也不是学习率而是两个更底层的问题一个 fused cross entropy 内核把compute_capability写死成了90另一个注意力路径直接走向了 Flash Attention 3 的 Hopper/TMA 实现。结论先说modded-nanogpt当前 master 分支更像一份为 8xH100 speedrun 服务的竞速代码而不是一份“消费级 GPU 拿来就能学”的通用训练起点。你当然可以把它改到更通用但第一步绝不是抄 README 命令而是先确认哪些地方是 Hopper 专用假设。1. 先别被“90 秒”带跑这个项目的目标本来就不是通用复现modded-nanogpt最近很火并不奇怪。它把“124M 语言模型训练到指定验证损失”的速度一路压到8xH100下的 90 秒以内这种结果天然会吸走训练工程师和研究型读者的注意力。但你只要把 README 多看两眼就会发现它的叙事重点是speedrun不是portabilityREADME 写得很明确当前记录是8xH100。同一份 README 还提醒第一次torch.compile会额外带来大约 7 分钟延迟。整个仓库从记录表、PR、内核到 warmup 设计核心目标都是压榨 H100 上的训练吞吐。这不是缺点但它决定了一个很关键的工程判断这类仓库最适合学习“哪些训练和系统技巧在顶配硬件上真的有效”不适合默认当成“我本地 3090/4090 应该直接复现”的教学基线。如果你忽略了这一点就很容易把时间浪费在错误方向上先调 batch size、先改学习率、先担心显存结果真正的拦路虎其实在更底层。2. 我的验证目标不是刷到 3.28而是回答一个更实际的问题这次我没有试图在 RTX 3090 上复刻 README 的最终速度也没有去追 3.28 验证损失。我想先回答一个更接地气的问题截至 2026-04-30这个仓库的 current master 在一张 RTX 3090 上最小 warmup/训练路径到底能不能起得来如果起不来第一处阻塞在哪里2.1 本地环境GPU: NVIDIA GeForce RTX 3090 24GB Driver: 590.44.01 PyTorch: 2.9.1cu128 CUDA (torch 编译版本): 12.8 Triton: 3.5.1 Device capability: (8, 6)这里有两个细节很重要device capability (8, 6)也就是 Ampere不是 Hopper。我本地确认bf16_supported True所以问题不能简单归结为“3090 连 bf16 都不行”。2.2 我实际做了什么为了避免“没跑就写”我做了三层验证直接 clone 当前仓库读取 README、train_gpt.py、triton_kernels.py。在本地导入仓库里的triton_kernels.py看 fused kernel 能不能先过导入这一关。做一份诊断用的最小 probe保留仓库主干逻辑把数据缩小、步数缩短、跳过torch.compile只验证 warmup 是否能在单卡 3090 上启动。这第三步我要特别说明我不是在声称“我成功改好了 consumer 版”。这个 probe 的目的只是定位第一层硬阻塞不是追求最终 loss。我甚至故意关掉了torch.compile因为我不想让 7 分钟编译时间掩盖更底层的硬件兼容问题。换句话说这是一篇“实测定位边界”的文章不是“我已经给你交付一套 3090 最优配置”。3. 第一处硬阻塞不是显存而是sm90被写死在 fused CE kernel 里我先看的不是模型结构而是仓库里最容易决定“能不能起”的底层文件triton_kernels.py。这里有一段非常关键的代码ce_fwd_bwd_kerneltorch.cuda._compile_kernel(CE_KERNEL_DECLSCE_KERNEL_SOURCE,ce_fwd_bwd_kernel,compute_capability90,cuda_include_dirs[/usr/local/cuda/include/],nvcc_options[-lineinfo,--use_fast_math],) 这意味着什么-compute_capability90 指向的是 Hopper 代际。--我的本地3090是 (8,6)。--也就是说这个 fused cross entropy 内核在源码层面就已经把目标架构锁到了 sm90。 我直接在本地导入仓库里的 triton_kernels.py得到的不是普通 Python 报错而是 CUDA 侧的 PTX JIT 编译失败 text RuntimeError:CUDA error:a PTX JIT compilation failed这一步其实已经足够说明一个现实如果你照着当前 master 直接上 3090很多时候连“开始训练”都谈不上因为有些关键 kernel 的目标硬件就不是 Ampere。这里我想给出第一条作者判断如果一个热门训练仓库在核心 fused kernel 上直接写死compute_capability90那你在消费卡上遇到的第一个问题大概率不是 OOM而是“根本没有对应的可执行 kernel image”。这也是为什么我不建议读者一上来就调 batch size。方向错了调得再细也只是原地打转。4. 我把 CE 先降级成普通实现后第二处硬阻塞才真正露出来Flash Attention 3 还是 Hopper 路线为了确认“是不是只有 fused CE 卡住”我做了一个诊断性修改把 fused cross entropy 换成更通用的 fallback 实现只为了让流程继续往后走。保留其余主体训练路径。同时关闭torch.compile避免把编译延迟和主问题混在一起。结果很有意思cross entropy 那一关过去以后训练 warmup 仍然在注意力路径上挂掉了。报错核心信息如下Error: Failed to initialize the TMA descriptor 801 CUDA error (.../flash-attention/hopper/flash_fwd_launch_template.h:192): no kernel image is available for execution on the device这段错误比“显存爆了”更值得重视因为它揭示了第二个硬约束当前train_gpt.py的注意力路径直接绑定flash-attention-3。报错栈明确指向 Hopper 目录下的flash_fwd_launch_template.h。TMA本身就是 Hopper 非常标志性的能力点。换句话说我把最先炸掉的 fused CE 暂时垫过去之后项目还是会在Hopper-only attention path上再次卡死。所以第二条作者判断也很明确对消费级 GPU 来说modded-nanogpt当前 master 的真正门槛不是“训练参数还没调好”而是“关键 kernel 选择本身已经默认你在 Hopper 上”。这一点和很多普通教程完全不同。普通教程会告诉你先减 batch size先减 sequence length先关 compile先少跑几步这些动作当然有意义但它们只在kernel 兼容的前提下才有意义。现在的问题是前提本身就不成立。5. 社区早就提过 4090/3090 诉求但“有人讨论过”不等于“当前 master 直接能跑”如果你去翻仓库的 Issues 和 PR会发现消费级 GPU 复现这件事并不是没人提。5.1 Issue #29社区很早就在问 4090/3090 变体在 Issue #29 里社区很早就有人明确问能不能给 4090 这种消费卡做一版 speedrun 变体后续讨论里出现了几个很有价值的判断单卡 consumer GPU 的瓶颈不仅是算力更是 24GB 显存和内核支持边界。如果想保持和 8xH100 接近的 token budget需要同时调整 batch size 与 sequence length而不是只改其中一个。有人给出过 “nproc_per_node1 更小 sequence length 更大 batch size” 的经验路径。这说明什么说明consumer GPU 适配不是空想但它也绝对不是当前 README 那条命令天然就支持的东西。5.2 PR #38旧讨论里的 consumer 经验更像“实验分支”不是 current master 的默认能力在 PR #38 及相关评论里有人曾给出过比较具体的 consumer GPU 调整思路例如单卡运行通过缩短 sequence length、调整 batch size 去维持等价 token 预算用面向 consumer GPU 的 kernel 配置这些经验非常有价值但要注意两点它们更接近“社区适配路线”不是 current master 默认开箱即用的能力。仓库在继续追 record 的过程中关键 kernel 和注意力路径又朝 H100/Hopper 更深地优化了。也就是说你不能简单地把旧讨论当成“今天 master 还会自然支持 3090”。5.3 Issue #176连 H100 用户都踩过“README 命令不够稳”的坑另外Issue #176 也很值得看。里面有人按 README 跑 current record 时就遇到了 kernel 变体和环境路径问题。这给我的第三条作者判断提供了证据modded-nanogpt当前仓库更像一个高速迭代的 benchmark codebase而不是一个“任何 GPU、任何环境都尽量兼容”的课程项目模板。这不是批评而是定位问题。你要用对它。6. 如果你只有消费级 GPU我建议按这个顺序改而不是先碰学习率这部分是整篇文章最实用的地方。如果你真的想把modded-nanogpt当成学习材料带到 3090/4090 上我建议按下面这个顺序处理6.1 第一步先清掉 Hopper-only kernel 假设优先排查两类东西写死sm90/compute_capability90的 fused kernel明显依赖 Hopper/TMA 的 Flash Attention 3 路径在这一步之前不要把主要精力花在学习率和 warmup 上。6.2 第二步给注意力和 loss 各自准备一条“慢但通用”的 fallback如果你的目标是学习而不是冲排行榜我建议先接受一点性能损失换来可运行性注意力先退回更通用的 PyTorch SDPA、FlexAttention 或 consumer-friendly FA 路径loss 先退回普通cross_entropy只要能稳定起跑你后面才有资格谈优化。6.3 第三步再去调整 sequence length / global batch / grad accumulation当 kernel 兼容问题被排掉之后才轮到经典的消费卡适配三件套降 sequence length重算全局 token budget用 grad accumulation 把训练动态尽量拉回原始设定也就是说batch size 和 seq length 是第三顺位问题不是第一顺位问题。6.4 第四步最后再决定torch.compile值不值得开README 已经提醒了第一次torch.compile的延迟可能要 7 分钟左右。对单卡本地实验来说这件事要看你的目标如果你是做诊断、改代码、看 loss 走向先关掉更省时间。如果你已经完成 kernel 兼容改造准备做长时间 benchmark再考虑把 compile 打开。很多人会把 compile 当成“先手优化”但在本地消费卡调试阶段它往往更适合做“后手优化”。7. 这项目到底值不值得学我的结论是值得但别把 current master 当成通用起点如果你问我modded-nanogpt还值不值得看答案当然是值得。它至少有三层学习价值你可以看到现代 LLM 小模型训练里哪些结构和优化思路真的被拿来换速度了。你可以看到 benchmark codebase 和教学 codebase 的设计目标到底有多不一样。你可以顺着 record、PR、issue 去理解训练工程里“快”这件事从来不只是调参而是内核、注意力、通信、调度、损失、初始化一起动。但如果你只有一张 24GB 消费卡我更建议这样用它你的目标我建议的起点想理解 GPT 训练主流程先看llm.c或更朴素的NanoGPT想学习 speedrun 思路再回来看modded-nanogpt的 record、PR 和内核实现想本地真跑起来做实验先做 consumer-friendly fallback再谈追当前 master想直接复刻 README 成绩默认按 H100/Hopper 项目看待不要按 3090 教学项目看待我最后给出三条可以直接带走的判断当前 master 在 consumer GPU 上最先撞上的通常不是显存而是 Hopper-only kernel 假设。如果你的目标是学习训练工程先让它“能跑”比先让它“跑得像 record 一样快”更重要。modded-nanogpt最值得学的不是那条 90 秒命令而是它为什么敢为 8xH100 写出这么多硬件定制路径。8. 如果你也要复现按这份最小检查清单先走在你下一次git clone之前我建议先把下面 6 件事看一遍[ ] 先看 README确认它写的是 8xH100 speedrun而不是通用教程 [ ] 先查设备 capability区分 Ampere / Ada / Hopper [ ] 先 grep 仓库里有没有写死的 sm90 / Hopper kernel [ ] 先确认注意力实现是不是直接绑了 FA3/TMA 路径 [ ] 先做 no-compile 的最小 warmup 诊断不要一开始就追 full run [ ] 先决定你要的是“学习训练工程”还是“追 record”如果这 6 步里前 4 步都没做你很可能会在错误方向上消耗一整天。参考与延伸阅读modded-nanogpt仓库主页https://github.com/KellerJordan/modded-nanogptREADMEcurrent record / 8xH100 / compile 延迟说明https://github.com/KellerJordan/modded-nanogpt/blob/master/README.mdtriton_kernels.py中 fused CE kernel 的compute_capability90https://github.com/KellerJordan/modded-nanogpt/blob/master/triton_kernels.pytrain_gpt.py中flash-attention-3路径https://github.com/KellerJordan/modded-nanogpt/blob/master/train_gpt.pyIssue #29consumer GPU / 4090 复现讨论https://github.com/KellerJordan/modded-nanogpt/issues/29PR #38面向 RTX 4090/3090 的适配讨论https://github.com/KellerJordan/modded-nanogpt/pull/38Issue #176按 README 运行 current record 时的环境/内核问题https://github.com/KellerJordan/modded-nanogpt/issues/176本文所有结论都基于 2026-04-30 对 current master 的源码阅读、Issue/PR 调研以及本地 RTX 3090 的最小复现实验。文中没有宣称“3090 绝对跑不了这个项目的所有变体”而是明确指出current master 的默认关键路径已经明显偏向 Hopper speedrun而不是消费卡开箱即用。

相关文章:

GitHub 热门项目 `modded-nanogpt` 实测:把“90 秒训练 124M”搬到 RTX 3090 后,先炸的不是显存,而是 Hopper 专用内核

GitHub 热门项目 modded-nanogpt 实测:把“90 秒训练 124M”搬到 RTX 3090 后,先炸的不是显存,而是 Hopper 专用内核 很多人看到 modded-nanogpt README 里的“124M 模型 90 秒训练”会本能地想:先 clone 下来,看看自…...

Bili2text:3步将B站视频转为文字稿,开启高效学习新篇章

Bili2text:3步将B站视频转为文字稿,开启高效学习新篇章 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 你是否曾经因为需要整理视频内…...

终极指南:如何用ViGEmBus在Windows上创建虚拟游戏手柄

终极指南:如何用ViGEmBus在Windows上创建虚拟游戏手柄 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 想要在Windows电脑上畅玩手柄游戏&#xf…...

Steer3D技术:自然语言驱动的3D模型智能编辑

1. 技术背景与核心价值在数字内容创作领域,3D资产编辑一直存在专业门槛高、操作复杂的问题。传统3D建模软件需要艺术家手动调整网格、贴图和材质参数,一个简单的外观修改可能耗费数小时。而Steer3D技术的出现,让使用者只需输入自然语言描述&a…...

Windows 11安卓子系统终极指南:免费在电脑上运行Android应用的完整教程

Windows 11安卓子系统终极指南:免费在电脑上运行Android应用的完整教程 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA 你是否曾经想在Windows 1…...

如何用WebPlotDigitizer从图表图片中提取精确数据:完整指南

如何用WebPlotDigitizer从图表图片中提取精确数据:完整指南 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 你是否曾经面对…...

政府如何提升科技创新治理效率?

观点作者:科易网-国家科技成果转化(厦门)示范基地现状概述:成效与短板 在数智时代背景下,科技创新已成为区域核心竞争力的关键驱动力。各地政府积极响应国家战略,通过搭建公共技术平台、设立专项资金、优化…...

STING-BEE论文精读

这篇论文《STING-BEE: Towards Vision-Language Model for Real-World X-ray Baggage Security Inspection》提出了首个面向X光行李安检的多模态视觉语言数据集和模型。下面我从研究背景、核心贡献、方法、实验和局限性几个方面为你详细解读。1. 研究背景与动机 目前的X光安检主…...

英雄联盟智能助手Seraphine:你的终极游戏战绩查询与辅助工具完整指南

英雄联盟智能助手Seraphine:你的终极游戏战绩查询与辅助工具完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为英雄联盟对局中手忙脚乱而烦恼吗?想要在BP阶段就占据先机&a…...

5V转3.3V,用LDO还是DC-DC?实测对比纹波、功耗和成本,给你一个明确的答案

5V转3.3V电源方案深度评测:LDO与DC-DC的工程实践选择 在嵌入式系统设计中,电源转换电路的选择往往决定了产品的稳定性和能效表现。当面对5V到3.3V这一常见电压转换需求时,工程师们通常会在LDO(低压差线性稳压器)和DC-D…...

如何用ROFL-Player解决英雄联盟回放分析难题:3步实现专业级比赛复盘

如何用ROFL-Player解决英雄联盟回放分析难题:3步实现专业级比赛复盘 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 想象一下…...

QMCDecode:macOS上QQ音乐加密音频的终极免费转换方案

QMCDecode:macOS上QQ音乐加密音频的终极免费转换方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转…...

Unity多人游戏开发避坑:Photon Fusion 2共享模式下的输入处理与相机跟随实战

Unity多人游戏开发避坑:Photon Fusion 2共享模式下的输入处理与相机跟随实战 在多人游戏开发中,输入处理和相机跟随是最基础却又最容易出问题的环节。当使用Photon Fusion 2的共享模式时,开发者常会遇到输入延迟、相机抖动、角色不同步等&quo…...

离散扩散语言模型原理与工程实践

1. 离散扩散语言模型的核心原理与创新价值离散扩散语言模型(Discrete Diffusion Language Models, DLMs)代表了生成式AI领域的最新突破,其核心思想是通过模拟物理扩散过程来实现文本生成。与传统自回归语言模型(ALMs)逐…...

ZenTimings完整指南:免费解锁AMD Ryzen内存性能监控与调试工具

ZenTimings完整指南:免费解锁AMD Ryzen内存性能监控与调试工具 【免费下载链接】ZenTimings 项目地址: https://gitcode.com/gh_mirrors/ze/ZenTimings 想要深入了解你的AMD Ryzen处理器内存性能吗?ZenTimings是一款专为AMD Ryzen平台设计的免费…...

SAM 3技术解析:开放词汇分割与多模态AI验证

1. SAM 3技术解析:开放词汇分割的范式革新计算机视觉领域正在经历一场从封闭集识别到开放集理解的范式转变。传统图像分割方法受限于预定义的类别词汇表,而SAM 3通过引入多模态大语言模型(MLLM)和创新的AI验证机制,实现…...

WeChatRedEnvelopesHelper:iOS微信红包自动抢收的终极技术方案

WeChatRedEnvelopesHelper:iOS微信红包自动抢收的终极技术方案 【免费下载链接】WeChatRedEnvelopesHelper iOS版微信抢红包插件,支持后台抢红包 项目地址: https://gitcode.com/gh_mirrors/we/WeChatRedEnvelopesHelper 在移动社交生态中,微信红…...

Windows 10下保姆级教程:用Anaconda和CUDA搞定WhisperX语音识别本地部署

Windows 10下零基础部署WhisperX语音识别:从环境配置到实战应用 语音识别技术正在改变我们与设备交互的方式,而WhisperX作为开源领域的佼佼者,以其高准确率和多语言支持成为开发者的热门选择。本文将带你从零开始,在Windows 10系统…...

SchoolCMS:突破性开源教务管理系统的技术架构深度解析

SchoolCMS:突破性开源教务管理系统的技术架构深度解析 【免费下载链接】schoolcms 中国首个开源学校教务管理系统、网站布局自动化、学生/成绩/教师、成绩查询 项目地址: https://gitcode.com/gh_mirrors/sc/schoolcms SchoolCMS作为中国首个开源学校教务管理…...

保姆级教程:在RK3562上搞定OV13855和GC8034双摄切换(附完整DTS配置)

RK3562双摄开发实战:OV13855与GC8034的硬件协同与DTS精配 当RK3562遇上双摄像头模组,开发者往往要面对硬件资源分配、数据通路冲突和电源管理三大难题。去年在开发一款智能门禁设备时,我们团队就曾因前后摄像头切换时的帧率骤降问题卡了两周—…...

Redis 核心数据结构(三)——Hash,把一堆字段塞进一个 Key

对象无需再存 JSON 字符串了,Hash 让你直接改里面的某个字段,不用全量覆盖。本次导航 Hash 长什么样(像极了 Python 的字典)核心命令:HSET、HGET、HGETALL、HINCRBY内部编码:什么时候省内存,什么…...

代码之外周刊(第期):为什么所有费用都必须付两遍?

引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...

Degrees of Lewdity中文汉化版:终极完整安装与使用指南

Degrees of Lewdity中文汉化版:终极完整安装与使用指南 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Localization …...

别再到处找了!STM32CubeMX、IDE、Programmer、Monitor全套工具下载安装与配置保姆级指南

STM32Cube全家桶零基础通关指南:从下载到实战的一站式解决方案 第一次打开ST官网时,我盯着满屏的Cube工具链差点崩溃——MX、IDE、Programmer、Monitor四个核心工具分散在不同页面,每个工具又有多个版本分支。更崩溃的是,好不容易…...

语音翻译质量评估新指标SAN-MT的技术解析

1. 项目背景与核心价值去年参与跨国会议时,我注意到一个有趣现象:当演讲者使用浓重口音的英语时,同声传译的准确率会显著下降。这让我开始思考——现有的机器翻译评估指标是否真的能反映语音翻译场景下的真实质量?传统基于文本的B…...

别再手动打勾了!Word开发工具制作可交互表单(单选框/复选框/下拉框)保姆级教程

Word交互表单制作全攻略:告别低效符号,用ActiveX控件打造专业表单 还在用插入符号的方式制作Word表单吗?每次看到同事手动复制粘贴空心圆和实心圆来"填写"单选框,或是用打钩符号模拟复选框时,我都忍不住想分…...

Thoughtbox:基于Docker与MCP协议的可审计多智能体协作推理引擎

1. 项目概述:一个可审计的多智能体协作推理引擎如果你和我一样,长期在AI应用开发的一线,肯定遇到过这样的困境:让大语言模型(LLM)进行复杂推理时,过程就像一个黑盒。它给出了一个答案&#xff0…...

bp的使用

BP 在 CTF 中的使用BP(Binary Patch)在 CTF(Capture The Flag)竞赛中常用于修改二进制文件的行为,绕过保护机制或直接获取 flag。以下是常见的使用场景和方法:修改关键跳转或条件通过工具如 IDA Pro、Ghidr…...

【Dify 2026缓存架构权威白皮书】:首次公开3层异构缓存协同机制与QPS提升217%实测数据

更多请点击: https://intelliparadigm.com 第一章:Dify 2026缓存架构演进与核心设计哲学 Dify 2026 的缓存体系已从早期的单层 LRU 内存缓存,演进为支持多级协同、语义感知与生命周期自治的混合缓存网格(Hybrid Cache Grid, HCG…...

支付宝异步通知验签:支付安全核心机制解析与开源工具实践

1. 项目概述:一个被忽视的支付安全“守门人” 如果你在开发一个涉及在线支付的网站或应用,无论是电商平台、知识付费还是会员订阅,支付成功后的异步通知(Notify)处理都是整个交易闭环中最关键、也最容易出错的环节。想…...