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