百度发布 Q3 财报:非广告收入大涨背后的 AI 转型

百度 Q3 财报里非广告收入那块涨了 17%,核心是 AI 云。看新闻稿的时候,我正在调试 Rembg Pro 的并发模块,服务器风扇嗡嗡响。这感觉挺讽刺的,巨头在云端用 AI 收钱,我在地下室用 AI 抠图,本质上都是处理像素,但规模差了几个数量级。

我去年搞团队那会儿,接了个电商批量抠图的单子,要求 24 小时内处理 5 万张商品图。当时用的还是单线程调用开源库,机器跑了一晚上,崩了三次,内存泄漏查得我想吐。客户在微信群里催,语气从“老师”变成“兄弟”最后变成直接 @。那是我第一次被“规模”毒打,意识到在 AI 面前,没有并发的“智能”就是个玩具,根本谈不上生产力。

所以砍掉团队、回归一个人之后,我死磕的就是这个:怎么让一个本地化的深度学习模型,像工厂流水线一样稳定、高速地跑起来。Rembg Pro 现在能稳定处理 1000 张/分钟的并发,靠的不是什么黑科技,是土法炼钢式的系统调优。

第一层是数据流。别一上来就想着模型多牛逼,先把 I/O 管道打通。我用 Python 的 concurrent.futures 搞线程池,但关键不是线程数开满,是得和磁盘读写速度、CPU 解码能力匹配。一开始盲目开 32 个线程,结果全堵在图片加载和格式转换上,GPU 闲着。后来做了个预处理队列,先把一批图片统一解码成 NumPy 数组扔进内存,模型推理线程只从内存里取数据,这才把 GPU 利用率从 30% 拉到 70% 以上。

第二层是模型本身。那个 U2-Net 模型原版有点重,对 512×512 的图跑一次前向传播要 90 毫秒。5 万张图,这个速度就是瓶颈。我试了模型剪枝和量化,效果都不理想,边缘细节损失太大,客户能看出来。最后走的是“预热”加“批处理”的邪路。启动时先把模型加载到 GPU,用几张假图跑几遍,让 CUDA 内核和内存分配稳定下来。推理时,不再是来一张图处理一张,而是攒够一个 batch(比如 8 张)一次性喂给模型。别看这个简单的改动,吞吐量直接翻了 4 倍。这里有个坑,图片尺寸必须统一,不然 batch 处理会报错,所以前面预处理队列还得加个强制缩放的步骤。

第三层最脏,是内存和异常处理。CUDA 内存不会自动释放,处理几万张图,内存一点点被占满,最后就是 OutOfMemory。我必须在每个 batch 处理完后,显式地调用 torch.cuda.empty_cache(),还得用 try-except 把可能崩溃的单个推理包起来,一旦某张图出错,就记录日志、跳过,绝对不能影响后续任务。这就好比流水线上有个零件卡住了,你得能把它踢出去,流水线不能停。

搞完这些,再回头看百度云那种动辄千卡集群的规模,反而平静了。巨头有巨头的打法,用规模和生态碾压。个体户有个体户的活法,就是把一个垂直痛点扎穿,在“稳定”和“效率”这两个词上做到极致。我的 Rembg Pro 可能永远上不了财报,但它现在能让我在接类似 5 万张图的单子时,心里不慌,这就是我的“非广告收入”。AI 转型,落到我这种手艺人头上,就是把你吃饭的家伙,从手工刀换成数控机床,但机床怎么调教,每个参数背后的物理意义,还得自己一寸一寸摸出来。

© 版权声明
THE END
喜欢就支持一下吧
点赞65 分享