及时行乐|算法工程师福利:超实用技术路线图( 八 )


  • 自我考核:通过 Jenkins 实现 pipeline 自动测试 , 打包 , 上线流程 。
系统监控
在整个项目上线后 , 需要对系统的各个环节进行监控 , 并对各种异常情况作出响应 。 例如输入数据的监控 , 判别测试数据与训练数据的分布是否有偏移 , 整个运行 pipeline 的监控 , 判别是否有运行失败抛出异常的情况 , 对于预测输出的监控 , 确保没有异常的预测输出值 , 也包括对于系统计算资源等方面的监控 , 确保不会因为资源不足导致业务受到影响等 。 在监控信息收集 , 基础上 , 还需要配套一系列的自动告警通知 , 日志追踪排查等 。 这方面的工具框架包括 TF data validation 这类专门针对算法项目的新产品 , 也有 elasicsearch + kibana 这类传统产品 。
  • 自我考核:将三个项目中做过的问题排查改造成常规监控手段 , 支持自动的问题发现 , 告警通知 , 如有可能 , 提供自动化或半自动化的问题排查解决方案 。
MLOps 系统
MLOps 整体是一个比较大的话题 , 在这方面有很多产品和系统设计方面的实践可以参考学习 。 例如 Uber 的 Michelangelo 系列文章 , Facebook 的 FBLearner , neptune.ai , dataiku , domino 等 , 虽然没有开源 , 但是其背后的很多设计理念 , 演进思考 , 白皮书等都非常值得我们学习 。 在开源界也有很多可以参考的项目 , 例如 MLflow , Kubeflow , Metaflow , TFX 等 , 可以学习他们的设计理念 , Roadmap , 以及实现细节等 。
  • 自我考核:总结各个 MLOps 产品的功能模块矩阵对比 , 能够根据项目需求来进行产品选型与使用 。
工程深入方向
数据库
数据库原理
在平时工作中 , 我们有大量的场景需要用到数据库 。 从客户数据的对接 , 数据集的管理和使用 , 到各种业务系统的数据表设计及优化等 , 都需要对数据库的运作原理 , 适用场景 , 运维使用 , 性能优化等方面有一定的了解 。 常见的需要掌握的概念有 OLTP vs OLAP , 事务 , 索引 , 隔离级别 , ACID 与 CAP 理论 , 数据同步 , 数据分片 , SQL 语法 , ORM 等 。 从底层原理看 , 会涉及到数据 , 索引 , 及日志等存储引擎方面 , 以及各种计算查询引擎 , 包括分布式系统的设计与实现 。 这方面推荐的学习资料有《数据库系统内幕》及《数据密集型应用系统设计》 。
  • 自我考核:能够理解 SQL 执行计划 , 并能够根据执行计划来做索引或查询调优 。
关系型数据库
目前常用的关系型数据库主要是 MySQL 和 PostgreSQL , 主要需要掌握的是日常的一些 SQL 操作 , 例如 DML(增删改查) , DDL(创建表 , 修改索引等) , DCL(权限相关) 。 在此基础上还可以进一步了解一些如数据类型 , 高级计算 , 存储引擎 , 部署运维 , 范式概念与表结构设计等方面的话题 。 对于高级话题这块 , 推荐《高性能 MySQL》与《高可用 MySQL》 。
  • 自我考核:在 MySQL 中设计相关表结构 , 存储实际项目中的一系列中间数据集 。
NoSQL 数据库
常用的 NoSQL 数据库有几类 , KV 存储(Redis) , 文档数据库(MongoDB) , Wide-column 存储(Cassandra , HBase)以及图数据库(Neo4j) 。 在目前我们的算法项目中 , 比较有可能会用到的主要是 Redis 这类 KV 存储(也可能把 Cassandra 之类当泛 KV 来用) , 或者更新一点的类似 Delta Lake 的存储系统 。 建议学习了解一下这类 KV 存储 , 以及分布式数据库的常见操作方式 , 以及基础的运维排查 , 性能优化方法 。
  • 自我考核:考虑一个线上模型服务的场景 , 用户输入作为基础特征 , 使用类似 Redis 的 KV 系统 , 实现实时获取其它特征 , 并进行模型预测 。
云计算
基础架构


推荐阅读