[BidClub_]
晚点聊 LateTalk · · 57 min

102: DeepSeek 启动开源周,大模型开源到底在开什么?

王子涵程曼祺

Podcast
TL;DR
  • DeepSeek 的 Open Source Week 展示出,其开源内容可能不只是模型权重,也会涉及支撑线上服务的 AI Infra。五天五个代码库的首发项目 FlashMLA;官方将这些基础组件描述为已经“文档化、部署并经过实战检验”。“small but sincere”背后,重点是让社区更充分地理解和复用这些效率工具。
  • 王子涵看到 DeepSeek 的共同技术主线,是把训练和推理的各个环节做得更高效。从 V2 的 MLA,到 V3 一次并行预测两个 token、FP8 低精度训练和减少 pipeline parallel 空泡,再到以 C++ 算子优化 KV Cache 的 FlashMLA,他的概括是:“我觉得可能真的是每一个”,保留了判断的可能性。
  • 行业所称的“开源模型”通常只开放技术报告和权重,真正稀缺的是推理框架、训练框架与数据集。越往底层,整理依赖、规范代码和控制敏感信息的成本越高;数据尤其接近禁区,AllenAI 与 EleutherAI 的 Pythia 被举为少数深度开放的例外,后者连预训练中间 checkpoint 都提供,被称为“保姆式开源”。
  • 开源是一项需要额外投入的组织能力,而不是把内部代码上传 GitHub。王子涵曾在一项工作中花两三天把内部实现迁移到公开框架,又用一周多整理代码;对研究人员而言,“一周可以做不少事儿”,所以开源程度直接体现团队是否把服务社区列为优先级。
  • 在王子涵看来,衡量开源生态时,Issue 和 PR 比 Star 更接近真实使用。他的经验是“我一般不看它 Star 有多少,我一般看它 Issue 有多少”:适配需求、编译错误和 bug 往往说明用户已经实际运行;PR 则意味着有人主动修改代码,通常没有直接的物质回报。vLLM 约 800 位 contributor 和多种硬件适配,展示了生态如何放大单个机构的研发投入。
  • 公司开最强模型还是较小版本,最终与盈利模式和生态目标有关。DeepSeek 以宽松的 MIT License 开放最强模型;需要维护订阅或 API 溢价的公司,则可能保留前沿版本、开放较小型号。曼祺提到文心计划到 6 月 30 日才开源,王子涵认为工作量很大可能是重要原因,但具体仍取决于其自身计划。
  • 模型越强,完全开放与可控滥用之间的冲突越尖锐。王子涵的 Twitter 曾被疑似模型驱动的 Agent 以个性化邀约骗取账号;他因此提出,未来“开一个比较小的模型,然后最强的那个不开源”可能更合理,否则从钓鱼到用 100 个小号发动网络暴力都可能被规模化。至于 AI 超越人类智力,他的回答是:“我为游戏带来一个新玩家,这就是意义。”
Digest · the substance, structured for research

1. 王子涵从开源使用者和贡献者两端进入讨论

  • 王子涵在西北大学 MLL Lab 读博一年级,研究 Large Language Model、Agent reasoning 与 long-context efficiency;他 2024 年曾在 DeepSeek 实习,暑期将去 Agent 创业公司 Utori。

  • 他认为,自己第一项较有影响力的开源工作,是 2023 年 2 月启动、当年 9 月发布的 Agent benchmark:当时不少公司已宣称能做 Agent,却缺少统一评价工具,团队便把既有题目重新组织成模型调用外部工具解决的形式。

  • 对 DeepSeek-V2,他强调自己只是参与研发、讨论和实验,“不是特别核心的贡献”;近期则在做 DeepSeek-R1 加 Agent 的开源 repo,研究将 DeepSeek-R1 的纯 RL 方法与多轮 dynamics 结合后,在不同任务上能达到什么效果。

2. Open Source Week 首先开放的是线上基础设施

  • DeepSeek 预告连续五天开源五个代码库,称这些“humble building blocks”均已完成文档、实际部署和线上检验;其措辞是“small but sincere”,并强调“没有高高在上的象牙塔,只有纯粹的车库精神和社区驱动的创新”。

  • 同期置顶的 Open Infra Index 以 AI infrastructure 为主题,显示这周的开源内容会涉及基础设施;首项 FlashMLA 是 V2 框架中的 MLA 推理优化。

  • 王子涵坦言自己“没有什么预判这个东西的能力”,只认为后续有可能涉及 V3 或 R1 的训练、推理框架;这是可能性判断,不是对剩余四项发布内容的预测。

3. DeepSeek 的统一技术主线是把每一步做得更高效

  • 王子涵把 V3 的重点归纳为三个方向:沿用 Meta 的 multi-token prediction,报告中一次并行预测两个 token;以更少比特存储数字的 FP8 低精度训练;以及优化 pipeline parallel。

  • Pipeline parallel 会让张量依次经过不同模型部分,但 forward 与 backward 之间可能产生空泡,导致部分层闲置;DeepSeek 的工作是进一步压缩这些没有处理向量的时间块。

  • FlashMLA 则把效率推进到 Attention KV Cache 和底层算子。代码写到 C++,在王子涵看来基本可以确认包含系统级优化,而不只是重新描述同一套模型计算。

  • 从 V2 到 V3 再到 FlashMLA,他看到的共同目标都是 efficiency:“我觉得可能真的是每一个”,即围绕效率、降低训练和推理成本展开;低精度部分则明确强调了在训练效果差不多的情况下节省计算。

4. 算子优化靠少过“窄桥”,也暴露了工程能力差

  • 王子涵用 FlashAttention 解释算子融合:如果一个大矩阵要连续做五种运算,与其每做一次就从较大但较慢的存储层搬到较小但较快的计算层,不如一次搬入、完成五种操作后再搬出。

  • 他的比喻是把小麦送过一座狭窄的桥加工;反复送回中间产物,时间花在过桥而非加工。“一次就能把这些所有的操作都做完”,才是优化的核心。

  • 曼祺追问这是意愿还是能力差异,王子涵明确选择能力。他曾想做 online training,却卡在两条路之间:最快的推理框架把模型固定住、不能边生成边更新;自己重写一个兼具高速推理和动态更新的库,又超出团队的工程能力。

5. 五个仓库被索引不等于五种能力已经合流

  • FlashMLA 发布后,社区很快询问 FP8 部署代码和 NPU 版本。王子涵认为,FP8 若与 MLA 的 KV Cache 优化结合还会更快;DeepSeek 也许有把分散技术组合起来的计划,但他保留了“也许”。

  • Open Infra Index 能解决发现问题,却不能自动解决集成问题:把五个库合成一个可自由调用、叠加不同能力的统一库,还要处理 merge 产生的 bug。社区会积极复现,但谁承担整合仍取决于 DeepSeek 自己的计划。

6. README 是读懂仓库的入口,文件语言先透露层级

  • 王子涵把 repo 解释为实现一个算法或概念的“仓库”;它既能放代码,也有人用来放作业甚至小说。用户可以直接下载,也可用 git clone 拉到本地。

  • 机构主页适合搜索目标 repo,语言标签可帮助初步判断实现层级:FlashMLA 标为 C++,符合底层算子优化特征;但语言标签本身不能完整说明项目用途。

  • DeepSeek-R1 的 repo 没有编程语言标识,是因为它当前主要承载论文说明、模型运行方法和少量命令,而非完整训练代码。王子涵认为 R1 相关训练框架可能以后开放,目前社区已有各自复现。

  • 进入仓库后,他首先读 README,从安装依赖、benchmark 或第一条可运行命令建立整体认识,再沿 import、函数 definition 和调用关系逐层深入,把 code base 当成一棵树来学习。

7. Issue 比 Star 更接近真实使用,PR 才是直接共建

  • FlashMLA 使用 MIT License,其关键是宽松与“as is”:开发者免费开放代码,但不承诺使用结果,也不为用户遇到的问题承担责任。

  • 王子涵的独特指标是:“我一般不看它 Star 有多少,我一般看它 Issue 有多少。”Star 更像浅层点赞;Issue 中的适配需求、编译错误和 bug,往往说明用户已经实际运行。未解决的是 open,解决或被主动终止后才 closed。

  • Pull request 更深一层:贡献者已修改代码,并用增删 diff 展示如何解决需求,再由维护者决定是否合并。外部 PR 通常缺少直接物质回报,“唯一的 motivation 我觉得就是热爱”,GitHub 奖章只能提供有限激励。

8. “开源模型”至少横跨五层,行业通常只开到权重

  • 王子涵把开放程度分为技术报告、模型权重、推理框架、训练框架和数据集。今天说一个模型“开源”,通常只意味着有报告并可下载权重,并不自动包含训练复现所需的一切。

  • 技术报告是最基础的一层:报告可以没有代码,也可能写得含糊,但至少应说明用了什么方法。模型权重让用户获得训练结果,却仍需要推理框架才能有效部署。

  • 推理框架的开放已较少,训练框架更少;数据则几乎不由商业公司完整提供。因此,同样叫“开源模型”,实际可理解、可修改和可复现的程度可能相差极大。

9. V3 的详细报告先积累了技术信任,R1 才承接出圈

  • 王子涵认为 V3 是 DeepSeek 几份报告中尤其详细的一份。公司技术团队“每个人都写代码”,各自验证 idea,能通过的再进入下一版训练;大量小块贡献汇合成五十多页报告。

  • 贡献名单不只包含梁文锋和技术人员,data annotation、business 等参与者也被列入。V3 作为 base model,覆盖预训练、后训练、微调和数据等庞大工作;R1 则在 V3 base model 上重点说明 reinforcement learning 方法。

  • 曼祺的传播判断是,R1 全民爆火之前,V3 的细致实验和消融结果已在全球、尤其美国核心技术圈建立 respect。王子涵赞同:即使是一份流水账式报告,也要记录清楚做了什么,并以服务读者的方式让人由浅入深理解技术,而不是只留下难以使用的材料。

10. Hugging Face 交付权重,vLLM 与 SGLang 放大可用性

  • 模型权重通常从 Hugging Face 下载。节目展示的模型被拆成 163 个切片,每片可能约 4GB;用户可按 Transformers 或 vLLM 等 library 给出的方式加载,框架承担实际运行工作。

  • vLLM 源于伯克利研究者的工作,后来形成 800 多位 contributor 的生态,并适配 CPU、CUDA、NPU、HPU 等多种架构。王子涵把数万 Star、数千 Issue 和数百 PR 视为它被深度使用的迹象。

  • MiniMax-01 开源线性注意力新架构后,社区反馈缺少优化,其团队便把优化贡献到 vLLM;这说明成熟框架可以承接单个模型公司的部署工作,而不必每家重建生态。

  • SGLang 是另一条快速增长的路线,王子涵听到的使用体验可能与 vLLM 不相上下、某些方面更好;其团队在 R1 发布后很快宣布支持 DeepSeek-V3 和 R1,体现了更紧跟新模型的节奏。

11. 训练框架最能显示开源不是“把内部代码扔出来”

  • 字节开源的 verl 支持强化学习训练,包含 PPO trainer、FSDP 等并行模式,也积累了数百个 Issue 和 PR。王子涵曾用它完成研究,因此直言这项开放让自己对字节“挺有好感”。

  • 他还介绍自己做的 ESFT:利用 MoE 中不同专家对任务的亲和度,只微调相关专家、冻结其他参数,既减少计算资源,也体现“让专业的人做专业的事”。

  • 难点是原实现依赖公司内部的大框架,而当时整体框架暂不打算开放。他不得不把相关部分在公开框架上重写,适配花两三天,代码规范化又花一周多;“一周可以做不少事儿了”。

  • 规范也不是一日之功。他见过项目把三个文件直接命名为 step 1、step 2、step 3,后来者若插入步骤只能叫 step 1.5 或重命名全部文件;清晰命名和统一格式决定了别人能否真正维护、扩展代码。

12. 数据仍是最深的禁区,隐私风险压过复现价值

  • 商业公司几乎不公开完整训练数据,最多在报告中披露不同数据的比例。王子涵认为原因不只是“不想开”,还包括信息敏感性和安全责任。

  • 即使网页公开且法律允许抓取,把大量个人网站集中进数据集,仍可能让使用者迅速定位个人信息并用于不好的事情;数据由分散可见变成集中可检索,风险也随之变化。

  • 他举出的少数例外包括 AllenAI 和 EleutherAI。后者的 Pythia 不仅开放相关成果,还提供第 0、1、2、4 步到第 1,000 步、此后每隔 1,000 步的预训练 checkpoint,因而被曼祺概括为“保姆式开源”。

13. 开最强还是开小模型,本质取决于盈利与生态目标

  • DeepSeek 长期用宽松的 MIT License 开放自己的最强模型;曼祺还提到,MiniMax、阶跃星辰从 1 月起陆续发布首批开源模型,并提到文心宣布到 6 月 30 日正式开源。

  • 曼祺追问文心为何要等这么久,王子涵认为工作量肯定是重要原因,但仍“看他们自己的计划”。缺少开源积淀的公司,需要额外投入代码规范、依赖替换、文档和维护人员。

  • 王子涵把策略与盈利模式相连:不靠模型订阅或 API 溢价赚钱的机构,可能开放最强模型,甚至希望重构行业生态、让自己的系统成为标准;需要维持商业领先的公司,则可能开放较小版本服务社区,同时保留核心优势。

  • 对 OpenAI 是否会开放最强模型,他的回答是“不太确定”。Sam Altman 当时的投票选项是 o3-mini 或可在手机端部署的 phone-size model;曼祺随后认为开哪个都能服务一部分人,王子涵则转而讨论不开源也可能有其合理性。

14. 模型越强,开放与滥用的张力越难回避

  • 王子涵的 Twitter 账号曾被黑。他推测攻击者用 Large Language Model 制作 Agent,针对不同用户生成不同角度的商业访谈邀请,最终诱导点击链接;甚至可能继续训练模型,以提高点击成功率。

  • 他据此提出,未来模型足够强时,“开一个比较小的模型,然后最强的那个不开源”可能更合理,因为开发者很难阻止他人围绕恶意目标使用它。

  • 他给出的升级场景不是抽象末日论,而是更廉价的规模化伤害:最强模型不仅能钓鱼,还可能自动注册 100 个小号发动网络暴力。王子涵确认,这一判断不是商业保护论,而是对技术社会影响的考虑。

  • 面对 AI 智力超过人类,王子涵又拒绝把智能当成唯一价值:围棋界也从抗拒 AI 转向学习和娱乐。“那就不用拼了”“享受它就好”;人进入世界如同注册游戏账号,“我为游戏带来一个新玩家,这就是意义。”

程曼祺 Manqi Cheng

上个周五,DeepSeek 在官方 Twitter 上预告,下一周会连续 5 天开源 5 个成果,进入 Open Source Week,也就是开源周。我们录制节目的这一天是周一,DeepSeek 也正式放出了开源周的第 1 个开源项目 FlashMLA。

我一直很想和人好好聊一下,大模型开源到底是在开什么、怎么开。比如相比于闭源模型,开源要额外做哪些工作,才能让社区比较好地理解这个开源成果,并且更充分地把它用起来。

随着 DeepSeek 在春节期间爆火出圈,开源也正在成为一种趋势。比如之前一直保持模型闭源的公司,像 MiniMax、阶跃星辰,从 1 月到现在都陆续发布了自己的第 1 批开源模型。之前选择保留自己最强的模型、开源较小版本模型的公司,可能也会在 DeepSeek 的冲击波里有新的选择。

正好在 DeepSeek 开源周,我邀请到了正在美国西北大学 MLL Lab 攻读博士学位的王子涵。子涵今年刚读博 1 年级,之前毕业于人大。大四的时候,也就是 2024 年,他曾在 DeepSeek 实习过数个月;接下来今年暑假,他还将去一家美国的 AI Agent 创业公司 Utori 实习。

这期我和子涵聊到了开源模型不同的层级,主要有技术报告、模型权重、推理框架、训练框架,还有数据集。现在我们说一个模型是开源的,一般指的是有技术报告,也开放了模型权重。再往下、更深入的开源是推理框架和训练框架,而现在只有极少数机构,比如 AllenAI 和 EleutherAI,也开放过预训练或微调的数据集。

我们也一起围观了 DeepSeek 开源周的进展,回顾了他们之前开源模型的一些重点优化思路,以及他们为了让社区充分理解和使用开源成果,而专门花费精力去规范代码、撰写详细的技术报告。这背后其实是一个组织对优先级的选择。

在本期最后,子涵也分享了自己成为开源模型滥用受害者的亲身经历。开源在加速技术进化,也带来了一些需要一边技术进化、一边思考和防范的新问题。这让我想到最近刚看过的一句话:马斯克曾经说,有人问我是不是想死在火星上,我说当然,但别死于登陆器降落时的撞击。

王子涵,你可以和我们的听友先打个招呼,也简单介绍一下你之前的学习、工作经历,以及和开源的一些渊源与关系。

王子涵

大家好,我叫王子涵,非常开心今天能来曼祺的频道做客。我现在在西北大学读博士 1 年级,导师是李曼颖老师。我的方向有 large language model、agent reasoning 等,也包括我们最近在做的 long-context efficiency 相关内容。

因为我的导师李曼宁老师之前是在 Stanford 家俊和菲菲组里做 postdoc,所以我们组也做一些 vision-language model 和 robotics 方向。这些方向虽然我没有直接参与,但是听组里的同学做项目,也有一些了解。

我本科就读于人大高瓴人工智能学院。本科期间有一段实习经历,就是刚才曼祺提到的 DeepSeek。接下来暑假我也会继续做 Agent 这个方向,在一家创业公司实习。

程曼祺 Manqi Cheng

谢谢。你之前的工作,包括实习,如果都算上的话,有哪些和开源比较相关的工作吗?

王子涵

我觉得我绝大部分工作应该都开源了。最早的一篇,或者说我做得比较出名的一篇,可能是当时在暑研期间、季恒老师组里做的一篇关于 Agent 相关的工作。

我们当时做了一篇 benchmark。大概是在 2023 年 9 月发布的,但做这个课题其实是在 2023 年 2 月。当时做 Agent 还是一个比较超前的选择,因为我们初步发现,language model 有可能通过自身能力调用外部工具。

那时候很多公司已经在宣称自己能做 Agent 了,但是 benchmark 还比较少,没有一个比较统一的工具去评估这些系统,比较一下到底谁更厉害。所以我们就从网上已有的数据集里找了一些题目,再把它们重新组织成一种模型能够通过 Agent 的方式去学习、把题目做出来的形式。这可能是我第 1 个影响力比较大的开源工作。

当时在公司里面,DeepSeek-V2 我也有参与,但只能说是参与了研发,并不是特别核心的贡献。组会的时候可能聊一聊、提提意见,包括跑跑实验。

最近我们还做了一篇关于 DeepSeek-R1 加 Agent 的工作,目前算是一个开源的 repo,之后会考虑正式发布出来,并且发布一份正式报告。我们现在这份报告已经在写了,差不多写完了,主要是把这个问题用形式化的语言、各种数学公式给 formulate 一下。

我们也加了几个不同的 task,研究 reasoning agent 如果使用 DeepSeek-R1 这种纯 RL 训练的方法,再加上多轮 dynamics,大概能达到什么样的效果。

1. DeepSeek 开源周启动

程曼祺 Manqi Cheng

那我们第 1 部分先来聊一聊 DeepSeek 的开源周。我觉得这也是大家现在比较关注的一个事情。

开源周在上周释放出来的信息,主要是 DeepSeek 在 Twitter 上的一条预告,原文截图会贴在 show notes 里。这里我简单复述一下,它大概写的是:

第 0 天为开源周预热。我们是来自 DeepSeek AI 的一个小团队,致力于探索通用人工智能。从下周开始,我们将开源 5 个代码库,以完全透明的方式分享我们虽小但诚挚——原文是 small but sincere——的进展。在线服务中这些看似平平无奇的基础组件,也就是 humble building blocks,都已经被文档化、部署,并且在实际应用中经过了实战检验。

作为开源社区的一分子,我们相信每一行被分享的代码,都将汇聚成加速这趟旅程的集体势能。每日开源内容即将推出。这里没有高高在上的象牙塔,只有纯粹的车库精神和社区驱动的创新。

同一天,DeepSeek 也在 GitHub 上发布了一个和开源周有关的库,并且把它置顶了。这个库的名字叫 Open Infra Index,也就是开源的 Infra 指引。Infra 指的是 AI 的 infrastructure,也就是基础设施层。这个项目的地址我也贴在 show notes 里了。

顺便说一下,如果有听友不是特别了解 AI Infra 是做什么的,可以去听《晚点聊》第 58 期。我们和硅基流动的创始人袁进辉非常详细地聊了 AI Infra 到底是在做什么。

回到开源周,子涵,从 DeepSeek 的 Twitter 预告以及 Open Infra Index 这个 GitHub 库里面,你看到了哪些亮点?结合今天放出的 FlashMLA,你觉得这一周 DeepSeek 大概会连续开源些什么东西?

王子涵

这是一个很好的问题。我其实没有什么预判他们行动的能力。比如一个东西出来之后,我就很难预测他们接下来会有什么 action。

我觉得他们自己有一个框架,内部有一套训练模型的框架。今天这个 FlashMLA,我觉得如果说它算是一个推理加速的东西,里面可能也有训练相关的部分。但如果他们有机会的话,可能会开源一些 training framework,包括 DeepSeek-V3 的一些成果。

现在这个成果可能还是 V2 的训练框架,所以我觉得他们有可能会开源 V3 或者 R1 的训练和推理框架。

2. FlashMLA 优化推理效率

程曼祺 Manqi Cheng

因为 MLA 其实在 DeepSeek-V2 和 V3 里面,算是它的一个创新点吧?

王子涵

对。所以今天放出的 FlashMLA,如果总结来说,就是 V2 框架里的一个推理优化,可以加速推理效率。

程曼祺 Manqi Cheng

对。其实他们很多创新都是在 target,也就是针对提高效率。是每一个创新点都这样吗?

王子涵

我觉得可能真的是每一个。比如 V3 里面,整体总结起来有 3 个创新点。

第 1 个是沿用了 Meta 的 multi-token prediction,让模型一次能够吐出 2 个或者 3 个 token。这样模型就会更加 efficient。我记得他们报告里写的是 2 个 token,也就是一次并行地预测 2 个 token。

第 2 个是低精度训练。所谓低精度,其实就是把数字用更少的比特存下来,在达成差不多训练效果的同时,降低计算成本,这也是 efficiency,也就是效率。

还有一个和并行相关的创新,就是模型并行。它在做 pipeline parallel 的时候,模型会在不同部分运行,需要在不同部分之间做并行。

比如你要先做 forward,再做 backward,中间其实会有很多模型的不同层处于闲置状态,没有处理任何一个向量。DeepSeek 之前的工作是做 pipeline parallel:第 1 个模型,也就是第 1 层,处理完第 1 个 tensor 之后,把它交给第 2 层;第 1 层再处理第 2 个 tensor,就这样一直做流水线并行。

DeepSeek 相当于在这个过程中又做了一些优化。原本有些时候会出现闲置的块,他们把这些闲置的块变少了。所以我觉得每一个创新点都挺 efficiency 的,都是在追求效率。

3. 算子优化加速计算

程曼祺 Manqi Cheng

回到 FlashMLA,你觉得它对社区里的哪一类开发者最有用、最有帮助?

王子涵

我觉得对每一类开发者都挺有帮助。很多人会注意到它是 MLA,但也会注意到它是 Flash。也就是说,它对系统做了一些特别底层的优化,应该写了很多算子。

我和很多人交流时发现,他们自己写代码可能最多只写到比较上层,不会去做系统上的优化,把代码实现出来就好了。FlashAttention 之前做的就是系统上的优化。

比如 Attention 都是这么算的,但在计算过程中,仍然可以用更快的方法。比如把多个操作合并成一个操作,这样就会更快一些。这就需要写一些更底层的算子来实现。

程曼祺 Manqi Cheng

也就是说,即使计算方式还是一样的,但它可以让系统,或者说硬件,发挥出更好的效率?

王子涵

对。

程曼祺 Manqi Cheng

具体到这一次 FlashMLA 的开源,它把这些算子的代码也都开源出来了。我看了一下,它已经写到 C++ 这一层了,肯定是算子优化。

你也可以跟我们的听友解释一下,算子优化大概是什么意思,因为有的人可能不是专门做 AI 研究的。

王子涵

我想了想,算子优化可以用很简单的矩阵乘法来解释。

我们实际做矩阵乘法时,大家可能会想,一个一个算。在这个过程中,GPU 会并行处理一些操作。如果你能把计算方式用 GPU 能听懂的方式告诉它,比如第 1 个操作什么时候要在第 1 个 worker 上做,第 2 个操作什么时候要在第 2 个 worker 上做,它就会变得更 efficient。

其次,你还可以通过合并一些运算的方式,让计算更加 efficient。比如加法结合律、乘法结合律、加法交换律这些。先算 A 再算 B,或者先算 B 再算 A,可能也会有不同。

一个比较经典的例子就是 FlashAttention。整个 Attention 可能包含好几种不同的运算,它把这些运算合并成一种,在 GPU 里面一次完成。

如果我要对很大的矩阵做多次运算,就需要让矩阵通过 GPU 的那座“桥”。GPU 其实有好几层,最里面那一层最小,但计算速度也最快;外面有一个比较大的层,可以装下更多东西,但计算没有那么快。

在实际计算过程中,就是把外面这一层的大矩阵一批一批地送到里面去操作,算完之后再送出来。如果只做一次,这个操作把数据送进去、送出来,并不会花太多时间。但如果要做很多次,每一次传输都会花时间。

所以不如一次把这个矩阵送进去,在里面做完 5 种不同的操作,再把它送出来。这样就不需要多次通过那座狭窄的桥,因为矩阵在两个层之间传递也是需要时间的。

程曼祺 Manqi Cheng

这是一个很简单的算子优化例子。想象一下,你现在有一些粮食,比如小麦,要把它送到河对岸去加工,加工完之后再送回来。

它可能先变成一个中间产物,然后中间产物还要再送到桥的另一边,之后还要再运回来。中间有一座很狭窄的桥,每次通行都会花时间。

如果要走很多次这座桥,就会比较慢。于是有人想了一个办法:把粮食送到桥对面之后,一次把所有的操作都做完,不用再来回折腾这座桥,这样就能提高运算效率。

王子涵

对。在 GPU 运算里,比如有一个很大的矩阵,需要做好几次不同的运算。它需要从一个计算比较慢但比较大的地方,转移到一个计算比较快但比较小的地方,做一次运算之后再送回去,这样可能比较慢。

如果能把所有这些操作总结成一次操作,直接把这个大矩阵一批一批地送过去,处理完了再送回来,就会比较快。

程曼祺 Manqi Cheng

你刚才也提到,大部分人不会写到算子层的优化,但 DeepSeek 可能会自己写很多算子层的优化。能做这件事情,是能力差异还是意愿差异导致的?

王子涵

在我看来是能力差异,因为我自己不太会写,就会觉得这个很难。

我之前也经常觉得,自己的一些项目想起来比较简单,但实际上做起来很困难。比如我去年有一个失败的项目,是让 Large Language Model 做 online training。

之前很多语言模型都是直接做 offline training,相当于我有一些已经得到的数据,用这些数据和奖励信号训练模型。我们当时有一个 idea,前提是让模型实时生成数据。生成完数据之后,可以通过环境给的 feedback,或者奖励模型给的 feedback,判断它生成的数据好不好,然后再对它进行训练。

这个过程当时看起来很简单:模型生成数据,我们给数据一个 feedback,feedback 再回来 update 这个模型,模型继续生成新的数据。

但真正最难的一点在于,如果要写这个代码,它有两条路径。一个是使用当时比较厉害的推理框架,但那个框架已经写到了算子层的优化,我们看不太懂。它把模型 load 进来之后,模型就没有办法被改变了,所以不能一边让模型生成东西,一边对模型做优化,模型是固定的。

如果用最先进的框架,它生成得很快,但模型没法更新,做的还是类似之前的事情:一次生成完,然后再进行各种处理,再用它去优化模型。

另一种方式是我们自己写推理库,但我们确实没有能力做这件事情。我们要写一个生成速度很快、同时又能兼容模型不同更新的库,这就很难。

我讲这个例子,是想说很多时候一些看似简单的操作,都需要很大的 effort,才能从工程上实现。所以我觉得,很多人可能没有这样的 training。Code 这方面的教育一直在前沿发展得很快,但教育本身可能很难跟上。

程曼祺 Manqi Cheng

你刚才说到这个例子,让我想到他们在 Twitter 里说的 small but sincere,用来描述他们要开源的东西。

王子涵

我觉得确实挺真诚的。

程曼祺 Manqi Cheng

我看到 FlashMLA 的页面虽然今天才放出来,但在 issue,也就是社区反馈里,已经有很多人在讨论了。有人问,什么时候可以让 DeepSeek 快点开放支持 FP8 的 FlashMLA 部署代码;也有人问,什么时候可以发布支持 NPU 芯片的版本。

你可以给大家解释一下,现在开源的是什么版本,以及为什么大家希望它能支持 FP8 的部署代码吗?

王子涵

FP8 是 V3 里面的一项技术,也就是我刚才说的低精度训练。

FlashMLA 本身是用来优化 Attention 的 KV Cache 的技术。如果它和模型低精度结合起来,就会更快。

我觉得现在这些不同技术可能是一个一个开源的,大家都希望把它们综合起来,最后形成一个统一的库。到时候我想用哪个部分就用哪个部分,也可以把不同的部分叠加起来。

我觉得他们也许真的有这个计划,因为现在那个大的页面叫 DeepSeek Open Infra Index,看起来就是一个 Infra 工具的指引,可能会陆续开源一些东西。

程曼祺 Manqi Cheng

还有一件比较需要 effort、需要精力的事情是:它可能会开源 5 个库,但这 5 个库怎么综合起来?

索引是一个方面,另一个方面是把这 5 个库合并成一个库,让用户可以随时调用其中不同的部分。这可能就需要把它们 merge 起来,而 merge 的时候可能也会出现 bug,需要投入一些努力。

像这种开源项目发布之后,merge 的工作主要是 DeepSeek 自己的人来做,还是社区里一些厉害的人也会贡献?

王子涵

我觉得这要看他们自己的计划。但社区里的人复现这些技术应该还是挺积极的。我之前看到过非常多复现他们各种技术的工作。

4. GitHub 开源页面指南

程曼祺 Manqi Cheng

接下来我们可以从 FlashMLA 聊得更广一点,也就是我一直很想找人聊清楚的:大模型开源到底是在开什么、怎么开。因为它可能和以前传统软件的开源不太一样。

首先有一个特别实际、也很有用的问题,想请子涵带着我们去看一个开源项目的 GitHub 页面。这个页面里会有不同的栏目和子页面,你可以给我们讲讲,进入一个这样的 GitHub 开源页面之后,主要要看什么。正好我们就看今天这个 FlashMLA 的页面。

王子涵

好的,我需要共享一下屏幕,对吧?

程曼祺 Manqi Cheng

对。你可以先按你的逻辑讲,如果我有什么疑问,再问你。

王子涵

我们可以先从 DeepSeek 的主页开始看。在 GitHub 上进入 DeepSeek 的主页之后,会看到很多不同的功能。比如这里有搜索栏,搜索时可以直接搜 FlashMLA,就会出现一些代码,也会看到 FlashMLA。

也可以在这里找自己感兴趣的库。比如你想找某个库,就可以直接从这里点进去。

程曼祺 Manqi Cheng

可以先给大家解释一下“库”的概念。这个主页的主体就是放了很多库,叫 repo。你可以讲讲这个吗?

王子涵

一个 repo 就是一个比较完整的、能够实现某种算法或者概念的仓库。我觉得 repo 翻译成“仓库”比较合理。

仓库里可以放代码,也可以放很多别的东西。我记得之前有很多人在上面放自己的大作业。

程曼祺 Manqi Cheng

那是不是也可以放小说?

王子涵

可以放小说。其实很多人在上面放自己的大作业,所以它并不是单纯写代码的东西。它很自由,你想放什么都可以。

随便点进一个库,就可以点 Code 下载。第 1 种方式是直接 Download 下载;第 2 种方式是复制这个界面的地址,然后在电脑上,比如 VS Code 里输入 git clone,这样就能把它下载到本地,也是比较方便的方式。

程曼祺 Manqi Cheng

回到 DeepSeek 主页,你会看到它在陈列这些库的时候,前面会标注语言。比如刚才提到 FlashMLA 是 C++,所以大概率是做算子层的一些改进,因为 C++ 是比较底层的语言。有的标的是 Python。

但我看到 DeepSeek-R1 前面并没有编程语言标识,这是为什么?

王子涵

因为他们目前把它当成一个传递自己论文的库。实际上这里面主要是对论文的总结,可以理解成一个说明书,并不是详细告诉你应该怎么做。

比如你会看到它告诉你怎样运行 DeepSeek-R1 模型。你按照这里的代码运行,就可以跑起来。但这个库里主要就是这些内容。至于 R1 相关的训练内容,我觉得他们可能之后会开源,目前还没有开源他们自己的训练框架。

当然,每个人复现它都会有自己的结果,所以也还好。他们自己的方法可能会有更多我刚才说的算子层优化之类的内容,也很期待他们之后把这些东西开源出来。

程曼祺 Manqi Cheng

接下来我们进入一个库的主页。刚才是在一个机构的主页,进入一个具体的库之后,以 FlashMLA 为例,你会看什么?

王子涵

我可能会先看 license。比如这里是 MIT License。MIT License 基本上很短,没有什么要求,比较重要的要求就是 “as is”。

通俗理解就是:我开源这个库没有收你的钱,所以你用我的库出现问题,也别来找我。可以理解成免责声明。

MIT License 比较宽松,最大程度保护了开发者的利益。

程曼祺 Manqi Cheng

我看 DeepSeek 的大部分项目都是 MIT License。

王子涵

对,绝大部分都是。

另外我可能会先从 README 看起。README 里会告诉你怎么安装、怎么测试。比如这里会写怎么安装相关依赖,装完之后可能运行的第 1 个指令是什么。

这个指令基本上就是你了解这个库的入口。

程曼祺 Manqi Cheng

也就是说,benchmark 那一栏是装好之后要运行的第 1 个指令?

王子涵

对。我可以跳到自己的项目上举个例子。

比如我们这个库是 DeepSeek-R1 加 Agent,下面要运行的也是类似的概念。你可能会看到两行代码,第 1 个是 setup,也就是把环境装下来;第 2 个是 download data,也就是下载数据。做完之后,就可以运行第 1 行指令,比如 bash train.sh。

你需要通过这些代码,对这个库有一个基本认识。

再回到 DeepSeek 的例子。比如你看到 python test_flash_mla.py,就可以点进这个文件。里面可能会有一些调用,比如 from flash_mla import 之类的。这相当于一个入口,从宏观角度告诉你这个库在做什么。

如果想了解细节,就要点进具体的代码。点进去之后可以看它的 definition,再进入 definition 看细节,然后逐层深入,了解这个库。

FlashMLA 这个库可能没有完整展示出来,但大概就是这样的逻辑。

程曼祺 Manqi Cheng

所以接下来你会看 README,还会看些什么?

王子涵

我主要通过 README 了解这个库。README 相当于一个窗口。进入 README 之后,我就知道这个库大概是怎么组织的,能够一层一层点到自己感兴趣的地方,以树状图的形式把整个 code base 学下来。

还有一个点,我不知道算不算比较独特:我看 code base 一般不看它有多少 star,我一般看它有多少 issue。

程曼祺 Manqi Cheng

Star 可以理解成点赞,对吧?

王子涵

对。Issue 更像评论。Star 可能更多反映浅层使用这个库的人有多少。每个人 star 之后,可能会用一用这个库,拿它做一些事情。

但 issue 主要是问问题或者报告 bug。比如能不能适配某个东西,有哪些不同需求,或者遇到 metrics、compilation error 等问题。

这能证明他们确实深度使用了这个库,并且对它有一些评论,是真的在深入使用。

程曼祺 Manqi Cheng

这个补充很好,那以后我也知道要看什么了。

关于 issue,我想问一下,它上面分了两类,一个是 open,一个是 closed,区别是什么?

王子涵

如果一个 issue 没有被完全解决,就是 open;如果解决了,就是 closed。

程曼祺 Manqi Cheng

我想问一下,目前 FlashMLA 的 closed 里有两个 issue,其中有一个是“这个东西很好,但在昇腾上用不了”,为什么这个也被解决了?

王子涵

这是他自己解决的。

一般有两种人可以把 issue 关掉。第 1 种是发 issue 的人,他可能不想让这个话题继续讨论,或者自己已经解决了这个问题。比如他遇到一个 bug,后来发现是自己弄错了,就会自己把它关掉。

如果 bug 确实是开发者的问题,开发者也可以把它关掉。这个 issue 就是发帖的人自己关掉的。

程曼祺 Manqi Cheng

明白。这个不是一个典型的 close,它不是 bug,只是在评论为什么现在还不支持昇腾。

王子涵

对。比如还有一个 DeepSeek 交流群,也被 close 了。那相当于是在官方 repo 上发广告,不太合适,所以被关掉了。

程曼祺 Manqi Cheng

我看这个群发出来有 40 个踩。

王子涵

对,有 40 个踩。正常提问的话,一般要么是解决之后被 close,要么就会保持 open,不太会自己发出来再自己 close。

程曼祺 Manqi Cheng

我还有一个问题。在上面这一栏里,除了 issue,还有一个叫 pull requests,这是什么?

王子涵

这个更深层一些。Issue 可能是你对这个库有疑问,你去上面问问题,但通常并不指望自己去解答。

Pull request 的意思是:我主动对你的代码做了一些优化,想把这些修改贡献到你的库里,所以会有 pull request。

点进去之后,它会告诉你这个人希望解决什么需求。针对这个需求,点进 file changes,就能看到他修改了哪些内容。加号是他加进去的,减号是他删掉的,可以进行对比。

项目开发者看到 pull request 之后,会决定接受还是不接受。

有时候项目工作人员自己也会提交 PR。比如拿我自己的库来讲,我们组的库有 30 多个 PR,我们自己做了什么改动,也会通过 PR 提交上去。这样是一个比较透明的过程。

但 DeepSeek 本身已经做得非常好了,再把代码放出来,就不太需要开发者自己通过 PR 来提交。

程曼祺 Manqi Cheng

所以你们把 pull request 简称为 PR。

王子涵

对,PR。

程曼祺 Manqi Cheng

如果我在这个 PR 里看到一个修改,怎么知道它是社区贡献的,还是开发机构自己贡献的?

王子涵

可以点开提交者的个人信息,看这个人是不是 DeepSeek 的。

程曼祺 Manqi Cheng

我现在点开的这个人可能不是 DeepSeek 的,但他是北大的,我看出来了。

王子涵

对,我也觉得他应该是北大的,好像还是 BioTest 的。就是点进去看这个人是不是 DeepSeek 的,或者是不是这个库的贡献者、机构所有者。

程曼祺 Manqi Cheng

明白。所以 GitHub 不会直接给你标识出来,可能要自己看一下。

王子涵

对,要自己看一下。

程曼祺 Manqi Cheng

我觉得这也是一个观察开源项目社区参与度的好方法,对不对?

王子涵

但 pull request 里有价值的可能不太多。可能是因为我没有深度参与这个项目,很多时候大家不会特别深入地给不同项目提 pull request。

我觉得肯定是有的,只是目前没有特别强的 motivation,让大家主动做这件事情。唯一的 motivation,我觉得就是热爱。除此之外还能有什么 motivation?不给钱,也没有实际的物质报酬,所以做这件事的人还是比较少。

程曼祺 Manqi Cheng

这不就是开源精神吗?

王子涵

对,这就是开源精神。它首先需要热爱来支持,同时我觉得也需要一套对应的体系来鼓励这件事。

GitHub 自己会有一些鼓励机制,比如给你发一些小奖章,但我觉得作用还是见仁见智。如果你比较追求在社区里的影响力,或者从这件事里获得一点成就感,这些小奖章还是有一点激励作用的。

程曼祺 Manqi Cheng

刚才我们看的 FlashMLA 还是一个比较简单的库,对吧?

王子涵

对。相比一个大模型的开源库,我觉得它是比较简单的库。

5. 技术报告是开源起点

程曼祺 Manqi Cheng

接下来我们可以聊聊大模型的开源。我觉得这可能是一个分层的问题:大模型开源到底是在开放什么?它涉及很多流程和环节,有训练部分、推理部分,也可能涉及数据集和权重。

比如我们现在说一个模型是开源的,一般是哪些部分开放了?哪些部分即使是一个开源模型,也没有开放?

王子涵

这是一个非常好的问题。开源有不同的层次。

第 1 个,也是必须要开的,就是技术报告。如果技术报告都不开,后面的内容基本上也不太会开。一般肯定会有一份报告。有报告不一定有代码,但报告可以讲清楚技术。

DeepSeek 就是一个很明显的例子,它把很多东西都讲得非常清楚。也有一些报告讲得比较模糊。

DeepSeek 每个版本,包括 V2、V3 和 R1,都有非常详细的技术报告。

程曼祺 Manqi Cheng

这几个里面,你觉得 V3 是最详细的吗?

王子涵

对。V3 真的特别详细。

我觉得这和 DeepSeek 的工作模式有关。团队里每个人都写代码。技术组非常大,占整个团队的人数比例也很高。每个人都会想办法验证自己的 idea,如果验证通过,就把这个 idea 加到下一版模型的训练里。

所以每个人可能只负责一小块,但加起来就会非常多、非常详细。

程曼祺 Manqi Cheng

刚才你浏览 V3 技术报告时,拉到贡献者那一行,我刚好看到了梁文锋的名字。

王子涵

因为团队里每个人都有贡献。里面不只有梁文锋的名字,也会有 data annotation、business 等不同岗位的人。每个人都会写在里面。

我觉得这也是它比较好的一个点,不会非要区分什么。像这种大 paper,确实是每个人只要在团队里,都可能做出贡献。

而且 V3 是一个 base model,包括预训练、后训练、微调、数据等各种工作,工作量加起来肯定非常大。所以有一份 50 多页的报告,我觉得不足为奇。

R1 是在 V3 的 base model 上,迭代出了一套自己的 reinforcement learning,也就是强化学习方法。它只要把强化学习那一部分讲得非常清楚,我觉得就是一份非常好的技术报告。

程曼祺 Manqi Cheng

这一点我也想分享一下。DeepSeek-R1 这次是全民爆火、非常出圈,不光是 AI 圈在讨论。

但我自己对 DeepSeek 变火的传播路径有一个感受:V3 当时发布了一份非常详细的成果,而且展示了很多实验。你刚好翻到了消融实验这一页。

它展示了很多细致的实验结果。我觉得当时这份报告在全球,包括美国比较核心的技术圈层里,植入了一个比较深刻的印象:这是一家非常开放、非常认真开源模型的公司。

这让核心技术圈层对它有了一个印象和 respect。后来 R1,包括最近又开源的 NSA 等内容,能够慢慢获得越来越多人的关注,可能都建立在这个基础上。

王子涵

我觉得这也是他们为什么一开始就非常重视开源的原因。

他们去年其实并没有出圈,关注量远远没有今年多。但今年大家注意到它之后,会去看这家公司的技术报告,然后发现每一份报告都非常详细,写得非常好。

这就是我觉得开源要做好的第 1 步:需要写一份报告。它不一定是论文,也可能只是一份流水账式的报告,但要记录清楚到底做了什么,并且以服务读者的形式,让读者能够由高到低、由浅入深地了解技术。

所以我觉得,开源最重要的第 1 个部分,就是技术报告。

6. 推理训练框架生态

程曼祺 Manqi Cheng

刚才讲的是第 1 个基础部分,也就是报告。除此之外,还有训练和推理代码。

我这里展示两个来自不同机构的训练和推理代码。这个推理库是 vLLM,也就是我们之前一直在考虑使用的一个框架。我觉得它是目前推理领域最广为人知的库之一。

它的 star 有 30K,可能接近 40K,issue 也有几千个,pull request 也有几百个,生态做得比较好。

王子涵

对。

程曼祺 Manqi Cheng

vLLM 主要是谁在维护?

王子涵

基本上是伯克利的这群人。可以看最前面的开发者。

最开始那一版 paper 叫 PagedAttention,我记得绝大部分作者都是伯克利的,也有一些来自 Stanford、UC San Diego,还有 independent researcher,也就是个人开发者、个人研究者。

现在看,它可能已经有 800 多个 contributor,是一个生态做得比较好的库。它还支持 CPU、CUDA、NPU、HPU 等各种架构,很多公司也在贡献。

程曼祺 Manqi Cheng

我昨天刚好和 MiniMax 做线性注意力新架构的人聊了聊。他们当时把 MiniMax-01 开源之后,也有人反馈说不知道怎么优化,因为他们没有放优化的部分。

后来他们把优化部分放到了 vLLM 这个库里,相当于向这个库贡献代码。

王子涵

对。因为这个库的生态做得太好了。

最近也有一些新库,比如 SGLang,这是一个比较新的库,但它也获得了很多关注,contributor 也很多。我听一些人说,它的使用体验可能和 vLLM 不相上下,有些方面甚至更好。

我觉得做 SGLang 的那群人可能更跟潮流。R1 出来之后,他们第 1 时间就宣布支持 R1 的代码。vLLM 的库本身做得非常好,但对于紧跟潮流这件事可能比较佛系。

SGLang 会直接写明,它提供对 DeepSeek-V3、R1 等模型的支持,也是一个生态做得很好的库。

这就是不同框架各自比较有特色的地方。可能你有的功能我都有,我有的功能你也都有,但优化时可能会朝着不同方向去做。

程曼祺 Manqi Cheng

这是推理库。在推理库之前,其实还有一个模型权重。

模型权重一般是在 Hugging Face 上下载。各种各样的数据,包括模型数据和数据集,也都可以在上面下载。

比如这里有 files and versions,点进去之后就是不同的模型。你会发现这是一个特别大的模型,有 163 个切片,每个切片可能有 4 GB。

如果要下载,可以点 use this model。这里有不同的 library,比如用 Transformers library 是这样下载;如果用 vLLM,就是这样下载。

这里的 libraries,是不同推理框架的意思吗?

王子涵

这个其实是 Transformers。Transformers 是 Hugging Face 在维护的库。它可以算是一个推理框架,但不只是推理框架,也可以用来训练。

所以目前大家比较常用的推理框架,可能就是这两个。

整体来说,绝大部分公司应该会开源技术报告和模型权重。开源推理框架的稍微少一些,开源训练框架的就更少了。

程曼祺 Manqi Cheng

这里还有一个字节开源的训练框架。我们之前做 reasoning 那个 work 的时候,也用过这个框架。

王子涵

它叫 verl。它是一个比较好的、支持 RL 的框架。

训练时点进这里,会看到不同的 trainer,比如 PPO trainer。它会告诉你怎么做。里面可能还会有不同的并行模式。

FSDP 是一种并行训练模型的方式,也可能会有其他模式。

程曼祺 Manqi Cheng

字节开源的训练框架叫 verl,对吧?

王子涵

对,叫 verl。

程曼祺 Manqi Cheng

这个框架用的人多吗?

王子涵

看起来用的人还挺多。它的 pull request 很多,open 的有 30 个,closed 的有 196 个,加起来有 200 多个。Issue 加起来也有几百个,至少有一两百个。

程曼祺 Manqi Cheng

所以字节愿意开源一个训练框架,还是比较少见的选择?

王子涵

主要是开源训练框架需要做很多工作。

比如在公司内部写代码时,可能不会特别在意代码规范。但开源之后,就必须把代码写得特别清楚。所以我觉得字节开源自己的框架还是挺好的。

程曼祺 Manqi Cheng

在核心 AI 研究者和技术人员那里,字节开源训练框架这件事,会让大家产生一些好感吗?

王子涵

反正我是挺有好感的,因为我之前用的就是这套框架,它陪伴我度过了一些时期。

7. 数据集为何难以开源

程曼祺 Manqi Cheng

刚才我们讲了几个层次:最开始是技术报告,然后是权重,权重主要可以在 Hugging Face 上下载;还讲到了推理框架,以及比较少开源的训练框架。

数据这个层面呢?你刚才也提到数据集。现在数据开源是什么现状?

王子涵

数据开源的话,几乎没有公司会开源数据集。

他们可能会在技术报告里写一下使用了哪些不同数据、比例是多少,但具体开源数据的公司非常少。我觉得主要还是出于信息敏感性的考虑。

比如你在网上爬数据,只要是能看见的、法律允许的,就可以爬。但这些数据里面可能有一些比较敏感的内容。

假设你爬了很多人的个人网站,这些网站本身肯定能爬。但爬下来之后存进数据集,别人使用这个数据集,就可以把这些人的网站都找出来,可能会拿去做一些不好的事情。

所以开源数据的公司可能有安全性考虑,不完全是他们不想开,或者没有能力开源。

程曼祺 Manqi Cheng

DeepSeek 自己现在开源的内容,涉及我们刚才说的几个大的部分:技术报告、权重、推理框架、训练框架,哪些已经开源了?

王子涵

除了数据集之外,我觉得它基本都开源了。DeepSeek 的训练框架也开源了,我找一下。

他们现在逐渐在开一些。第 1 个开的应该是 ESFT,我自己的那篇工作。我很确定它开源了训练框架,而且我们还做了一些优化。

程曼祺 Manqi Cheng

ESFT 是你自己的哪一项工作?

王子涵

就是专家专业微调。它主要针对 MOE 模型。

MOE 模型里有不同的专家,每个专家都有一些特点。比如它可能倾向于处理不同的任务,在某个任务下,某些专家的激活会更明显。

我们就想,能不能利用这个特质,进行更 efficient 的模型微调。比如微调时选定几个和任务比较匹配的专家,只 fine-tune 这些专家,其他参数不微调。

这样一方面可以减少计算资源,另一方面是让专业的人做专业的事,识别不同专家适合哪些任务。这个工作我们也开源出来了。

程曼祺 Manqi Cheng

但这个代码是不是还可以写得更好?

王子涵

对。当时我们想着尽快把工作推出来,所以会再看一下 eval、train,train 里面可能还有 parallel,然后对它做一些优化。

8. 开源需要额外工程

程曼祺 Manqi Cheng

正好也可以讲讲,从闭源状态到开源状态,我额外要做哪些工作?

你刚才提到,自己内部写代码时,代码规范可能不需要做得那么好。但如果要开源、让所有人都能用起来,就要做这方面的工作。除此之外还有什么?

王子涵

我主要想到的就是这些。

另外,如果你要开源的是一个框架中的某个部分,而这个部分依赖于公司内部正在使用的一个库,但你暂时没有计划开源整个庞大的框架,那么就要让这一部分适配现在已经开源的框架。

我当时在这方面做了很多工作。因为他们当时暂时不打算开源整个很大的库,但我的代码都是在那个大库上写的。所以他们希望我用已经开源的框架重新写一遍。

我重新写了一遍,大概花了两三天,把代码变得更规范,也适配到一个公开的开源库上。

程曼祺 Manqi Cheng

代码规范和适配公开开源库,大概会占你们多少精力?你刚才说后面适配那部分花了两三天,那前面代码规范大概占多少时间?

王子涵

代码规范花了挺久,我花了一周多。

程曼祺 Manqi Cheng

一周多到两三天,在你们这种 AI 研究人员的评估维度里,算久还是不算久?

王子涵

挺久的。一周可以做不少事。

我觉得一周能干很多事情。开源只是一个优先级的问题。有时候你觉得算法很有前景,很想去优化它,就会先优化算法本身。

有时候你觉得开源之后,社区能够真正用上这项工作、享受到工作成果,那开源就是优先的事情。其实都是优先级的问题。

一周多的时间,我可以跑模型、做很多实验。如果去做开源框架,就是想服务社区,把这个东西让更多人用上。

程曼祺 Manqi Cheng

所以对一些原本一直闭源的公司来说,如果要开源模型,甚至之后开源更多框架,确实需要额外的人力支持。

王子涵

非常需要。而且很多公司在这方面积淀比较少,可能更需要多下功夫。

比如开源时怎么把代码写得规范,我觉得很多公司,或者说很多人,都没有受过系统的代码规范教育。现在所有人的代码规范,其实都没有一套系统课程,也没有系统教育。

比如我在美国,和一些 collaborator 合作时,经常觉得他的 idea 很好,但代码细节让人看了比较难受。

我记得之前看过一个别人做的工作。他开源了一个方法,里面有 3 个步骤,就把 3 个文件直接命名成 step 1、step 2、step 3。

我当时看了特别难受,很想跟他说,能不能把名字换一下。比如改成 3 个不同方法的名称也可以。

如果这样做,别人想用你的库做自己的事情,就可以直接再加一个文件,并命名成他要做的那件事。比如他想在 step 1 和 step 2 中间加一个步骤,就不用命名成 step 1.5。

如果把它命名成 step 2,后面的文件名都要改;如果只是把文件加进去,就要命名成 step 1.5,感觉很奇怪。还不如一开始就把不同代码文件的名字写好,后面维护也方便。

我觉得很多时候大家没有意识到,规范不是一日之功,需要练习和学习,才能把代码开得让大家读起来舒服。

程曼祺 Manqi Cheng

你说到这个点,我想起很久以前采访过阿里。他们有一个类似代码规范委员会的机构,专门制定代码规范。

不管你在外面的习惯是什么,进入阿里之后都有一套设计得很细的格式。比如怎么空格,一个东西前面空两格还是空 3 格,都会规定。

他们希望在一个大机构里,大家的代码都比较规范,这样相互协作,包括新人接手老人的工作时,也比较容易修改。

王子涵

对,这很重要。

程曼祺 Manqi Cheng

你刚才说的也解释了我的一个疑惑。文心不是最近宣布要开源吗?但他们宣布要到 6 月 30 日才正式开源。你觉得要这么久正常吗?是因为工作量确实很大吗?

王子涵

工作量很大肯定是其中一个重要原因,具体还是要看他们自己的计划。

9. 开源策略取决于商业模式

程曼祺 Manqi Cheng

刚才我们聊了开源的不同层次,接下来也想和子涵聊一聊不同公司的开源策略,以及目前全球正在发生的开源转向。

我们可以先从本身就在开源的公司聊起,其中当然很有代表性的就是刚才说了很多的 DeepSeek。

从 DeepSeek 的开源策略来说,它一直选择比较开放的 MIT 协议,也一直开源自己最强的模型。另一方面,有一些公司会把最强的模型保留为闭源,开源次强的或者更小版本的模型。

你觉得不同的开源策略,和公司的盈利模式有关吗?

王子涵

我觉得不同的开源策略,确实和公司的盈利模式有关。

有些公司最强的模型就是开源的,可能完全不赚模型本身的溢价。第 1 种可能是老板不想赚钱,开源就是为了造福社会。

第 2 种可能是它不想通过模型 API 赚钱,而是想做更大的事情。这个“大”有多大?我觉得最大可能是重构整个行业生态,比如以后大家都以这家公司的一套系统为标准。

如果想拿开源赚钱,而不是靠订阅费,就可能会开源自己最强的模型。

其实不只是 DeepSeek。比如 AllenAI,美国的另一个机构,也是开源自己最强的模型,根本不赚这笔钱。

而且 AllenAI 应该是唯一一个把数据集也开放出来的开源项目。除了 AllenAI 之外,还有一个叫 EleutherAI 的机构,上面有一个模型叫 Pythia。

它开源到了什么程度?它甚至担心你承担不起独自训练的风险,连预训练过程中的中间 checkpoint 都开源了。第 0 步、第 1 步、第 2 步、第 4 步,一直到第 1,000 步,每隔 1,000 步就开放一个权重。

程曼祺 Manqi Cheng

保姆式开源。

王子涵

对,真的是保姆式开源。因为这家公司可能也是研究型机构。

我觉得第 1 类开源力度最大的公司,包括 DeepSeek、AllenAI、EleutherAI,它们不靠这个赚钱。

第 2 类是开放较小型号的公司。一方面可能要赚订阅费,另一方面也想造福 community。

一些不涉及当前阶段核心商业机密的东西可能会开放。他希望在竞争对手那里保持优势,但同时也想让开源服务更多人,所以会开源一个小一点的模型。

如果社区想自己研究,就可以用这个模型。但如果涉及订阅费,或者任何可能和公司直接相关的内容,就不会开。

程曼祺 Manqi Cheng

你觉得今年我们会看到 OpenAI 开源最强的模型吗?

王子涵

我不太确定。我很期待他们的 plan。

最近 Sam Altman 发过一条 Twitter,说他们要开源,还发起了一个投票。当然现在不涉及最强模型,给的两个选项是 o3-mini 和一个 phone-size model,也就是可以部署在手机端的较小模型。

你比较期待他开源哪个?

程曼祺 Manqi Cheng

其实我觉得开哪个都挺好,都会服务一部分人。还是看他们自己的计划。

但整体来说,对大多数公司而言,即使只开源一小部分,对社会的贡献肯定也比完全不开源好。

王子涵

但不开源也有它可能 make sense 的地方。

我一直在构想一个场景:假如以后 language model,或者说整套 AI 足够强大了,到时候开源是不是仍然是一个好的选择?

后来我的直觉告诉我,到时候可能是第二种公司更 make sense:开源一个比较小的模型,最强的模型不开放。

因为把最强的模型开源之后,很难防止有人用它做一些不好的事情。

程曼祺 Manqi Cheng

你刚才这个观点不是从纯粹商业的角度考虑,而是从技术的社会影响角度考虑,对吧?

王子涵

对。

10. 开源模型带来滥用风险

比如我之前有一次 Twitter 账号被黑了。我觉得我之所以被黑,是因为有人在网上用大语言模型做了一个 Agent。

这个 Agent 会针对不同的人,用不同的方式、不同的角度,给他们发 Twitter 邀请,邀请他们参加各种活动,比如商业访谈之类的。最终目的是让对方点开一个链接。

他会让你觉得这个人特别靠谱,然后去点开链接。我估计他甚至在背后偷偷训练了一个模型,让 Twitter 用户更容易点进去。

一点进去,账号就被黑了。黑完之后,他会用你的账号做一些不好的事情,比如发广告。

我就想,这个人是把最强的大语言模型用于一个不太好的目标,比如以骗你点开链接为目标做优化,最后训练出一个能够骗很多人点开链接的模型。这不就是一件不好的事情吗?

这件事可能还需要一个足够强的模型才能做到。但如果以后我们有了更强的模型,他不只是用来骗人,可能还会用它做更不好的事情,比如直接在网上注册 100 个小号,进行网络暴力,那可能就更麻烦了。

程曼祺 Manqi Cheng

我们今天前面大部分聊的是开源对社区的贡献,以及开源对整个技术进展的加速。你最后说的这个点也非常好,因为你自己就是受害者,是开源的受害者,算是现身说法了。

这也让我想到,之前和一位投资人交流时,我看到他写的一篇分享,里面引用了伊利亚和 Sam Altman 产生分歧时,伊利亚发过的一条 Twitter。大概翻译成中文就是:

“如果你把智能看得比人类的其他所有品质都重要,那你日后的日子可不会好过。”

王子涵

对,不要太卷了。

我觉得他说得很有道理。很多时候,有了这么强的 AI 之后,人类会怀疑自己存在的价值。

但我觉得人类的价值本来就不在智力上。拼智力肯定拼不过 AI,那就不用拼了。

人类不需要证明自己有什么价值。活在世界上,就相当于你进入了一个新游戏,注册了一个账号,成为一名玩家。别人问你能为游戏带来什么,你说:“我为游戏带来一个新玩家。”这就是意义。

没必要比较谁的智力更高。人的某些方面比不过 AI,那就不比了,享受它就好。

围棋那帮人其实也经历了一个很漫长的接受过程,从抗拒 AI 到加入 AI。最后大家把它当成一种娱乐:我知道这个地方 AI 比人强,那我就不和它正面冲突,把它当成学习对象,我觉得也挺好的。

程曼祺 Manqi Cheng

非常感谢今天子涵来做客《晚点聊》,和我们分享他自己参与过的一些开源项目、对开源社区的观察,以及最后这个很特别的个人想法。

我和很多人讨论过,如果 AGI 真的到来,会发生什么。你应该是其中非常年轻的一位,你是 00 后,对吧?

王子涵

我是 2002 年的。

程曼祺 Manqi Cheng

我可能主要是在和 80 后、90 后讨论这类问题,所以大家的想法确实会很不一样。

王子涵

对。

程曼祺 Manqi Cheng

非常感谢你今天来做客《晚点聊》。我们今天的节目就到这里,各位听友,拜拜。

王子涵

好的,谢谢曼祺,非常非常开心。

程曼祺 Manqi Cheng

嗯,好的好的。本期节目就到这里,感谢收听。如果你对今天聊的话题有观察、好奇或疑问,欢迎在评论区分享想法,这也会成为我们节目的一部分,让整个讨论更完整。你也可以把我们的节目分享给对这个话题感兴趣的朋友,推荐更多你想听的主题和嘉宾。你可以从小宇宙、苹果 Podcast 等渠道关注“晚点聊 Late Talk”,也欢迎关注我们的公众号“晚点 Late Post”。下期再见。

102: DeepSeek 启动开源周,大模型开源到底在开什么? | BidClub