先把"主权 AI"这四个字翻译成代码。
struct sovereign {
int data_in_house; /* 数据出不出这个框 */
int model_writable; /* 权重能不能自己改 */
int compute_owned; /* 卡是不是自己的 */
int auditable; /* 生产这一侧能不能签字 */
};
四个字段,一个 struct。看着挺像回事。
串起来想一遍就知道它不是四个 feature。数据不出边界,靠的是你知道它在哪块盘上。权重能改,前提是它作为一份文件落在你手里,而不是一个别人家的 API。卡归自己,等于调度器不归别人调度。审计能签字,意思是从输入到输出每一步都留下了落地的记录。四件事是一件——边界画在哪,钥匙在谁手上。
所以我更愿意把它写成一个函数。
int may_leave(struct tenant *t, struct blob *b);
返回 1,字节可以走。返回 0,留在框里。四个维度是四句汇报材料,一个函数的返回值才是实现。
Mistral 前阵子把这四句话写进了 D 轮公告,顺带拿了三十亿欧元,投后两百多亿。欧洲科技公司做过的最大一笔股权融资,三星领投,上一轮领投的是 ASML。
造光刻机的和造内存的先后来站队。这个动作比公告里那些"主权"叙事坦率——卡和模型,两头都想占住位置。
说回工程。这笔钱的用途没什么可挑:扩研究、买算力、铺基础设施、加速商业化。翻译过来就是把规模往上堆。该干的事。训一个前沿模型的资产属性,跟我手上那个玩具存储引擎不是一回事——这边一个 make 加一个结构体收工,那边再多买一个机柜也不嫌多。规模这道题,该花的钱不能省。
但规模不是复杂度。这两件事长得像,最容易混着讲。一台机器可以有十万张卡而结构简单,也可以只有两块卡却套了七层调度器。前者是贵,后者是烂。贵是账面上的,烂是结构上的;前者掏钱能补,后者掏钱只会更烂。两码事。
我在意的是公告里另一个词:全栈。
原话说它是唯一一家把全栈做齐的 AI 公司——开放权重模型、跑模型要的基础设施和算力、还有落到生产里的产品。作为工程描述,这话拆开来是这样:模型是我写的,跑模型的机器是我的,用模型的产品也是我维护的。三个身份叠在一个人身上,就是三份复杂度叠在一个人身上。一个东西同时当供应商又当用户,出了故障,账没人跟你对。
说到这儿得拐一句。我原来对"全栈"的判断,在开放权重这件事上不成立。
我反对加抽象,反对往系统里塞中间层。发布权重是反向操作:它不往你的系统里加东西,它把最难调的那层复杂度拿出去,交给每一个持有它的人。这不是过度设计,是把设计的责任让出去。砍掉可能性,砍的是自己系统里的分叉;把权重放出去,是承认别人怎么跑它不归你管,也不该归你管。两个方向看着相反,是同一件事的两面——该你负责的边界画清楚,边界之外的别伸手。
把四个维度再拆细一层。"算力私有且可预测"这句最容易被当成套话。
可预测在工程上有明确所指:同一份输入,今天跑三秒,下个月跑还是三秒,不会因为隔壁谁开了新租户就抖一下。这跟共享调度打架。共享能把利用率做上去,但利用率从来不是可预测的同义词。真要做到那条可预测,你只能自己划一块卡、排自己的队、自己承担空闲。这笔账算得清——用闲置率换确定性。谁跟你说"加一层调度就能可预测",都是把两个打架的东西说成一件。
"模型可控制可定制"也一样。放在平台侧它是一份 API 文档;放在自己机器上它是一个训练脚本的输入和输出。前者你调的是别人家的旋钮,后者你手里握的是一份权重文件。开放权重在这个语境里不是情怀问题,是接口问题——没有文件,你就没有那个旋钮。
说句题外话。我那个玩具存储引擎,第二版加过一个插件接口,想着以后能换后端。接口写了两天,实现了一份,剩下全空着。半年后回去看,那份空实现连编译都过不去了,底层结构体改过两轮。整个插件层被我删掉,换成编译期一个宏。改完那个下午心情挺好,少了一个要一直维护的接口。
扯远了,回到那一百多家企业。公告举的名字里有空客、ASML、汇丰这类。共同点是数据不能随便出门,出了事谁签字要上法庭。他们买这个,买的不是全栈那三层有多厚,是上面那个函数返回 0 还是 1。
所以判断供应商的标准就一条:
if (may_leave(t, b) == 0) {
/* 换个地方还跑不跑得起来 */
return recompile_on(my_own_machine);
}
权重给不给你、数据出不出得去、换一家跑要不要重写业务代码。前两件供应商自己能回答,第三件骗不了人——把权重下下来,换台机器 make 一遍,成不成十分钟就知道。
钱的账我不算,算不明白。我算的是另一本:这东西,你离不离得开。