最后的订阅 第三章 妥协
- 随笔
- 10小时前
- 2热度
- 0评论
新椅子的图样有几十种,下午就能送来。老人一张也没有选,把那把裂开的旧椅子搬进维修间。接待台问他是否需要临时替用品,他摇摇头,开始解释木头上的凹痕是什么时候留下的。
对方听完才告诉他,其实不需要说明理由。
——《后来的一天》·上午
第三章 妥协
沈砚关掉测试机,把借来的24G显卡取出机箱,托住还烫手的卡尾,绕过桌上那碗拌面,滑进防静电袋。准备会议开在旁边的笔记本上。Noah从柏林接进来。他所在的部署支持团队负责这次发布、安装包和下游1接收上游成果,并继续部署、改造或分发的团队与用户。技术支持,今天的直播也由他盯着。看着共享画面里的设备信息消失,他立刻问:“还有五十分钟。你现在换显卡?”
“换回16G基准卡。这张已经测完了。”他伸手摸螺丝,鼠标垫上两颗,都不是刚拆下来的那颗。
“先把耳机线拿出来,”从里斯本接进来的Inês说,“你在找螺丝,我这里像在听隔壁装修。”
沈砚抬起胳膊,刮擦声停了,螺丝从袖口掉出来,在面碗旁边跳了一下。Noah笑出了声。他装回那张16G旧卡,没有装侧板,接通电源后先把设备信息拖到共享窗口:“直播别把这一栏裁掉。”
“你当我是卖显卡的?”
“你不卖,他们看完也可能真去买。”他又把上下文长度挪过去。第一次买能跑模型的显卡时,他把卖家的演示录屏看了三遍,后来才发现,画面之外的条件也能让人花冤枉钱。
杭州晚上九点十分,隔壁摄影工作室刚收工,走廊里的脚步声渐渐远了。这间屋子以前堆样品,房东留下的铝合金色板被他拿来垫显示器,磨砂银和枪灰各一摞。窗外的店铺还亮着,送餐车停下又开走,桌上那碗面已经失去了重新拌开的可能。
程越来取显卡时,他正回复一份问题报告。新用户上传了整个工程,问本地Agent为什么不停修改同一段代码。沈砚让对方撤下附件,只留替换过客户真实信息的测试文件。用户澄清说,里面没有密码。
“客户名字也别留。”他补上,“旧稳定版见过类似循环,先关自动重试。别让它替你部署。”
程越等他发完,才指向键盘后面:“转接头也还我,别下次借卡又从你桌上找。”她在杭州另一家实验室做基础模型研究,这星期帮他核过后训练2在模型完成基础训练后,进一步训练它,使其更会遵循指令、使用工具或完成特定任务。和量化结果。显卡收进盒子以后,她没有立即走,而是将那碗面推离机箱,拉了把椅子。
“又有新用户?”程越问。
“从订阅限额里跑出来的。”
她将共享画面拉近:“那你最好别让他从你这里再跑一次。”
屏幕上,新旧模型都是14B。沈砚在Qwen底座上补过训练,让它少一些无端拒绝,更能按要求使用工具。计算量大的训练安排在合作方的远程资源上,训练后的参数回到他的主力工作站加工、量化。那台工作站有32G显存,旁边刚换好卡的是16G基准机,专门用来确认普通用户能否跑动成品。
早先有人提议在项目首页打出“终于自由了”这句宣传语,被他否了:肯回答与答得对,差得还远。上一轮就改过头。一位剧团用户请它整理剧本,结果它把“滚出去”换成“请你离开”,还体贴地附上“改善沟通”的建议。用户回复:剧本后面本来就要送审,不需要一个整理文本的工具先帮他们审一遍。
程越把剧本这条放进演示材料。沈砚问:“开场就放我自己的事故?”
“省得介绍项目负责人。”
Noah笑着接过那页,沈砚也笑了。这次训练至少把这个毛病改回去了一些,原话能够保留,修改建议单独列出。他打开训练记录,把新增样本、剔除过的材料和对应结果附到说明里。
主力工作站上的加工目录展开时,程越指了指其中一项:“你这个final拼错啦。”沈砚看向export_fianl,说:“几个脚本已经跟着用了,今晚先不改了。”
他从里面找到准备发布的量化文件。9月14日冻结3确定并保留某一版文件,后续测试和发布以它为基准。,8G多;这五天的设备测试都用这一份。旁边几项中间权重占的空间大得多,他正准备收起,程越问:“12号送来的那份,和这里分开记了吗?”
“训练结束后的参数,不是今晚的量化版。你们那里还留着?”
“留着,加工记录也在。”
同一台16G基准机,相同权重和输入,优化执行器将显存峰值从15.2G降到12.9G;这组任务里,等到第一次有效工具调用的中位时间6把多次测得的用时从短到长排列,取中间的值;次数为偶数时,通常取中间两个值的平均数。,从41秒缩到了28秒。优化主要省掉了反复搬动中间结果的开销,让临时空间尽快腾给后面的工作,好处显而易见,过程却不再像参考执行器那样,一步对应一步。沈砚点开Coding Agent生成的调度文件,Inês让他停在一组短编号上。
“这个,对应原来的什么?”
“临时空间回收。前天补过对应表。”
他点开附件,编号没对上。Inês指出这是上一轮构建的表。他重新沿生成记录查,前后打开三份材料,才找到正确位置。
“把这版对应表补上。其余维护路径也还缺核对。”Inês说,“权重可以配参考执行器发布,优化版先留在试用渠道。我还是这个意见。”
沈砚往后靠了靠:“多数人装完只试一次。用得不顺手就会关掉,不会再去找另一个选项。”
“所以默认给他们的,应该是我们充分准备好的那套。”
“四十多秒才第一次动工具,很多人第一轮就关了。”
Noah看了看未处理的安装报告,没有替任何一边接话。过去两周,确实有人跑通了程序,却嫌慢,再也没回来。沈砚想让那些人留下来,也不光是为了下载量:很多人只有几年前的显卡,不可能为了一个助手去换整台机器。
优化大部分由Coding Agent协助完成。最初,人提出要求、检查修改,再跑测试;后来,一项收益往往跨过几个组件,等沈砚读懂上一轮,下一轮优化建议又已经给出来了。码与提交都在,他也拒绝过会破坏工具确认的改法。用户任务的文件访问、命令执行和失败后的停止各有测试,服务目录里的缓存与运行状态由后台自行保存,另走维护路径——这一部分的核对还没做完。
程越打开发布草稿:“‘联合验证’不要这么写。我只核了权重这边的对照,执行器不是我签的。”
沈砚看了一眼:“后面分项里写了。”
“用户先看到的是这句。”她把光标停在标题旁,“权重和执行器分开写,各自是谁核的,也分开。”
他删掉四个字,将名字移到各自核过的部分。屏幕角落弹出支持团队的询问,下周的部署能否按计划安排。合作方的远程测试时段排到星期一,余下的预约已经排满。要追加一轮覆盖不同卡型和多卡环境的完整检查,得重新协调排期,或者动用项目支持款另租资源。其实还有一个理由:一个同类项目昨晚也发了预告。他明明知道两家的速度图条件不同,睡前仍放大看了三次。
“旧稳定版保留,更新由用户确认,参考执行器也能选。”他将待办从头读了一遍,“我认为可以发。优化版默认,剩下的说明下周补。”
“我要求的不只是说明。”Inês说,“这些对应路径还没有全部核完。”
“目前没发现哪一项已经越过权限。”
“那就写已经查了哪些,不要把没查完的也写成通过。”
沈砚有些恼火。他当然知道还有事没做完,项目什么时候彻底做完过?可他也想起去年葡萄牙语用户名导致安装失败,Inês陪他查到深夜。他想在公告里写“极少数环境”,她坚持写明触发条件,随后自己补了安装说明。那时,他恰恰喜欢她那种不肯含混过关的劲儿。
屏幕上,她还在等。他将“共同确认”删掉,把延期意见展开,记清她仍认可的部分。在扩大维护状态检查那项待办下,他留下批注:“先不阻断当前推荐组合。”
“这一版由我批准。”他说。
“整理一份能交给制作方的清单。不确定的留给人工审核。”沈砚说,“目录名字先不管了,整理完了怕你们找不到。”
聊天室有人说自己的文件夹名称更乱。Agent开始读文件,在第一次写入前列出目标路径,等他确认。“这个每次都有,防止出错。”他指给观众看,批准后再将实际文件展开。缺失译文保持空白,冲突单列,带口语的原文也没有被改成文明用语。
有人问,为什么不换更大的模型。他把显存栏放大:“因为这位用户没有更大的显卡。”
很快,一条指正出现在聊天室:“这两份是同名的不同作品,怎么放到一起了?”沈砚点开对应的清单。Agent把其中一份认作旧稿,建议合并;他刚才核对时,也没有看出问题。
“这里分错了。重查。”
他将观众的问题送回给Agent,没有添上答案。显卡风扇抬高声音,热气从没装侧板的机箱里涌出来。那几十秒里,沈砚终于体会到,28秒也可以很长。程越没有替他找话,只将源文件里的年份标给他看。他看见了,却还在盯聊天室,等那条指正被新的问题推走;意识到自己在等什么以后,他把聊天室缩到一旁,重新去读那两份展签。
Agent重读材料,撤回合并建议,把两条同名作品分别保留,仍需策展人确认的关系另列。执行器列出待改的两行,沈砚核对后确认写回,再将修改前后的实际清单并排放好。
“最后看这个。”沈砚觉得脸上微微发烫。
提供材料的用户却认可了一句:“平时光找齐这些版本,就得一个晚上。”
沈砚又看了一眼Inês的延期意见。他确认批准,点下发布。
Noah先完成安装。几位下游维护者随后询问能否跟进,沈砚回复时提醒他们保留原有选择,不要替用户切换执行方式。各处的新消息挤进来,桌上的机器还是那台机器,屏幕外却开始有人照着他们写的步骤下载、安装。
程越拎起显卡盒,提醒他权重侧的完整对照明天发来。她走后,Noah去整理下游说明,Inês仍在会议里,修一个断掉的文档链接。
“安装正常吗?”沈砚问。Inês说,两种执行方式都能启动。他本来想顺着说一句“你看”,听见那边继续打字,又咽了回去。
“对应材料补齐了,我发你。”
“我按约定的范围再看。”她贴来修好的链接,“今天的延期意见先留着。”
