职位描述
整体介绍:负责字节跳动,推荐/广告/搜索类业务的机器学习系统的资源/撮合/编排,以及业务场景调度系统的设计和开发,服务于各方向场景的模型训练、模型评估和模型推理。
系统涉及如下工作,可以至少参与其中一层:
1、分布式调度层,解决单服务的分布式部署:
(a)使用/二次开发 诸如 Kubernetes,Yarn,Mesos,Celery 等分布式调度框架,并可以在不同的业务场景下合理选型;依据各框架的特点进行集群的利用率/均匀性的调度策略优化;
(b)对接/扩展各框架在 水平/垂直 扩展甚至AutoScaling的工作;参与多集群混合调度(类似FedK8s)的适配工作;负责不同优先级服务的抢占/驱逐功能;负责不同集群不同类型资源间的拆借/混部对接工作;负责多机房、多地域、多云场景的调度/负载适配;
2、资源撮合层,解决多角色之间的资源联合分配问题:从全局角度进行分配率 和 资源运营效率的优化;解决各种CPU/GPU/其他异构硬件/模型数据/样本数据/外部调用资源间的容量协调和联合匹配;感知拓扑限制,进行微拓扑优化,从而优化整体网络带宽使用;海量资源和多租户的预算/交付联动;保障性资源/预算外资源,以及混部/超卖的场景对接;
3、参与训练场景的流程/功能需求,诸如阶段性编排,批流阶段封装;提升训练单副本服务的稳定性,如Failover保护;更多的备份点策略;可观测性,可操作性,用户体验优化;
4、参与包括离线到在线同步,数据一致性和更新时效性优化;也包括在线服务多副本的异构资源/稳定性预案的流量调度;模型与服务的动态在线编排和集群间坐落编排。
职位要求
1、熟练掌握Linux环境下的Go/Python只少1种编程语言,Hands-on具备优秀的coding能力;
2、熟悉一些开源的分布式调度框架,诸如 Kubernetes(K8S),Yarn(Flink,MapReduce),Mesos,Celery ,有丰富的机器学习系统实践和开发经验;
3、掌握分布式系统原理,参与过大规模分布式系统的设计、开发和维护;
4、有优秀的逻辑分析能力,能够对业务逻辑进行合理的抽象和拆分;
5、有强烈的工作责任心,较好的学习能力、沟通能力和自驱力,能够快速的响应和行动;
6、有良好的工作文档习惯,及时按要求撰写更新工作流程及技术文档。
加分项:符合其中任意加分项者优先
1、熟悉至少一种主流的机器学习框架(TensorFlow / PyTorch );
2、有以下某一方向领域的经验:AI Infrastructure,HW/SW Co-Design,High Performance Computing,ML Hardware Architecture (GPU, Accelerators, Networking);
3、有一些开源的训练编排系统使用/设计经验:TFX。