脏数据,垃圾代码 | AI生成和翻译

Home 2026.06

TRAINING DIAGNOSIS

模型已正确训练(427k 次迭代,最终验证损失 3.466),并且确实学到了 一些真实内容——困惑度从 50,304(随机)下降到 32.3。但 生成输出是垃圾。原因如下:

PROBLEM 1:训练数据过于杂乱(主要问题) codeparrot/github-code 数据集是未经整理的原始 GitHub 转储: - 仅约 54% 的实际代码 - 约 31% 的许可证/版权样板头部 - 约 12% 的 HTML 文档(javadoc、doxygen、生成页面) - 约 2% 的配置/JSON 文件

一个 124M 的模型在近一半训练数据是噪音的情况下无法学习有意义的代码模式。

PROBLEM 2:空格 Token 主导 数据集中所有 Token 的 26% 是单个空格(Token 220)。 模型学到的最安全预测总是空格: “def quicksort(arr):” 之后 → 46.8% 空格,10.8% 换行 这是将代码缩进解释为信号而非结构。

PROBLEM 3:欠拟合,而非过拟合 训练损失(约 3.63)高于验证损失(约 3.54)。 模型没有记住——它根本无法学习模式。 它需要更干净的数据或更大的容量。

PROBLEM 4:验证损失 3.466(困惑度 32)对于代码来说过高 参考: GPT-2 124M 在 OpenWebText(英文)上:约 2.85 损失(困惑度约 17) CodeParrot-small 110M 在代码上:约 3.0 损失(困惑度约 20) 本模型:3.47 损失(困惑度约 32)

在困惑度 32 时,模型无法可靠预测下一个 Token, 因此生成退化为最常见的 Token(空格)。

WHAT TO DO

Option A(最佳):清理数据并重新训练

Option B:使用经过整理的数据集

Option C:训练更长时间

Option D:转换为 GGUF 并用作代码补全辅助

需要我编写一个数据清理脚本来过滤 parquet 文件并重新进行 Token 化吗?这是影响最大的修复方法。


Back Donate