采访嘉宾 | 刘骋昺
编辑 | Tina
大数据是人工智能的基础。从大数据到数据分析再到 AI 应用的转变,这也是一个很自然的发展过程。但是只有在数据、算法、企业的场景应用三者紧密配合的前提下,才可以有效地提升整个 AI 业务的流程。因此,爱奇艺在原来的数据积累基础上,进一步的完善了技术平台,形成了大数据 +AI 的统一架构,同时兼顾了数据、算法训练、人力物力算力等多方面的因素。那么爱奇艺在探索和实践过程中,有哪些沉淀出的经验可以分享给大家?InfoQ 采访了爱奇艺大数据计算团队负责人刘骋昺,得到了一个初步的了解。
刘骋昺将在 2021 年 11 月 5-6 日全球人工智能与机器学习技术大会(北京站)2021 上进行主题为《爱奇艺 Bigdata+AI 统一架构探索与实践》的演讲,更多内容可以通过观看演讲进行了解。
嘉宾简介:刘骋昺,毕业于上海交通大学计算机系,2014 年加入爱奇艺,先后负责 Hadoop 运维和研发,计算引擎和平台的设计和开发工作,对大数据服务的底层优化和平台建设有丰富经验。目前是大数据计算团队负责人,负责 Spark/Flink 计算引擎、离线工作流、实时计算、实时分析、机器学习平台等相关工作。
InfoQ:您们选择 On-Prem 还是 Cloud 来实现大数据 +AI 平台?为什么?您们是如何做决策的?
刘骋昺:目前我们采用 On-Prem 和 Cloud 的混合云部署模式,以私有云部署为主体,在部分业务探索引入公有云服务。
经过初步探索,我们发现公有云和私有云各有优劣,且能相互补充。公有云的优势在于按量付费,对于探索性的业务(如不确定使用什么硬件最合适),公有云的试错成本较低;对于峰谷效应明显的业务,公有云的自动扩缩容能力也能够帮助我们降低成本。私有云在运维支持端、稳定且高负载场景的成本端的表现更好。
在我们看来,我们采用的混合云部署模式主要有两方面的好处。一方面,通过搭建统一的服务管理平台,对用户屏蔽底层使用的私有云或公有云资源,降低业务接入与切换的难度;另一方面,利用私有云部署,获得对云厂商的议价能力,同时保持对公有云动态的及时跟进,不断审视和改进私有云的服务能力。
InfoQ:在之前的未曾改造的爱奇艺大数据平台上运行机器学习任务,存在哪些挑战?
刘骋昺:机器学习与大数据平台的结合,我们主要讨论特征数据处理与模型训练两方面。传统的大数据平台一般以 Hadoop(HDFS+YARN)为基础,运行 MapReduce、Hive、Spark、Flink 等计算框架。
在特征数据处理方面,我们最常用的是 Hive 和 Spark,要把计算任务跑起来难度不大,主要的挑战在于工程效率与大数据量下的性能表现。
相比而言,在模型训练方面的挑战更大,主要体现在:
1)框架支持:需要在 Hadoop 上支持分布式地运行机器学习框架(如 TensorFlow、PyTorch 等);
2)资源调度:机器学习任务单进程的 CPU、内存资源占用经常较大,且不同进程的资源需求不同,需要考虑这些在 Hadoop 集群上如何分布才能最大化资源利用率;另外,有的模型训练需要用到 GPU,YARN 从 3.0 版本开始加入了对 GPU 的支持,在后续版本逐步完善;
3)Docker 支持:机器学习任务对环境依赖较多且各不同,因此加入对 Docker 的支持就显得十分必要,而老版本的 Hadoop 集群对 Docker 的支持比较初级,所以也需要对 Hadoop 集群做版本升级。
InfoQ:大数据 +AI 平台的“整合”,关键要解决的核心问题是什么?
刘骋昺:核心问题是数据和计算的整合。传统的机器学习把数据放在一台独立的机器上,仅利用单机的计算资源进行模型训练,如此一来,大数据和 AI 成了两个完全独立的系统。而只有充分利用大数据平台丰富的存储和计算资源,才能充分发挥 AI 的威力。因此,整合的核心问题是把 AI 相关的数据接入大数据平台,并利用大数据平台的计算资源运行分布式的模型训练,将特征生产、样本生产、模型训练、模型管理打通。
有了数据和计算的整合,下一步是元数据的统一管理,可以帮助我们解决烟囱式开发的问题,节省开发人力和计算资源,提高数据和模型质量。
InfoQ:架构上是如何实现存储计算分离的?您们是如何兼顾存储和计算的效率?
刘骋昺:我们通过自研 QBFS(爱奇艺大数据文件系统)实现存储计算分离。QBFS 是一个虚拟的文件系统,底层支持多种存储类型(HDFS、公有云对象存储、私有云对象存储等),通过虚拟路径与底层存储的映射关系,实现计算任务在任何集群都能访问 QBFS 中的数据,即事实上的存储计算分离。
存储计算分离在取得分层存储降低存储成本、跨集群统一访问、透明迁移等优势的同时,势必会带来一些问题,如跨集群访问效率下降、网络流量上升等。我们的应对措施有如下几点:
1)使用先进的压缩算法、EC 等技术,降低文件大小;
2)通过优化文件格式,采用列式存储,降低读取的数据量;
3)使用分布式缓存技术(如 Alluxio),避免对同一份数据的多次读取(目前处于测试阶段);
4)数据读取与计算同时进行:以 TensorFlow 为例,使用 Dataset API 实现数据读取 Pipeline,在计算的同时读取下一步计算所需的数据,使得计算可以连续进行,数据读取不成为限制计算时长的因素。
InfoQ:是否存在多租户的问题?您们通过什么技术手段解决这些供需关系?
刘骋昺:我们的大数据 +AI 平台是支持多租户的,租户的粒度是一个具体的业务或者项目。需要解决的问题有:
1)平台接入:用户在平台上提交任务,平台以超级用户代理为业务用户,提交任务到集群,这里用到了 Hadoop 的 proxy user 的机制;
2)计算资源隔离:利用 YARN 的 scheduler,业务根据需求申请计算队列,管理员通过设置队列的 min、max、weight、max applications 等属性控制各种条件下一个队列能够申请的资源量,实现计算资源的分配与隔离。
InfoQ:构建统一的大数据 +AI 平台系统最容易出现的瓶颈是什么?您们是如何解决的?
刘骋昺:在特征数据处理方面,大量的计算任务会占据大量的计算资源,拖慢整体的产出时间。平台通过建立统一的特征库,实现基于配置的特征计算,统一优化计算效率,并加强特征复用,减少重复计算,使得产出时间得到保障。
在模型训练方面,大规模分布式训练会占用较多的 CPU、内存、网络带宽等资源。平台通过监控资源利用率,合理分布不同类型的进程(如搭配内存需求大的任务和 CPU 需求大的任务),采用合适的机型等措施,提高资源利用率。
InfoQ:针对爱奇艺的场景,研发这套平台时,您们做了哪些定制化的工作?
刘骋昺:定制化的工作主要体现在特征算子上。我们整理了特征计算中常用的 10 多种计算逻辑,在启用平台之前,这些逻辑一般通过 SQL 表达,多种逻辑的组合使得 SQL 较长,可读性较差。我们将这些逻辑抽象成算子,算子之间通过协同工作形成一张 DAG 图,以此来代替 SQL,增强逻辑的可读性,并统一优化计算效率。
InfoQ:运行这套平台之后,它对业务最大的改善目前体现在哪里?
刘骋昺:首先,大规模分布式的模型训练更加便利,而且性能也得到了大幅提升,业务可以采用更多的数据,更早产出模型,提升业务效果。
其次,特征管理、生产、监控与复用为业务提供了更规范化的方式,避免了烟囱式开发,提升了开发、计算效率和数据质量。
InfoQ:展望未来,您们看到可能的大数据 +AI 平台的发展方向 / 技术趋势是什么?
刘骋昺:在未来,随着更多的业务场景采用机器学习,模型的复杂度越来越高,大数据平台中 AI 计算所占的比例会进一步提高。
在 AI 技术方面,由于短视频和信息流技术的发展,实时化的 online learning 会被更多业务场景采用。
最后,随着多方合作需求增加,以及国家对隐私保护和数据安全的法规逐步落地,以联邦学习和多方安全计算为代表的隐私计算技术会得到更广泛的应用。
活动推荐