快手部署业界最先进GPU计算平台,为2亿日活提供保障

作者 英伟达中国

案例简介

•            本案例中,快手基于NVIDIA GPU全面升级其计算架构,保障了千亿级别数据量的处理和基础设施稳定、高效运行。

•    本案例主要应用到NVIDIA Tesla V100 GPU和最新的NVIDIA T4 GPU。

Case Introduction

•    In this case, Kuaishou adopts NVIDIA GPU to upgrade its AI computing infrastructure, ensures the processing of 100 billion level data and the stable and efficient operation of infrastructure.

•    The major products utilized in the case is NVIDIA Tesla V100 GPU, T4 GPU.

背景

日活超过2亿的快手,库存短视频超过130亿条,仍以每日超过1500万条短视频上传的速度新增,拥有海量超大数据应用场景。快手基础设施的规模已经处于国内顶级互联网公司头部行列。目前快手服务器规模已经超过十万台,数据总量达到EB级别,每天新增数据超过5PB。

为保障千亿级别数据量的处理和基础设施稳定、高效运行,快手服务器选型和业务优化团队(以下简称“快手SAT团队”)选用合作伙伴NVIDIA Tesla V100 GPU和新一代Turing架构的NVIDIA T4 GPU,在业内率先完成计算架构的全新升级。

据了解,快手SAT团队的成员经验丰富,人均工作经验在10年左右,其中专注于硬件方面的成员大多来自于海内外大型服务器或者硬件厂商,专注于软件方面的成员大多数来自国内头部互联网企业。正是这样的一个软硬结合的团队,给快手超过2亿的日活量级提供了坚实的保障。

据快手SAT团队研发人员介绍,快手大数据应用场景如视频推荐平台、音视频理解、风控、商业化广告、强化学习等都是公司的核心业务,多个业务场景数据处理需求量大,NVIDIA推出新的Tesla产品之后,SAT团队将T4和Tesla V100 GPU的引入列为首要任务,使用新一代的GPU,搭配现有的计算平台,第一时间将T4引入到新的套餐上,同时以最快速度适配给公司内的核心业务,保障硬件基础架构走在业界前列。

挑战及方案

GPU架构优化性能提升2倍,成本节省30%

针对快手快速增长的业务需求,既需要尽可能的满足业务灵活多变的需求,又不能使得套餐数量过于发散,同时要兼顾成本优化目标,所面临的问题十分复杂。为最大限度的平衡需求和复杂性,快手SAT团队最终决定引入了2个GPU套餐,搭配虚拟化容器,以满足不同业务场景下的不同需求。

GPU服务器,特别是多卡GPU服务器在实际计算中,普遍会面临CPU性能成为瓶颈的问题。为了解决CPU性能瓶颈、GPU利用率不高的问题,快手SAT团队联合算法团队,通过在Resnet50/SSD上将Resize、Augment等从CPU端迁移至GPU端的方法,将CPU的loading逐步迁移到GPU上,进一步利用了GPU强大的计算能力,解放了CPU,达到了CPU和GPU之间的最佳的均衡计算效果。

GPU之间的性能均衡是另一个问题。部分业务场景的模型体积非常巨大,单GPU显存往往没有办法存下整个模型,这时候通常会将模型存在内存中,由CPU来进行相对应的运算操作,快手SAT团队通过优化CPU亲和性,避免了负载不均和查找路径较远的问题。

快手的训练模型要求精度较高,之前普遍使用FP32,模型较大,目前正在慢慢使用混合精度来替代原来方案,性能得到明显提升。 在实际使用中,快手SAT团队也发现AMP(自动混合精度)虽然使用起来简单,但并不能适配所有业务。所以需要快手SAT团队和业务团队一起尝试不同方法,结合FP32、AMP以及手动混合精度等手段为业务方的训练提供最佳的计算性能。

推理模型相对于训练模型,普遍存在batch size较小的问题,需要对内存进行频繁的读写访问,同时推理相较于训练,要求的精度没有那么高。为解决这些问题,同时为更好的利用新架构中的Tensor Core的性能,快手SAT团队在第一时间引入了TensorRT,帮助业务快速使用在GPU上,使得运行速度大大提升,编译后的代码所占内存的大小大大缩减。

解码H264:T4 / P4 = 2.6 倍左右; 解码Hevc:T4/P4 = 4倍左右。在Hevc下的高性能,得益于T4的2个nvdec引擎,解码Hevc时比H264投入的计算单元更多

T4的Fast Preset 与 P4的Slow preset在质量和并发数量上大致相当

使用TensorRT-Inference-Server,对比text-classification,性能提升2倍左右

从以上对比图中可以看出,通过现阶段GPU计算架构的优化,业务的性能平均增长了2倍,成本较之前节省了30%以上。

软硬结合,优化落地

为了让新产品的特性更好的助力快手的业务,快手SAT团队提供了一整套的流程方案。了解业务使用需求后,通过分析目前的瓶颈点和高频使用资源,合理选择硬件产品,将这些产品快速集成在套餐之中。新硬件往往伴随着一些新的框架和指令集的支持,例如T4对于FP16的支持,使得T4的性能大幅提升。参考这些新特性,业务部门将代码优化后部署上线。通过Vtune/Nsight等工具对代码进行分析,优化低效的部分,最终呈现最好效果后上线灰度,追求高效迅捷,使得快手一直走在技术的前沿。

(图示:快手选型上线流程)

(图示:快手新硬件/新技术引入平台模块)

自定义监控,防范故障于未然

如果说使用是第一步的话,那么运维就是第二步。快手SAT团队针对GPU的监控,一共做了三件事,一是自主开发的GPU使用率监控,二是自定义的GPU故障监控,三是GPU的故障预判。

监控GPU的使用率,可以使得业务更加了解自己的负载情况,也可以验证前面选型配置的合理性。通常来说业内大多使用smi中的GPU-Util参数来判断GPU的使用情况,但快手在实际使用中发现,判断GPU的使用率是一个较为复杂的问题,GPU-Util反应的只是单位时间内GPU的整体使用情况,并不能清晰地反应GPU的负载情况。针对这种情况,快手SAT团队手动开发了一套使用率监控脚本,从SM单元、编解码单元采样值、带宽负载、读写时间比等多个维度进行分析,最终得出GPU的综合使用率。

故障的监控,是一个比较老生常谈的问题,在任何硬件产品上都会遇到,GPU因为其较高的功耗和温度,以及业务对其的强依赖性,最初快手SAT团队设置了非常多的监控指标,这些监控指标都是通过GPU设备的API提炼抽取出来的,但是随着监控实例的增加,告警的数量也随之大幅提高。这些告警里包括持续告警、波动告警、关联告警,当然这些告警的出现,使得快手能够在第一时间发现问题,但是也给快手的运维人员造成了极大的困扰。为了解决告警泛滥的问题,快手SAT团队对监控参数进行分析整合,针对不同业务使用GPU时的不同需求,制定业务生死标准:影响业务生存的标准优先报,在单位时间内发生的告警只报一个。

故障的预判,是为了避免有可能发生的故障对业务带来损失,这个预判的准确性是关键。故障的预判在很多情况下都是一个导火索,是一个随着时间的推移慢慢变成现象级的过程。快手SAT团队在故障的预判方面针对GPU设定了十余个监控参数,通过对这些积累下来的数据进行训练,得到一个阈值,再使用这个阈值进行故障预判。通过这个训练预测不断循环的过程,使得故障的预判越来越精准。

影响

随着快手日活量不断增加,用户数据不断丰富,模型的数量越来越多,越来越复杂,在空间的占用上呈几何级数增长。目前快手SAT团队正在做几件事:引入大容量低成本NVM与GPU组成异构计算+异构存储服务器;搭配100G/200G/400G RDMA,做CPU offload的架构,提高分布式计算的效率;将存储资源和计算资源解耦分离。

快手选型上线流程和NVIDIA企业级技术支持团队已经有了一年多的合作经验,以最新的GPU引入为契机,快手SAT团队整理规范了GPU服务器引入和应用优化一整套的科学体系,并在实践中获得了极佳的业务收益,为快手节省了大量的时间成本,同时计算力更加出色的GPU计算架构也为未来快手关键业务线上线更加复杂的模型打下了坚实的基础。

 

 

© 2019 NVIDIA Corporation. All rights reserved.

h2{ color: #76B900; }