一个人做工具,任何一个「每次调用都要花钱」的功能都得先算笔账。图片超分就是典型:一张图放大四倍,服务端要跑一次不轻的模型推理,这笔算力要么自己买 GPU,要么调别人的 API,反正每处理一张都在扣钱。用户一多,高峰期还得排队,要么加机器,要么让人等。这两条对独立开发者都难受。
后来我把这类活儿尽量往浏览器里挪,超分是其中一个。挪完之后成本结构整个变了,值得说清楚变在哪。
服务端超分的成本是「按次」的:处理量涨一倍,账单涨一倍,跟你收不收得到钱没关系。端侧不一样,模型文件从站点下载到用户浏览器,缓存起来,之后每一次超分都是在用户自己的设备上跑,不再经过我的服务器。对我来说,一万个人用和一百个人用,服务器这头的成本几乎一样——我只出静态文件的托管,推理那部分的钱我根本不花。排队也没有了,因为根本没有一个中心节点在排,每个人的浏览器就是自己的算力。
对用户那头,体验也顺一些。不用注册、不用把图传出去等回传,选个模型和倍数,本地就开始跑。第一次会等模型下载,这是端侧唯一的「贵」——超分模型几十到几百 MB,第一次要落地。但它只贵这一次,下完进浏览器缓存,之后再用不重复下载,除非用户清了站点数据或者开无痕。所以用户实际等的是「下载」,不是「排队」,这两种等待的手感完全不同:排队是每次都等、还不知道多久;下载是等一次、之后都快。
反过来我也得承认,这笔账不是凭空省的。服务端那部分成本没有消失,是转移了——转成了用户端的下载流量、内存占用和 CPU/GPU 算力。低端设备跑大模型会慢,甚至因为最终像素太大被工具拦下来不让处理。所以端侧超分不是「更便宜」,是「成本从我这边挪到了用户那边」。我省了服务器账单,用户付出了下载和等待。这个交换对超分这种「偶尔用一次、又特别不想传图出去」的功能是划算的,但不是所有功能都适合这么挪。
当然也不是所有超分都该往端侧塞。如果是后台批量处理一大批图、结果不直接给某个用户看,把它放服务端用统一算力反而更省心——端侧的前提是有个真人坐在浏览器前,愿意等模型下载。为一个没有交互的批处理让服务器空转着等浏览器,是把简单问题搞复杂了。
判断某个功能该不该端侧化,我现在就看两条:一是它是不是按次烧钱的重计算,越重越值得挪,超分、抠图、视频处理都算;二是用户在不在意「图不出设备」,越敏感越值得挪。两条都占,端侧就是好买卖;只占一条,就得再掂量下载那几百 MB 值不值。图映的超分把模型放到浏览器里跑,本质就是吃这两条的红利。