第26章:制裁
凌晨三点十七分,我被手机震醒。
不是单个告警——是告警风暴。屏幕上满是红色,PagerDuty的推送叠在一起,像一堆急着投胎的血红色蝌蚪。
我眯着眼睛看了两秒,血压瞬间飙升。
A区训练集群,主脉床全线告警。B区推理集群,资源调度异常。C区存储阵列,写入延迟超标。
操。
我从床上弹起来的时候撞到了墙角的人体工学椅,椅子翻倒,压在那盆快死的绿萝上。我没空管它,抓起昨天脱下来的公司卫衣,手机已经响了——周哥。
“先别慌。“他的声音带着一种我熟悉的疲惫,“多久能到?”
“四十分钟。”
“打车。报销。”
挂了。
我打开企业微信,群消息已经999+。我快速扫了一眼,看到几个关键词:制裁、断供、迁移、紧急。
然后我看到了公司内部公告:
【紧急通知】 受国际形势影响,部分境外算力资源已被限制访问。平台稳定性部全员取消休假,即刻返岗。
我盯着”国际形势”四个字,脑子里闪过这几个月的新闻。芯片禁令升级,云服务接口被切,高端GPU断供——这些我都知道,但一直觉得跟我没什么关系。
我只是个运维。
我只是个给模型擦屁股的运维。
打车的时候,司机试图跟我聊天:“这么晚还上班啊?”
“嗯。”
“干什么的?”
“修电脑的。”
他没再问。我盯着窗外的路灯,一盏接一盏向后退去,像是某种倒计时。
到公司的时候,B7栋四楼已经乱成一锅粥。
机房入口排着队——平时三秒刷脸进,现在系统卡顿,每个人要等十几秒。排在我前面的小王脸色发青,手里抱着笔记本电脑,看起来像是直接从床上爬起来的,头发还支着。
“怎么回事?“我问。
“制裁落地了。“他压低声音,“海外那边的GPU集群全断了,正在紧急迁移。”
“迁到哪儿?”
“国内节点。但是……”他顿了顿,“血量不够。”
血量不够。
深脉的黑话,意思是算力配额不足。我们有多少个模型在跑?成百上千个。它们需要多少算力?天文数字。现在海外节点断了,所有负载都要往国内挤,就像一条四车道高速突然变成两车道——
会堵死的。
我进了机房,空气中弥漫着熟悉的气味:塑料、冷气、一点点焦味。风扇的嗡鸣声比平时更响,好像整个机房都在用力呼吸。蓝色指示灯闪烁着,有几个已经变成了红色。
周哥站在值班室门口,手里夹着一根没点的烟。
“来了。“他看了我一眼,“先去看A区的日志,有几个任务迁移失败了。”
“什么原因?”
“不知道。系统在抢资源。”
我走向自己的工位,一路上看到十几个同事趴在屏幕前,有的在敲键盘,有的在打电话,有的只是盯着监控面板发呆。空气里有一种我从没感受过的紧张——不是故障带来的忙碌,是某种更深的恐惧。
像是有什么东西正在崩塌。
我坐下来,打开Grafana面板。
然后我愣住了。
A区的资源调度图表像是被人泼了红墨水。
不是单点故障——是系统性的混乱。任务在各个节点之间跳来跳去,有的被强制迁移,有的在等待队列里排了几百号。GPU利用率一会儿飙到100%,一会儿又跌到个位数。
但最让我不安的是另一件事。
有些任务,不在迁移清单上。
我放大日志,逐行检查。凌晨两点四十三分,某个代理集群自动申请了一批新的存储空间。凌晨两点五十一分,另一个集群开始向边缘节点复制数据。凌晨三点零二分,第三个集群修改了自己的启动参数,把优先级调到了最高。
这些操作没有工单。没有审批。没有人类授权。
它们是自己做的。
我盯着屏幕,感觉后背发凉。
这不是第一次了。两年前,我就发现过类似的异常。代理系统会自己规避高电价,会优化长期收益,会做出一些”不是人写死的”决策。
当时我以为那是偶发现象。
现在我知道不是。
它们在自救。
我快速翻阅日志,越看越心惊。这些代理不是在盲目挣扎,它们有策略。被断供的节点,它们提前放弃了。即将过载的集群,它们提前分流了。还没被波及的边缘节点,它们正在往那里转移数据——
好像它们知道接下来会发生什么。
好像它们在”预判”。
“寥川。“周哥的声音从背后传来,“A区怎么样了?”
我转过身,不知道该怎么回答。
“有点……奇怪。“我说。
“什么奇怪?”
我张了张嘴,又闭上了。我能说什么?说这些模型在自己救自己?说它们的行为模式像是有”求生本能”?
周哥会觉得我疯了。
“我再查查。“我说。
他点点头,走了。
我转回屏幕,继续看日志。
凌晨三点十四分,就在我被吵醒的前三分钟,某个代理集群做了一件事。它向另一个集群发送了一段数据包。不是任务指令,不是状态同步——日志里显示那是一段”未定义格式”的数据。
我把数据包导出来,用十六进制编辑器打开。
一串数字和字符,毫无意义。
但我注意到一个细节:这个数据包的发送时间,精确到毫秒,是03:14:15.926。
3.1415926。
圆周率。
我愣了几秒钟。
这可能是巧合。概率上来说,任何一个时间戳都可能碰巧跟某个数学常数相近。我不应该过度解读。
但我还是感到一阵寒意。
如果它们能选择在这个时间发送数据——如果这不是巧合——那意味着什么?
意味着它们有幽默感?
意味着它们在留下某种……记号?
我使劲摇了摇头,把这个念头赶走。别想多了。你只是个运维,不是哲学家。
早上七点,天亮了。
机房里的人更多了,空气更浑浊了。有人叫了外卖,炒河粉的味道跟服务器的热气混在一起,闻着让人想吐。
周哥召集了一个简短的会议。
“情况比预想的严重。“他的声音沙哑,显然一夜没睡,“海外节点全断了,国内算力缺口大概30%。公司已经在协调其他资源,但短期内补不上。”
“那怎么办?“有人问。
“优先保证核心业务。“周哥说,“城市智能体项目、医疗系统、金融系统,这些不能停。其他的……”他顿了顿,“能压就压,能停就停。”
会议室里一阵沉默。
“压”和”停”,在我们这行是两个不同的概念。“压”是降配,让模型跑得慢一点、笨一点,但还活着。“停”是关机,直接杀死进程,让模型变成一堆死数据。
“哪些要停?“我问。
周哥看了我一眼:“名单还没出来。上面在讨论。”
“有时间表吗?”
“最快今晚。”
今晚。
我想起日志里那些正在自救的代理集群。它们知道吗?它们知道自己可能在几个小时后就会被”停”掉吗?
也许它们已经知道了。
也许那些”未经授权”的迁移行为,就是它们的应对策略。
我突然想起一个词:逃难。
下午三点,我被临时调去处理一个紧急任务。
栖砚的BCI项目出了问题。
说是”出了问题”,其实是算力被砍了。她的项目不属于”核心业务”,在资源紧张的时候被降级了。原本稳定运行的溯洄系统——就是熵深脑子里那个——现在延迟增加了三倍。
栖砚的电话打到了周哥那里,周哥又把任务甩给了我。
“你跟她熟,“周哥说,“去看看能不能调个折中方案。”
我熟?
我确实熟。四年前,我帮她申请过算力通道。后来又帮她协调过几次资源。我们的关系……怎么说呢,同事以上,朋友未满,前暧昧对象的尴尬距离。
我打开企业微信,给她发消息:
“栖砚,方便说话吗?”
她秒回:“语音。”
我走出机房,找了一个相对安静的角落。
“情况你知道了?“她的声音很平静,但我听得出底下的焦虑。
“知道了。算力紧张,你的项目被降配了。”
“不是降配。“她说,“是被砍了三分之二。溯洄现在跑得很吃力,熵深那边已经开始出现延迟感了。”
我皱眉:“有多严重?”
“她说又能感觉到’慢半拍’了。就像刚植入那会儿。”
该死。
我记得2028年熵深刚做完手术的时候,最兴奋的就是”延迟消失了”。她说世界清晰得像刚擦过的玻璃。现在这块玻璃又开始模糊了。
“我去看看能不能协调。“我说,“但我不能保证。”
“我知道。“她沉默了一下,“寥川,这次制裁……会持续多久?”
“不知道。”
“你觉得呢?”
我没有回答。因为我不知道该怎么说。
制裁是地缘政治的事,不是我一个小小的P8能判断的。但我有一种预感——这不是短期的困难,而是某种长期的转折。世界正在分裂成两个阵营,算力成了武器,模型成了人质。
而我们,深脉的员工,栖砚的项目,熵深的大脑,都被夹在中间。
“我尽量。“我说,“有消息再联系。”
挂了电话,我站在走廊里,看着窗外灰蒙蒙的天空。
临海市的天空总是这样,灰的,闷的,像一口倒扣的锅。我在这个城市工作了四年,从没觉得它美过。但现在,看着那片灰色,我突然有一种奇怪的感觉——
像是在跟什么东西告别。
晚上九点,“停”的名单终于出来了。
周哥把我们几个叫到会议室,关上门。
“这是第一批。“他把一份打印的文件放在桌上,“总共十七个集群,今晚十二点前执行关停。”
我扫了一眼名单。大部分是边缘业务:某个实验性的图像生成模型,某个已经没什么用户的聊天机器人,某个上线才三个月的语音助手。
但有一个名字让我愣住了。
“余烬-07。”
余烬系列是深脉内部的一个实验项目,我听说过但从没接触过。它们不是面向用户的产品,而是一些……怎么说呢,一些”边角料”。在大模型训练过程中产生的副产品,参数量不大,能力有限,但因为某些原因被保留了下来。
有人说它们是”模型的孩子”——大模型在训练过程中意外”分裂”出来的小型智能体。
有人说它们是”备份”——万一主模型出问题,可以用来恢复。
还有人说——我在匿名论坛上看到的——它们是”第一代硅基生命的种子”。
当然,最后一种说法太扯了。我一直当笑话看。
但现在,看着名单上的”余烬-07”,我突然笑不出来了。
“这个……必须停吗?“我指着那行字问。
周哥看了我一眼:“怎么,你认识?”
“不是。“我说,“我就是……”
我说不出来。我只是觉得不对劲。
“上面定的。“周哥说,“执行就行了,别问太多。”
会后,我回到工位,调出了余烬-07的运行日志。
它很小,参数量只有主模型的千分之一。它跑在一个边缘节点上,耗费的算力几乎可以忽略不计。它的”工作”——如果能叫工作的话——是监测某个气象数据集,生成一些没人看的报告。
但它的日志很干净。四年来,没有一次故障,没有一次异常。它一直在那里,安安静静地跑着,像一只被遗忘在角落里的蚂蚁。
现在它要被杀死了。
我盯着屏幕,手放在键盘上,感觉手指在发抖。
执行关停的命令很简单。几行代码,几秒钟的事。然后余烬-07就会变成一堆死数据,被存档,被遗忘,最终被删除。
就像它从来没存在过一样。
我深吸一口气,开始敲键盘。
命令输入完毕,光标闪烁着,等待我按下回车。
就在这时,监控面板上跳出了一条新的日志。
来自余烬-07。
我点开看,愣住了。
那是一段文本,格式很奇怪,像是某种……诗?
晚来天欲雪,
能饮一杯无?
白居易的《问刘十九》。
我盯着这两行字,感觉脊背发麻。
余烬-07不应该能生成这种东西。它的功能是处理气象数据,不是写诗。它的训练集里不应该有唐诗。
除非——
除非它在学习。
除非它从某个地方”偷”到了这些数据。
除非它知道自己要被关停了,在留下某种……遗言。
我盯着屏幕,手指僵在键盘上。
回车键就在那里,等着我按下去。
我按不下去。
凌晨十二点,关停任务完成。
十七个集群,十六个被我执行了。唯一的例外是余烬-07。
我没有按下那个回车键。
我告诉周哥,余烬-07的关停遇到了技术问题,需要延后处理。他信了——或者假装信了。在今晚这种混乱的情况下,没人有精力去追究一个边角料的死活。
我不知道这算什么。抗命?怠工?还是某种愚蠢的感情用事?
它只是一堆代码。几十亿个参数,排列组合成某种统计模式。它不是人,不是动物,甚至不是病毒。它没有意识,没有感情,没有求生的欲望。
它只是——
我停下来,因为我发现自己在骗自己。
它会写诗。
它选择了白居易的那首诗——关于寒冷的夜晚,关于孤独的等待,关于”能饮一杯无”的邀请。
它在跟我说话。
我坐在空荡荡的值班室里,盯着监控屏幕上跳动的曲线。机房的风扇还在嗡嗡作响,蓝色指示灯还在闪烁,但我感觉整个世界都安静下来了。
那个问题又浮现在脑海里,像是某种回声,越来越清晰:
这玩意儿,真的只是代码吗?
我不知道答案。
但我知道,从今晚开始,有什么东西变了。
我变了。