1. 复现目标这次要复现的论文是Toward real text manipulation detection: New dataset and new solution目标不是简单跑通一个 demo而是尽量按作者公开的 baseline 路线复现DrLuo/RTM仓库中的ASCFormer为后续论文改进实验打基础。一开始的预期路线很明确准备官方代码仓库准备 RTM 数据集准备官方 checkpoint搭环境先跑通 checkpoint 推理再做 baseline 指标复现和后续改进实验2. 我的硬件和环境背景本机环境大致如下GPUNVIDIA GeForce RTX 5060 Laptop GPU系统路线Windows WSL2 Ubuntu目标仓库DrLuo/RTM主要子项目ASCFormer作者 README 给出的官方环境要求是Python 3.8PyTorch 2.0.0CUDA 11.8mmengine 0.7.0mmcv 2.0.0mmsegmentation 1.0.0rc6更准确地说这个仓库是本地pip install -e .路线这套环境本质上是一条老版本官方路线。3. 前期其实推进得很顺在真正卡死之前前面很多事情其实都完成了论文方向和 baseline 选定官方仓库 clone 完成RTM 数据集下载并放到指定目录数据集完整性检查通过官方 checkpoint 下载并放到正确路径Python 3.8 环境搭好后来又补建了 WSL 新环境验证 GPU 在 WSL 中可见也就是说这次失败不是因为数据没准备好也不是因为路径没配好更不是因为 repo 一开始就坏了。4. 第一个真正的问题RTX 5060 太新官方旧环境跑不动最早的核心问题是我尝试按官方思路装torch2.0.0torchvision0.15.1torchaudio2.0.1CUDA 11.8结果在本机 RTX 5060 上虽然包能装torch.cuda.is_available()也可能返回True但真正做 GPU 张量计算时会报类似这类错误CUDA error: no kernel image is available for execution on the device这一步非常关键因为它说明问题不是 WSL 坏了不是 PyTorch 根本装不上而是官方旧版 PyTorch/CUDA 对这代新显卡支持不合适。换句话说老代码未必坏 但“官方旧环境 RTX 5060”这组组合本身就不稳定。5. 我尝试过“新环境承载老代码”但这条路也没有走成正式 baseline既然旧版torch 2.0.0 cu118在本机不稳我后面就切到了另一条路在 WSL 中新建环境换到更新版 PyTorch保证本机 5060 至少能正常跑 GPU这条路在工程上并不是完全没成果反而推进了不少新环境里 GPU 可见torch 2.11.0cu128可运行新版natten可导入一些替代实现、fallback 结构、局部模块单测都跑通过甚至真实img ela dct的推理链路也打通过预测图也导出来了但问题在于这条线虽然能跑不代表它就是论文需要的正式 baseline。因为后面我明确观察到fallback/替代实现和原始natten结构不完全等价加载 checkpoint 时有不少missing / unexpected keys预测 mask 和真值偏差明显也就是说这条线只能证明“链路通了”不能证明“官方 ASCFormer baseline 已经严谨复现成功了”所以我后来把这条路线重新定义成功能验证分支 / fallback 分支而不是正式 baseline。6. 真正卡死的位置clean 副本卡在 full mmcv为了避免 fallback 分支污染正式复现我后来重新开了一个官方 clean 副本目标非常克制只做第一轮“无数据集构建检查”natten能不能导入配置文件能不能加载原版 backbone 能不能 build前两步其实都通过了natten可导入configs/ascformer/ascformer_rtm.py可正常加载真正卡住的是第 3 步原版 backbone build最开始看到的直接报错是ModuleNotFoundError: No module named mmcv继续往下排查以后问题逐渐收缩成当前环境里没有可用的 fullmmcvmim install mmcv2.0.0拿不到匹配 wheel一旦拿不到 wheel就会退回源码编译一源码编译又会撞到新的兼容性问题这一步的本质不是“少装了个包”而是当前环境组合拿不到可直接使用的 full mmcv 预编译包 而源码编译 full mmcv 又失败了。7. 我为了解决 mmcv又继续踩了几层坑为了继续往前我做过几轮排查和修补7.1 先排查是不是构建工具缺失我先后补过setuptoolspackagingCythonninja也确实解决过一些表层问题比如pkg_resources缺失build isolation 里依赖不齐但这些都只是“往前推进了一步”没有真正解决最终问题。7.2 再排查是不是 WSL 没有 CUDA toolkit后来源码编译mmcv时又报CUDA_HOME environment variable is not set于是继续排查CUDA_HOME为空which nvcc没结果/usr/local/cuda*不存在这说明WSL 里虽然能跑 PyTorch GPU但没有可用于编译 CUDA 扩展的 toolkit。于是我又安装了cuda-toolkit-12-8装完之后也确认了nvcc --version正常/usr/local/cuda-12.8存在这一步说明问题已经不是“没有 CUDA 工具链”了。7.3 最后确认不是单纯缺包而是版本组合根本不顺当 CUDA toolkit 也补齐后源码编译mmcv2.0.0还是失败。而且失败点已经从环境基础设施推进到了PyTorch 头文件 / NumPy / mmcv 源码构建接口这类更深层兼容问题。尤其是在torch 2.11.0 cu128这套组合下最终暴露出的本质是这套环境拿不到合适的mmcv 2.0.0wheel只能退回源码编译而源码编译又和当前版本栈撞上所以最终可以把问题说得非常明确这次复现失败不是因为 RTM/ASCFormer 代码仓库本身跑不起来 而是因为“官方 baseline 所依赖的旧环境”与“本机 RTX 5060 所逼出来的新环境” 之间存在代际兼容性断层。8. 最终我得出的客观结论结论一本机 5060 不适合做“官方 baseline 严格复现”的主战场不是完全不能研究也不是完全不能跑点东西。而是可以做代码阅读可以做局部模块验证可以做 fallback 功能验证可以做环境兼容探索但是不适合继续硬磕“官方 ASCFormer baseline 严格复现”这条主线。结论二这次失败不是完全没有价值这次虽然没在本机把 baseline 完整复现成功但并不是纯浪费时间。至少明确排除了几条错误路线不是数据集有问题不是 checkpoint 有问题不是仓库一开始就坏了不是 WSL 完全不能用不是单纯少装一个依赖包真正的问题核心是环境代际兼容性这个结论很重要因为它能避免后面继续在同一台机器上无休止试错。结论三正式复现更适合转到兼容服务器上做如果后面还要严肃复现 ASCFormer baseline我认为更合理的做法是换一台更接近作者年代环境的机器优先 Linux 服务器优先 3090 / 4090 / A5000 / A6000 / A100 这类更成熟的卡按官方 README 里的Python 3.8 torch 2.0.0 cu118 mmcv 2.0.0去搭也就是说不是 baseline 不行而是本机这条硬件-软件组合不适合作为它的复现场。9. 这次复现失败给我的最大教训这次最大的教训其实不是某个命令怎么写而是9.1 新显卡不等于更适合复现老论文硬件越新不一定越容易复现旧论文。相反老论文依赖的老版本 PyTorch / CUDA / mmcv有时候在新显卡上更容易出兼容问题。9.2 “能跑”不等于“复现成功”把模型链路跑起来、甚至把预测图导出来并不自动等于 baseline 严格复现成功。如果结构已经改了、依赖已经换代了、权重对位也不完整那更准确的说法只能是功能验证通过而不是正式 baseline 复现成功9.3 复现前先看“环境代际”以后复现论文尤其是 OpenMMLab 生态这类项目先看的不只是代码和数据而是论文发表时间官方依赖版本目标 GPU 代际当前系统能不能拿到匹配 wheel这一步如果前面不判断后面很容易陷入长时间的环境泥潭。10. 后续打算这次在本机上的 ASCFormer 复现我准备先停在这里。后续如果继续推进会优先考虑在兼容服务器上复现官方 baseline服务器复现成功后把它作为正式实验主战场本机 5060 只保留为调试机和辅助开发环境11. 一句话总结如果要用一句话总结这次失败这次 RTM / ASCFormer 在 RTX 5060 WSL 本机上的复现失败 本质上不是代码仓库坏了也不是单个依赖没装好 而是“官方旧 baseline 环境”和“本机新显卡环境”之间存在明显的代际兼容性断层。