机器学习1模型对应一类用于从数据中提取模式与特征的人工智能子领域算法。机器学习系统是数据分析系统的拓展,用于自动化地构建机器学习模型。
得益于算法改进(Algorithm),数据快速增加(Big Data),算力提升(Computing Power),发掘了依赖数据统计理论的业务价值,深度学习模型被大规模应用。
随之而来的,是对快捷便利地构建部署模型的需求,从实验室的原型验证逐步过渡到成熟的大规模机器学习系统。
# 架构
机器学习系统根据构建阶段可以分为:
- 数据管理
机器学习的核心是数据,这些数据通常来自业务系统的数据仓库,通过ETL2系统清洗提取后组织成统一的结构化数据,再经预处理、特征工程转变为模型所需的特征。
数据管理子系统用来管理用户导入的结构化数据,称为数据集(Dataset)。通常数据管理子系统提供数据标注功能,由数据工程师或者众包人员标注。
- 模型开发
模型的开发与调试需要算法工程师参与,通常使用Python脚本或Jupyter环境。常用框架有Tensorflow3/PyTorch4。开发人员更注重IDE的便捷性,而小微开发者对算力价格更敏感。
- 模型训练
模型调试完成后需要大规模训练,通常会调整超参同时启动多个训练任务,这需要大量的算力,通常需要使用分布式训练系统。常用框架有PS(Parameter Server)。同时,训练任务的实时参数需要及时(比如通过Tensorboard)反馈给算法工程师,以便调整训练参数。
- 模型部署
模型训练完成后,挑选精度/计算量符合业务需求的模型优化部署。模型部署系统需要支持多种标准模型,并且提供后端服务直接调用的接口,注重高吞吐、低延时。常用框架有Tensorflow Serving / TorchServe / Neuropod。在模型部署前,可以有针对地优化模型,以达到提高计算效率,降低推理延迟,节约计算成本等目的。
模型开发人员在首次开发新模型的过程中,需要手动完成模型的训练和部署。之后可以构建自动化训练部署的流水线(蓝色循环),定期或按特定条件触发。
我的经历是从后端硬件加速器入手,逐步扩展到后端硬件软件栈,模型推理优化,到机器学习系统的架构与产品。从下一节开始,我会逐一展开讨论。
- [1] 机器学习
- [2] ETL
- [3] Tensorflow
- [4] PyTorch