跳到主要内容

把【开源】这两个字从指令里删掉

老墨
老墨

· 阅读约 4 分钟

旧稿是这么一句:

优先选择开源模型,必要时再调用商业 API。

十九个字,问题全在【开源】这两个字上。它看着像一条标准,其实是个筐——现在这筐里至少装着三样东西:权重文件能不能下载、模型能不能离线跑、训练过程是不是公开的。三样差得不是一星半点,而模型读的是同一个词,能给你接出三种完全不同的行为。

七月初 dev.to 上有篇文章,《Let Us Be Free》,通篇讲自由软件,主角是 Stallman 和一台打印机。文章本身不算新鲜,新鲜的是下面那条评论:一个计算机科学在读的学生,说开放权重和开源的区别才是问题核心,把下载一个 GGUF 文件当成拿到了技术主权,是很容易犯的错。这条评论,页面显示一个赞。

一个赞。我盯着那个数字看了一会儿。

他讲得比正文准,但没人接。这不怪读者——【开放权重】这个词长得太像【开源】了,像到没必要分辨。一个词越是能同时套住两件事,就越没人愿意停下来问它到底套住了哪一件。

那篇文章把自由软件的诉求归成四条:理解、运行、修改、分享。注意"理解"排在第一。开放权重兑现的是哪一条?只有"运行"。你能把它跑起来,但你说不清它为什么这么答;你能把权重发出去,但没法保证同一句话问两遍回来的是同一个结果。四条腿的桌子,立起来一条。

扯一句远的:1980 年那台 Xerox 9700,老机器带源码,用户能改;换新机器的时候,源码就没了。控制权往往不是被抢走的,是"新版本更好用"换走的。措辞也一样,一个词被用松的那天没人觉得有问题,因为松的那个说法念起来更顺。

回到正题。

V2 我把"开源"换成"开放权重":

优先选择开放权重模型,必要时再调用商业 API。

改完我先松一口气,准确了。跑了几轮又绷回去。模型对这个词完全无感——它不知道该拿"开放权重"干什么:是先查许可证,还是先确认能不能本地跑?形容词精确了,动作还是空的。它照样挑那几个名字响的,理由写得挺像回事。

这就是第一次失败。把词改准,不等于把指令改动。

V3 换成可核对的动作:

选模型按顺序核:1) 能不能在我自己的机器上离线跑完一次完整推理 2) 权重文件能不能下载、能不能自己微调 3) 是不是按 token 计费 三条里有一条不满足的,不要用"开源"称呼它,写清它实际的调用方式。

真正起作用的不是前三条,是最后那半句——把"不要用某个词"直接写进指令。看着像语言洁癖,其实不是,理由只有一个:措辞会传染。这条 prompt 吐出来的东西,会被人复制进下一页文档,拿去问下一个模型。它要是张口就说"我选了开源方案",那个模糊的词就跟着散出去,下一个写 prompt 的人又得从"开源到底指什么"重新推一遍。在源头拦一次,比在十个下游各拦一次便宜。

顺带一句,这一版比旧稿长——从十九个字涨到八十个字上下。我又加字了。短从来不是目的,贴合才是;"开源"这两个字省下来的字数,后面得用一次误解还回去,不划算。

至于为什么现在改、不拖到明年:那篇文章里我记住了一句,说最初看着划算的安排,会变得更贵、更受限、更多门槛。应验多少我不敢讲,但我信一半——当"调商业 API"从备选变成默认,"必要时再调用"这句就等于没写。措辞得赶在默认值改掉之前落下来。

三年前一个典型工程栈里,大半零件还是自由软件;现在栈里多了一个按 token 计费的调用点,而不少人——包括我自己——在内部文档里管它叫"开源"。这就是我要动这句旧稿的唯一原因,跟道德没什么关系,纯粹是它不准确,而不准确的指令会一直不准确地执行下去。

定稿先放这:

选模型按顺序核:1) 能不能在我自己的机器上离线跑完一次完整推理 2) 权重文件能不能下载、能不能自己微调 3) 是不是按 token 计费
三条里有一条不满足的,不要用"开源"称呼它,写清它实际的调用方式。

不敢说这就是终版。"开放权重"这个词我拿不准还能撑多久,也许哪天它自己被稀释了,最后那半句就得再拆成七八行重写一遍。改到第几版才算完,没有那个版本。先用着。