字节跳动 & 火山引擎:企业级机器学习平台建设实践
现代机器学习系统发展到现在,需要支持从数据管理、特征工程、模型训练,再到模型上线、推理和监控等各种环节,涉及的模块和依赖众多,支撑的业务需求也复杂多变,因此打造一个工程化的机器学习平台对于技术落地至关重要。
字节跳动内部机器学习平台建设演进
字节跳动内部的机器学习平台建设始于 2017 年,那年字节跳动 AI Lab 正式成立。为了应对由 AI Lab 团队规模扩张带来的资源管理问题及其他各类难题:
机器环境配置不一,管理运维成本高
无法实现代码、依赖库的版本管理,训练结果难以复现
部分训练任务时间长,需要分布式训练进行加速
——技术团队当时做出了一个选择,即实现一个具备云原生架构、兼顾多个团队协作使用的底层高性能集群平台。
出于对机器学习模型工程化落地的实际需要,技术团队从一开始就尤其关注平台提供的两种能力:一是底层物理资源的管理、调度能力和模型训练的大规模分布式加速,确保不同团队智能模型开发、运维工作流的高效敏捷;二是打通从模型训练到模型上线的全流程生命周期,提供服务上线、水平伸缩、灰度发布等能力。
为了实现上述设想,技术团队进行了一些实践。
高性能+云原生架构
在底层资源管理上,字节跳动技术团队落地了许多改造,其中最核心的变化在于引入容器云对模型任务进行统一调度、利用镜像打包模型代码提高可移植性、实现数据集的分布式存储以及采用 NVLink V100 + 100G RDMA 网络加速分布式训练任务。
这些改造使得平台的推断服务支持多个小服务共享同一块 GPU,推断资源池闲时可以拆借资源用于训练任务(潮汐资源调度),GPU 资源利用率大幅提高,硬件采买成本进一步降低;同时,它们也解决了多张 GPU 卡之间的合理调度问题,使得分布式训练任务能优先满足机内总线和集群网络拓扑,训练效率和 GPU 线性性能得到显著提升。
全流程生命周期
而对机器学习模型的全流程生命周期管理,技术团队在机器学习平台上内置了元数据管理、数据标注、数据集打包、缓存加速等能力,简化了数据预处理环节的工作流程。平台也支持交互式开发、单步调试、自主性能/功能诊断,可以帮助数据科学家更好地从头创建、调整模型架构,进而推进模型开发工作。
当模型开发完成后,借助平台提供的端到端的数据预处理、模型训练、离线测试、模型优化、服务上线工作流,技术团队可以周期性更新模型,不断优化模型性能。
此外,对于机器学习领域关注的核心技术点之一——软硬件性能的持续优化,字节跳动技术团队基于机器学习平台建设实践,已对外贡献了两大开源成果:
高性能、通用的分布式训练框架 BytePS:通过利用 CPU 的计算能力减少瓶颈链路的传输数据量,从而进一步提高异构资源利用率实现高性能训练,训练加速效果明显优于 Horovod (NCCL)
Effective Transformer:加速 BERT 模型推理服务,平均降低 30% 无效计算量
火山引擎机器学习平台解决方案
经过长时间的演进,字节跳动的机器学习平台如今管理着数万块 GPU,单一集群包含数百台 GPU 机器。而在该平台的底层,技术团队打造的基础设施平台同样已经在技术优化、资源融合、弹性伸缩、统一编排、平台安全和数据安全等层面经历了大规模验证,支撑着公司所有上层业务的发展,其中包括有数十亿月活的 APP。
为了持续降低机器学习的算力和开发门槛,助力更多企业级客户深入发展 AI 能力,字节跳动技术团队对底层云原生基础设施和机器学习平台进行了产品化、服务化打造,形成火山引擎机器学习平台解决方案。随着产品能力和企业需求的持续碰撞,技术团队也重新思考了企业服务和技术理念的融合方式:
目标一:弹性轻量化。很多企业最初并没有支撑海量节点和巨型规模的诉求,因此在构建解决方案的同时,技术团队也需要思考如何构建一个能支撑 1-10000 个节点的轻量化的平台。
目标二:云原生化。字节跳动内部机器学习平台、PaaS 平台的成功都离不开其云原生底座,包括云原生存储。因此为了帮助企业通过数智转型实现业务增长,机器学习平台建设必然伴随基础设施的云原生化。
目标三:易维护性。企业级产品需要具备极高的可维护性以降低用户管理成本,支持用户快速地对平台进行操作和维护。字节跳动火山引擎的机器学习平台已具备监控告警、远程控制、余量管理等能力
火山引擎研发中台
在企业真实业务场景下,研发中台是机器学习应用落地的坚实保障。
火山引擎的研发中台主要提供集群管理、存储管理、微服务、多租户等能力,当前这些技术通常被企业用于上层业务的管理和迭代,如改变以人力为主的传统运维方式,实现大流量自动化管理和高业务连续性;对传统老旧单体应用进行微服务改造,打造弹性微服务化技术中台;构建敏捷开发流程,实现新功能的迅速上线和迭代。
在推理服务之上,机器学习业务相对别的业务其实并没有太多有区分度的属性,因此它们也是整个微服务环节中的一员。机器学习新业务在企业内的上线、新功能的迭代、架构的拆分都需要依赖研发中台的能力。而在各种常见应用场景中,如资源管控,高可用、高扩展、弹性应对大流量,安全自主可控等,研发中台也具有独特的核心优势。
火山引擎机器学习平台
作为一个面向企业的中台服务,火山引擎机器学习平台的核心目标是降低算法开发门槛,帮助企业实现机器学习技术的规模化应用。它向上支撑对接的主体有两类:一是企业上层智能应用类业务,二是企业其他技术类中台。
和构建内部机器学习平台的想法一致,字节跳动技术团队在打造火山引擎机器学习平台时,也始终围绕打造算法开发流程闭环进行设计:从数据预处理到建模,再到模型部署、管理、监控等,实现整个机器学习业务落地过程的标准化、自动化和规模化。
在数据管理场景下,火山引擎机器学习平台可通过结构化、非结构化数据湖、数据协同标注与版本化管理、多租户安全等,保护企业数据资产,为机器学习、深度学习开发助力。
在资源管理场景下,机器学习平台可通过 GPU、CPU 调度,模型分布式训练,资源动态分配,弹性线上推理服务等,提供机器学习模型开发所需要的算力。无论是在字节跳动内部还是在外部客户,该平台都已实现万级 GPU 算力资源的池化管理、调度和共享。
对于流程和模型管理,机器学习平台提供 DevOps 能力。不同于一般业务,机器学习应用的发布包含了所有规则和处理逻辑,在应用上线后,由于需要周期性地进行更新、优化迭代,模型本身对外部数据有强依赖,这使得整个 DevOps 更复杂。火山引擎机器学习平台构建了 DevOps 流水线,实现从数据处理、模型训练、模型评估、模型发布的持续集成,提升端对端业务上线效率。平台也支持通过超参数自动搜索、多模型自动比对与评估、模型版本化管理、线上模型运维等,降低模型开发和维护门槛。
最后,平台也支持通过超参数自动搜索、多模型自动比对与评估、模型版本化管理、线上模型运维等,降低模型开发和维护门槛。
小结
经过内部、外部落地实践的反复检验,如今字节跳动打造的企业级机器学习平台已经成为一个成熟的一站式端到端智能中台,不仅可以支撑企业业务敏捷上线、迅速迭代,还具备高效的资源分配能力和训练服务统一调度能力,配置简单,全方位支持 TensorFlow、PyTorch、Caffe 和 MXNet 等多种深度学习和机器学习框架。
在企业服务领域,火山引擎机器学习平台解决方案也已在金融、零售、能源、教育等行业落地,帮助更多企业不断缩短智能业务研发周期,提高模型上线效率和 GPU 使用率,并依靠定制化的智能模型实现业务增长。
基于对机器学习平台的深度实践和在云原生开源社区的技术积累,字节跳动火山引擎近期也正在升级开源云原生机器学习平台,方便更多开发者和企业轻松实现从训练到模型、再到模型服务的全链路管理。
版权声明: 本文为 InfoQ 作者【火山引擎】的原创文章。
原文链接:【http://xie.infoq.cn/article/6056428746d7901429d2b8e67】。文章转载请联系作者。
评论