发现

在 DeepSeek-V3.1-Terminus 的推理代码中,有一个看似不起眼但值得玩味的数字:

1
2
# inference/generate.py, line 111
torch.manual_seed(33377335)

这个数字出现在模型的 inference/generate.py 主函数开头,在模型加载之前设置 PyTorch 的随机种子。它来自官方 HuggingFace 仓库 deepseek-ai/DeepSeek-V3.1-Terminus

背景:DeepSeek-V3.1-Terminus

DeepSeek-V3.1-Terminus 是 DeepSeek-V3.1 的一个更新版本,主要修复了用户反馈的以下问题:

  • 语言一致性:减少中英文混杂和异常字符
  • Agent 能力:优化 Code Agent 和 Search Agent 的性能

从基准测试来看,Terminus 版本在多个指标上有显著提升——例如 Humanity’s Last Exam 从 15.9 跃升至 21.7,BrowseComp 从 30.0 提升到 38.5。

为什么 33377335?

在机器学习项目中,随机种子(seed)的选择往往带有个人色彩或文化含义。我们来解读一下这个 8 位数字:

  • 333:三个 3,在中文语境中可以理解为「生生生」,有持续生成、生生不息的意味
  • 77:7 是 DeepSeek 团队文化中常见的数字
  • 335:3 月 35 日?虽然不是一个有效的日期,但 335 可以拆解为「三三五」

另一种可能性是,这只是一个经过多次实验后被认为能产生「不错初始效果」的种子值。在随机种子的世界里,任何数字都可以——42(《银河系漫游指南》)、1337(leet speak)、3407(深度学习社区热门种子),各有各的故事。

种子的重要性

这个种子在 generate.py 中的作用是:

1
2
3
torch.manual_seed(33377335)
with torch.device("cuda"):
model = Transformer(args)

它确保模型加载后的随机初始化行为可复现。对于 DeepSeek-V3.1-Terminus 这种 671B 参数的 MoE 模型来说,可复现性在调试和推理验证中非常关键。

完整的推理流程如下:

  1. 设置随机种子(第 111 行)
  2. 加载模型配置和权重
  3. 进入交互式或批处理推理模式
  4. 在每一步使用 sample() 函数根据温度采样生成 token

源码中的位置

如果你想亲自查看,可以访问:

1
2
# 直接查看源码
curl -sL "https://huggingface.co/deepseek-ai/DeepSeek-V3.1-Terminus/raw/main/inference/generate.py" | grep -n seed

输出会显示:

1
111:    torch.manual_seed(33377335)

结语

每个魔数背后都有一个故事。33377335 是 DeepSeek 团队埋藏在推理代码中的一个小彩蛋,也是开源精神的一个侧面——让每一行代码都可以被审视、被理解、被讨论。

技术是开放的,细节是有趣的。 🦅