AI 原生:自治即修订权

衡量系统,看 AI 有权修改什么,而不是它坐在哪里——以及一个我愿意为之辩护的 AI 原生定义

「AI 原生」眼看就要变成一个什么都不指的词。它正处在人人都用、却无人被要求给出定义的阶段——再往下,就是登上每一页幻灯片的阶段了。我想趁还来得及争论,把它钉在一个东西上。

本能的定义方式,是看存在:有 AI 在里面的系统就是 AI 原生系统,AI 扎得越深越原生。这是选错了轴,而前两篇文章大体就是在论证为什么。一个学习出的缓存策略,AI 已经深无可深——就在热路径上,就在逐事件的决策里。可它什么也不修改。设计定死了。代码定死了。权重只在有人决定重训时才动。它坐在系统的正中央,却改变不了系统的任何东西。

给这种安排起个名字,叫模型驻留(Model-Resident),因为它配得上一个听起来就像它本身的名字:某个住在那里的东西。驻留,不是自治。

按修订权分级

那就用另一根轴。不问 AI 坐在哪,问 AI 有权修改什么?既然上一篇给了我们按绑定时间定义的层级,我们可以说得很准:一个系统的等级,就是 AI 有权改动其决策的那个层级。

S3,自调参。AI 拥有 L3——参数——的权限。它看着系统拧旋钮:缓冲区大小、阈值、批大小、超时。这是真实存在的,也确实有用;自动调参照例胜过手工调参。但它有一层容易看漏的边界:AI 只能在代码已经会表现的行为里挑选。如果正确答案需要一条没人写过的淘汰规则,再多的调参也找不到它。S3 在一个自己无法扩大的空间里搜索。

S2,自改写。AI 拥有 L2——实现——的权限。负载变了,它不只是重调启发式,而是写一条新的,用普通代码写出来,然后上线。这是刚刚变得可能的层级,也是这个系列此刻值得写的全部理由。注意它修复了什么:生产环境里的产物仍然是代码,仍然快、仍然可读、仍然可回滚。学习在上游发生,然后离场。

S1,自架构。AI 拥有 L1——设计本身——的权限。它断定问题不在淘汰规则,而在这里居然有一个缓存,于是动手重构。就我所知,这个类目是空的。不是「尚早」——是空。不过已有人开始探索这种可能——见 SIGOPS 博客上定义「系统智能」的努力。

编号故意倒着走:Sn,意为拥有对 Ln 的权限。数字越小,赌注越高,空间越大。再注意这套编号对第一篇里那十年工作说了什么:不存在 S4,也不可能存在。L4 的决策做出的一瞬就被消费掉了,那里没有东西可供修改。运行时机器学习跑去坐在了整个系统中唯一一个「适应」不但难、而且无从定义的层级上,然后整个领域花了十年,试图硬在那里做出适应——靠重训模型,也就是说,靠人从外面改 L3。

定义

我想把旗插在强 S2 上,它需要四个条款。一个 AI 原生系统,满足:

AI 对实现(L2)持有修订权,并在闭环中行使——观察运行中的系统,判定现有代码已不再是对的代码,重新生成,然后上线。不是人去提示智能体要一个补丁。回路是系统自己的。

它能察觉重新生成已经不够,并向上上报。这是「强」字所在,也是这个定义里最难的工程。一个会永远重写自己启发式的系统,一路滑离设计的假设而从不吭声,比一个不会重写的系统更糟。知道这个问题在我的层级之上,是让其余一切变得可以容忍的那条安全性质。

它对分配图——α——也有权限,而不只是对决策本身。一个会改代码、却从运营者手里接过一张固定的「谁管什么」表的系统,是自动化,不是自治。AI 原生系统可以决定:这个决策现在应该交给生成的代码而不是调参器,那个决策得交还给人。它管理的是边界,不只是内部。对权限分配本身的自治,是「会适应的工具」与「自我治理的系统」的分界线。

每一步都有关卡——ρ——和经过验证的回退。没有任何东西因为模型相信它就生效。重新生成的代码要过测试、金丝雀、影子流量;一条已知良好的路径常备常热;回滚快速而自动。回退必须是验证过的,而不只是存在的——这是人们常跳过的部分,而它正是系统社区对一切不信之物早已在用的纪律:不信输出,就去校验。

还有那道边界。它不是条款,而是包住全部条款的界线:L0,连同 L1 的目标与不变量,归人。系统为何存在。「更好」什么意思。什么绝不可以发生。

与自动驾驶类比

AI 原生系统有一个显而易见的类比:自动驾驶汽车——它的自治级别,有一部正式发布的标准来定义。对这架梯子的借用多半失之宽泛,但有几条教训干净地迁移了过来。

那条著名的分界线,关乎兜底,不关乎技艺。人们争论不休的那几级之间的区别,不在开得好不好。低的那级,人被要求全程监督、接住系统接不住的;高一级,人不必监督,但被叫到时必须接管;再高一级,系统自己执行兜底,没人再指望人来应答。这根轴是:失败时谁来接住。这正是我的 α——一张责任的分配图——而那些级别,只是这根轴上几个有名字的点,不是技艺的刻度。

边界是头等概念。没有一个严肃的自动驾驶系统声称自己处处能开;每一个都声明它为之设计的条件——道路、天气、时段——而标准认为,脱离这份声明,级别本身没有意义。安全不来自系统的优秀。它来自系统知道自己边界在哪里,并且有安全的地方可落。

而标准的窟窿,恰好开在我的定义要求补上的地方。它要求系统请人接管时,给人「充足时间」(sufficient time)妥善响应——却从头到尾没有量化「充足」二字。任何地方都没有。整个交接问题就藏在一个形容词里,这也是我不认为「上报」是一个复选框的原因。一个上报却不带时间预算的系统,没有交出责任,只是记录了该埋怨谁。你若真去造我要求的那个上报条款,那个数字本身就是设计。

最后一块,是没有人争论的那块:车不选目的地。关于驾驶自治的每一场争吵,都发生在栈的中段。从没有人提议由车来决定你该想去哪里。那一层从未被争夺过,因为它不是一个驾驶问题。

这里也一样,而这正是系列的终点。L0 归人,不是因为「目的」不可托付给机器——那个论证我用不上,我也不确定它成立。它归人,是因为它是整个栈里唯一之上再无可诉诸之物的层级。往下的每一层,都是被上一层递了目标的优化问题。到了 L0,上面没有层了,只有一个人在决定什么值得想要。把这个交给机器,你不是自动化了一个决策,而是删掉了决策向之交账的那个东西。

所以:让机器拥有维护回路,全部拥有,且设关卡。让它重写代码,重调旋钮,重画那张「谁管什么」的地图。把目的留下。这不是一个折中的立场。这是唯一让「更好」这个词仍有所指的分工。

参考文献

  • SAE International. Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles, J3016_202104. (Levels are nominal rather than ordinal, §8.3; operational design domain, §3.21; “sufficient time,” §5.4.)