写点什么

vivo AI 计算平台的 ACK 混合云实践

  • 2021-09-28
  • 本文字数:2639 字

    阅读完需:约 9 分钟

vivo AI计算平台的ACK混合云实践

2018 年底,vivo AI 研究院为了解决统一高性能训练环境、大规模分布式训练、计算资源的高效利用调度等痛点,着手建设 AI 计算平台。经过两年多的持续迭代,平台建设和落地取得了很大进展,成为 vivo AI 领域的核心基础平台。平台从当初服务深度学习训练为主,到现在演进成包含 VTraining、VServing、VContainer 三大模块,对外提供模型训练、模型推理和容器化能力。平台的容器集群有数千个节点,拥有超过数百 PFLOPS 的 GPU 算力。集群里同时运行着数千个训练任务和数百个在线服务。本文是vivo AI计算平台实战系列文章之一,主要分享了平台在混合云建设方面的实践。

背景

混合云是近年来云原生领域关注的新方向之一,它是指将私有云和公有云服务结合起来使用的解决方案。目前几大公有云厂商都提供了各自的混合云方案,如 AWS 的AWS Outpost、谷歌的GEC Anthos和阿里的ACK混合云。大部分厂商都是通过使用 Kubernetes 和容器来屏蔽底层基础设施的差异,对上提供统一的服务。AI 计算平台选择建设混合云,主要是基于以下两点原因。

公有云的弹性资源

平台的集群使用公司自建机房内的裸金属服务器,新增资源的采购流程复杂、周期长,无法及时响应业务临时的大量的算力需求,如大规模参数模型的训练和在线服务的节假日活动扩容。同时由于今年服务器供应链形势严峻,网卡、硬盘、GPU 卡等硬件设备都缺货,服务器采购交付存在较大风险。公有云的资源可以按需申请和释放,通过混合云使用公有云资源,能够满足业务的临时算力需求,又能有效降低成本。

公有云的高级特性

公有云有一些高级的特性,比如AI高性能存储CPFS、高性能网络 RDMA、深度学习加速引擎AIACC,这些方案或特性目前公司私有云尚不具备,而私有化落地的时间和金钱成本都很高,通过混合云可以快速和低成本的使用这些特性。

方案

方案选型

通过前期调研,以下三种方案可以实现混合云的需求:



方案一的实现成本低、不改变当前资源申请流程,可快速落地。业务可以接受小时级的扩容。因此我们选择了方案一。

整体架构


混合云的整体架构如下图所示。k8s 集群的管理平面部署在公司自建机房,工作平面包含了机房的物理机和阿里云的云主机。机房和阿里云间通过专线打通了网络,物理机和云主机可以相互访问。方案对上层平台透明,比如 VTraining 训练平台不需要改动即可使用云主机的算力。


落地实践

注册集群

首先需要将自建的集群注册到阿里云。注意使用的 VPC 的网段不能和集群的 Service CIDR 冲突,否则无法注册。VPC 的虚拟交换机和 Pod 虚拟交换机的 CIDR 也不能和机房内使用的网段重合,否则会有路由冲突。注册成功后,需要部署 ACK agent。它的作用是主动建立从机房到阿里云的长链接,接收控制台的请求并转发给 apiserver。对于没有专线的环境,此机制可以避免将 apiserver 暴露在公网。控制台到 api server 的链路如下:

阿里云ACK控制台 <<-->> ACK stub(部署在阿里云) <<-->> ACK agent(部署在k8s) <<-->> k8s apiserver

控制台到集群的请求是安全可控的。agent 连接 stub 时,会带上配置的 token 和证书;链接采用了 TLS 1.2 协议,保证数据加密;可以通过 ClusterRole 来配置控制台对 k8s 的访问权限。

容器网络配置


k8s 的容器网络要求 pod 和 pod、pod 和宿主机之间通讯正常,平台采用了 Calico + Terway 的网络方案。机房内的工作节点采用 Calico BGP,Route Reflector 会将 Pod 的路由信息同步给交换机,物理机和云主机都能正常访问 Pod IP。阿里云上的工作节点会采用 Terway 共享网卡模式,Pod 会从 Pod 虚拟交换机配置的网段中分配到 IP,该 IP 在机房内可以访问。平台给云主机打上标签,配置 calico-node 组件的 nodeAffinity,不调度到云主机上;同时配置 terway 组件的 nodeAffinity,让其只运行在云主机上。这样实现了物理机和云主机使用不同的网络组件。在部署和使用 terway 中,我们遇到并解决了以下三个问题:


1、terway 容器创建失败,报/opt/cni/bin 目录不存在。   

通过修改 terway daemonset 中该路径的 hostPath 的 type,从 Directory 改为 DirectoryOrCreate 可以解决上述问题。


2、业务容器创建失败,报找不到 lookback 插件。

terway 没有像 calico-node 一样在/opt/cni/bin/目录下部署 loopback 插件(创建回环网络接口)。我们给 terway daemonset 添加了 InitContainer 来部署 loopback 插件,解决了问题。


3、业务容器分配的 IP 是属于主机交换机网段。

这是因为在使用中,我们新增了一个可用区,但是没有把可用区的 Pod 虚拟交互机的信息配置给 terway。通过在 terway 配置的 vswitches 字段新增可用区的 Pod 虚拟交换机信息,可以解决问题。

云主机加入集群

将云主机加入集群的流程和物理机基本一致。首先通过公司云平台申请云主机,然后通过 VContainer 的自动化平台将云主机初始化并加到集群中。最后给云主机打上云主机专有的标签。关于自动化平台的介绍,可以参见vivo AI 计算平台云原生自动化实践

降低专线压力


机房到阿里云的专线是公司所有业务共用的,如果平台占用过多专线带宽,会影响到其他业务的稳定性。在落地时我们发现深度学习训练任务从机房的存储集群拉取数据,确实对专线造成压力,为此平台采取了以下措施:


1、监控云主机的网络使用情况,由网络组协助监控对专线的影响。

2、使用 tc 工具对云主机 eth0 网卡的下行带宽进行限流。

3、支持业务使用云主机的数据盘,将训练数据进行预加载,避免反复从机房拉取数据。

落地效果


数个业务方临时需要大量的算力用于深度学习模型的训练。通过混合云的能力,平台将数十台 GPU 云主机加入到集群,提供给用户在 VTraining 训练平台上使用,及时满足了业务的算力需求。用户的使用体验和之前完全一致。这批资源根据不同业务的情况,使用周期在一个月到数个月。经过估算,使用费用大大低于自行采购物理机的费用,有效降低了成本。

未来展望


混合云的建设和落地取得了阶段性的成果,在未来我们会持续完善功能机制和探索新特性:


  • 支持 AI 在线服务通过混合云能力部署到云主机,满足在线业务临时算力需求。

  • 建立一套简单有效的资源申请、释放、续期的流程机制,提升跨团队的沟通协作效率。

  • 针对云主机的成本、利用率进行度量和考核,促使业务方使用好资源。

  • 将云主机申请、加入集群整个流程自动化,减少人工操作,提高效率。

  • 探索云上的高级特性,提升大规模分布式训练的性能。

致谢


感谢阿里云容器团队的华相、建明、流生等和公司基础平台一部的杨鑫、黄海廷、王伟等对混合云方案的设计和落地过程中提供的大力支持。

 

作者介绍:


刘东阳,vivo AI 研究院计算平台组的资深工程师,曾就职于金蝶、蚂蚁金服等公司;关注 k8s、容器等云原生技术。


吴梓洋,vivo AI 研究院计算平台组的资深工程师,曾就职于 Oracle、Rancher 等公司;kube-batch, tf-operator 等项目的 contributor;关注云原生、机器学习系统等领域。

 

2021-09-28 11:134826

评论

发布
暂无评论
发现更多内容

中小型企业团队的CRM系统最佳实践

低代码小观

低代码 CRM 客户关系管理 CRM系统 客户关系管理系统

代码历史上最昂贵的 7 个错误

禅道项目管理

测试 代码

谁在从API经济里分得一杯羹!

Liam

Postman API API Explorer平台 API boy 开放api

认清大脑中的一对塑料姐妹花,科学解锁情绪密码

图灵教育

效率 职场 脑科学

量子计算是人工智能的未来吗?

海拥(haiyong.site)

人工智能 量子计算 5月月更

java 通过 SmbFile 类操作共享文件夹

爱好编程进阶

程序员 后端开发

ETL自动化运维调度管理工具 TASKCTL 流程文件系统

敏捷调度TASKCTL

程序员 DevOps 运维 ETL 大数据运维

LAXCUS分布式操作系统:云盘的使用

LAXCUS分布式操作系统

云盘 分布式存储 分布式软件系统

Q1手机银行运营报告:交易规模超150万亿,月活跃用户4.9亿

易观分析

手机银行

开源之夏 2022 重磅来袭!欢迎报名 RadonDB 社区项目!

RadonDB

数据库 开源 RadonDB 开源之夏

Spring data JPA实践和原理浅析

领创集团Advance Intelligence Group

工作原理 java Spring JPA

想要成为一名真正的软件工程师吗?加入非凸,一起升级!

非凸科技

招聘 社招 校招 软件开发工程师

淘宝京东优惠券返利机器人

江苏京酷电子商务有限公司

淘宝电商 群聊机器人 返利 采集京东

易观分析刘怡:技术投入聚焦降本增效,用技术赋能人提升企业能效

易观分析

人口变化 技术赋能

使用APICloud AVM框架实现App导航栏菜单

YonBuilder低代码开发平台

APP开发 APICloud avm.js

InfoQ AI开发者召集令!快来助力中国AI产业发展,参与抽奖!

InfoQ写作社区官方

AI 热门活动 白玉兰开源

AliIAC 智能音频编解码器:在有限带宽条件下带来更高质量的音频通话体验

阿里云CloudImagine

语音 音频 视频云 音频编码器

OneFlow如何做静态图的算子对齐任务

OneFlow

人工智能 graph 自动测试 算子对齐

Apache Calcite SQL解析及语法扩展

不穿格子衬衫的程序员

数据库 sql 大数据 flink Apache Calcite

Tech Talk 宣传 | 如何高效、极简构造无服务器 Web 应用

亚马逊云科技 (Amazon Web Services)

Web

OceanBase 3.2.3 发版|HTAP引擎全面升级,TPC-H性能10倍提升!

OceanBase 数据库

oceanbase

易周金融观点 央行设立科技创新再贷款;多家银行下调大额存单利率

易观分析

金融 银行

2022金蝶云苍穹峰会抢先看

金蝶云·苍穹

苍穹峰会 苍穹5.0 人力云

Alibaba最新出版的JDK源码剖析手册(究极奥义版)开源

Java架构追梦

jdk java面试 后端开发

为 GPU 而来,焱融科技推出新一代全闪分布式文件存储产品

焱融科技

人工智能 云计算 高性能 文件存储 高计算

真可笑!拿着这份JVM学习笔记学了2个月,就想着出去跳槽涨10k

Java架构追梦

Java 程序员 后端开发

2022年4月国产数据库大事记

墨天轮

数据库 opengauss TiDB 国产数据库 达梦

博睿数据获得分布式系统稳定性实验室成员单位证书 亮相全球信息系统稳定性峰会

博睿数据

造孽啊!阿里内部的神级项目和JDK源码阅读指南竟惨遭GitHub开源

Java架构追梦

Java 程序员 后端开发

上市商业银行手机银行场景建设专题分析

易观分析

商业银行 手机银行

惨遭面试官吊打高并发系统设计,回来学习2400小时后成功复仇

Java架构追梦

Java 后端开发 程序员面试

vivo AI计算平台的ACK混合云实践_架构_刘东阳_InfoQ精选文章