拿下技术面上传简历

你负责一个用户 embedding 平台:2 亿用户 × 128 维 float32(单份约 100GB)。业务方要按 5000 个簇做分层运营,要求每晚在固定的 20 台机器(每台 8 核 / 32GB 内存 / 无 GPU)上 4 小时内完成一次重聚类;并且相邻两天的簇 ID 必须能对上,否则昨天的投放归因报表就断了。请回答:(1) 你会选哪种 KMeans 变体、用什么初始化,给一个量级估算说明 4 小时够不够、瓶颈在哪;(2) k=5000 这个数字你打算怎么论证;(3) 跨天的簇 ID 对齐你具体怎么做,代价多大、失败时怎么办。

机器学习基础无监督学习5 年以上知识点 1 个

面试官在考什么

判断候选人能否在真实内存/时间/业务连续性约束下把 KMeans 从「调库跑通」做成可运维的系统,而不是只会讲算法流程。

KMeans

回答框架 · 前两步

  1. 量级估算决定瓶颈判断:数据 2e8×128×4B≈100GB,20×32GB 内存放不下完整副本还要留 buffer,必须按行分片或降到 fp16/PCA;单轮全量分配约 2e8×5000×128×2≈2.6e14 FLOP,20 机 8 核吃满 FP32 大约 8~10 TFLOP/s,单轮数十秒级——真正贵的不是 Lloyd 迭代,而是初始化、跨机 shuffle 和 IO。
  2. 初始化与变体:k-means++ 是 O(n·k·d) 且要跑多轮,在 k=5000 时不可接受,应改用 k-means||(采样 ~2~5k 个候选)或直接拿昨天的质心热启动;分布式下用 MiniBatch / 流式 Lloyd,若 embedding 已 L2 归一化应换成 spherical k-means(等价于 cosine),否则距离被向量模长主导。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「机器学习基础」方向页

同一能力域的其他题