ML系统设计面试

Edward Chu
和传统系统设计面试的区别
- 案例类型
ML系统设计(下称为MLSD)顾名思义通常会以一个典型的ML案例而非软件或者功能设计案例来推动整场面试。这样的ML案例通常会包含一个比较笼统的任务描述,一些提供给你的数据/特征集,和一些随后而来推动设计进度的问题。
- 重点设计节点
MLSD的重点通常都是围绕特征集和模型这两点展开的。特征集的产生,变换和存储;模型的选择和训练,这些是着重考察的点。
- 系统评估标准
成功的MLSD通常需要面试者能做到这样几点:顺利理解任务要求,能评判性地分析任务;进行合适的特征筛选,对不同特征类型做到正确的预处理;对所需数据的存储规模和数据流有直观的认识;能够选择适用于该问题的模型,并对模型的
如何准备
- 结合不同的ML任务来思考不同算法模型的用途和优缺点
- 从软件工程师的角度去思考机器学习模型的生命周期
- 观察并积累对于复杂数据/特征的运用以及它们的存储,性能上的要求
- 整理出一套适用于MLSD的模版
一个简单的模板
- 任务描述
任务是什么,不是什么;
合理的线上/线下评价指标分别是什么;
- 数据/特征
数据从哪里来,QpS如何;
数据存在哪里,存储量如何;
如何生成特征集;
特征集feed给模型时的latency考虑
- 模型和训练
模型种类选择;
训练周期,方式;
模型质量评估;
部署和调用方式(线上/线下)
- 迭代分析
如果是第一代模型,以什么为baseline;
后续可能的优化;
- 完整的request path
以流程图的形式把各个组间结合起来