小红书推荐侧框架选型踩坑记

王芳
2026-10-24 19:36
阅读 1977

组里最近在搞用户增长实验项目,基于用户收藏夹图文内容做风格聚类,给运营出“审美偏好雷达图”。我作为推荐算法的人被拉去当壮丁。

模型侧踩坑

最初方案:文本用 BERT 系模型抽 embedding,图片用 CLIP image encoder,拼接后聚类。数据量 20 万条收藏记录,清洗后约 13 万条。训练在 A100 上跑,PyTorch 2.1 的 torch.compile 加速明显,但有个坑——数据加载器 num_workers=16 在容器里频繁触发 DataLoader worker (pid xxx) exited unexpectedly。排查发现共享内存 /dev/shm 只有 64M,图片 decode 时直接把 worker 干崩。Docker 启动参数加 --shm-size=8g 才解决。

Claude 意外好用

文本 embedding 原本想调公司模型平台,排队要三天。我拿 Claude API 先跑 prompt 改写,把笔记标题和摘要转成风格化描述,比如“偏日系简约风,低饱和,短句为主”。效果意外好,生成的描述比原始文本过 BERT 更“语义干净”。最终把 Claude 描述作为文本模态输入,聚类轮廓系数从 0.31 提到 0.47。成本方面 20 万条请求花了不少钱,财务专门来问。

Midjourney 的教训

图片侧试过调 Midjourney Describe 接口做反向 prompt 提取,用外部模型的“审美语言”桥接两个模态。但实际跑下来有两个问题:响应时间不稳定,高峰期单张 8-15 秒,13 万张跑不完;生成的描述偏艺术风格,对生活化照片理解“飘”,比如把普通美食照描述成“cinematic lighting, rustic wood table”。最后只抽 5000 张做实验,其余用 CLIP 自己抽特征。

框架对比

环节 选型 实际体验 踩坑指数
模型训练/推理 PyTorch 2.1 稳,torch.compile 有加速,DataLoader 共享内存坑 ★★★☆
文本语义增强 Claude API 效果好但成本高,适合小批量高质量标注 ★★☆☆
图片风格描述 Midjourney Describe 创意不错,不适合大规模生产 ★★★★
可视化后台 Angular 17 模块化清晰,JSON 对接顺畅 ★★☆☆

Angular 的改观

一开始对 Angular 有偏见,推荐侧平时 Python 一把梭,Flask 起服务,前端 Vue 或 React 糊页面。但这次要同时展示聚类结果、缩略图、收藏时间轴,数据流复杂。Angular 的 Service 层和 RxJS 处理异步流比 React useEffect 乱飞清爽得多。唯一想吐槽的是模板语法,*ngFor 和 [ngClass] 像写 XML 配置。

项目上线后运营用雷达图做了用户分群,产品经理说“图挺好看”。为了这两个字加了三天班。这次折腾让我重新理解“深度学习框架”——不光是 PyTorch 和 TensorFlow,整个链路里任何环节的工具选择都在影响效果和效率。Claude 和 Midjourney 虽不属于传统框架,但实际扮演着“语义预处理框架”的角色。

下次再接这种活,第一件事把 /dev/shm 调大,第二件事提前跟财务报备:调外部 API,钱真的要花。

评论 0

最热最新
暂无评论
王芳Lv.1
0
影响力
0
文章
0
粉丝
聊天室