本文作者将跟大家分享她在腾讯运营成本优化方面的实战经验,并探讨精细化成本管理的价值是什么。
我是来自腾讯 SNG 社交网络运营部,简称 DSNO(屌丝 NO.1)团队的一枚大龄女屌丝。下面这张图上半部分大家很熟悉是王思聪的第一个人生小目标。
作为一枚女屌丝为什么会有比他还大的目标呢?每年年初我们要制定 SNG 成本优化年度目标,过去三年已经用技术手段为公司节省了超过 10 亿的现金流。
产品的架构和容量也越来越健康,继续成本优化变得十分艰难,去年我们团队小伙伴们定目标时内心是如上图的。
但理想还是要有的,万一实现了呢?所以当时我们在迷茫中定下了再优化 3 亿元的目标。很幸运,2017 年我们实现了这个目标,并再次获得公司级奖励,这是非常不容易的。
因为“成本与质量”是个平衡木,而 2017 年 SNG 产品面临着激烈的内外竞争,要降低产品质量是根本不可能的。所以跟大家分享如何在保障质量前提下做成本优化。
先问大家一个问题:
我在身边的同事和朋友圈儿做了同样的调查,得到的答案差不多,大家对手机流量不怎么在意,不喜欢转菊花和卡顿。
我自己用的是腾讯大王卡,腾讯系的免流量,其他流量全国 1 元 800 M / 日,我身边有个开发妹子用的阿里宝卡,1 元 / G 全国日租流量。
我领导用的全球通套餐,他自己也不记得多少钱一个月,反正流量用不完,他说他不缺流量,缺的是时间,但我总发现他会偷偷看小视频,一看就停不下来。
今年 3 月,政府报告提出“取消流量漫游费,流量资费年内要下降 30% ” 。2020 年 5G 就要问世,网速是 4G 的 5-15 倍。
全国人民流量时代即将来临,上网时长会增加,将承载更多富媒体应用快速增长。
像 QQ 相册、朋友圈、微博、Facebook 是以图片为载体的时代,现在将会有更多快手、抖音、直播基于原创短视频的传播,对比文字图片更具有直观性,视频让人更感同身受,但具有“高带宽性”。
现在普通手机拍摄的图片在没有压缩的情况下大约 2M,一段 3 分钟的小视频大约 20M,直接存储或传输的话,不仅浪费用户带宽,而且容易造成菊花和卡顿。
如何在不影响质量的前提下把图片和视频压缩到最小,手机耗电发热更少、网络传输更快,就是提升了用户体验。
说了这么多,这就是我认为成本优化十亿元背后的价值,用技术手段为用户提供低成本高质量的产品体验。
带宽优化实战案例-图片压缩
QQ 相册图片压缩
QQ 相册业务发展较为平稳,总图片数有上万亿张,每日新增上传图片几百万张,每日下载图片几百亿张,外网带宽日峰值上百 G,成本压力一直存在。
WebP 图片压缩
用户上传的图片一般有三种主流格式:JPEG、PNG 和 GIF 动图,2015 年 QQ 相册用 Google 的 WebP 格式用户上传的原图进行后台压缩,在保障同等质量下的 WebP 图片比原图体积小 30%。
分辨率自适应
用户终端机型分辨率存在大小不一,但一些产品是以最大分辨率下发的,但中低端机型并不需要高分辨率的图片,优化为按需返回适当分辨率图,可节约 20% 的流量。
2015 年做的这 2 个优化都是在保障图片清晰度不变的前提下,为用户和企业节约了流量和存储空间。
GIF 动图压缩
2016 年底相册推出新功能,用户在发表说说时可以选择自己的照片合成 GIF 动图,新功能导致流量增长非常迅猛,对应的外网带宽成本上增 70%。
流量分析发现仅有 5% 下载次数的 GIF 格式图片占用了 20% 带宽,剩下大部分是经过 WebP 格式压缩过的图片。
GIF 动图相当于一组图片的集合,可以把它看做一个小视频,但 GIF 格式是一种位图文件格式,是利用颜色表索引来表示每个像素颜色,然后标记重复出现的数据。
编码过程对图片颜色数据没有损失,是一种无损压缩方式,相比视频压缩算法压缩率比较低,用户自己编辑的 GIF 大小普遍在 2-4M,是普通图片的几十倍,占用户和企业的下载流量和存储都很大。
当时用的开源 WebP 不支持 GIF 动图压缩,所以考虑采用其他图片压缩格式。
新技术选型 TPG 图片压缩
腾讯 SNG 音视频实验室基于 AVS2(国家标准内核)开发了 TPG 图片压缩格式。采用了视频编码模式,利用帧间参考,大幅减少冗余值,提升压缩率。
特别是在动图上具有高压缩率和低编解码耗时的明显优势,经在 QQ 相册验证 TPG 可在同等质量下将 GIF 大小降低 90%,将 WebP 再降低 21%,比 JPEG 节约 43% 左右。
并做了编解码性能的优化,耗时等都优于 WebP。为此 2017 年全面推广相册的 TPG 格式化。
右图是压缩了 11 倍的 TPG 动图,人眼主观观察质量很难看出区别。
相册接入 TPG 图片压缩-前后台解决的困难
全客户端统一后台配置:相册图片展示场景复杂,接入方案要适用于移动、PC、H5 内核等所有客户端版本,根据用户客户端能力优先返还 TPG > WebP > JPG,右图是后台搭建的全客户端统一后台配置。
分级压缩、OC 点分片缓存:因为 GIF 比较大,压缩耗时较长,针对不同大小的 GIF 分级压缩,小于 2M 的实时压缩,设置 2s 为超时,2-8M 设置 4s 为超时,大于 8M 的异步压缩并更新缓存。
同时为了保证 OC 点不会因为 GIF 过大而容易被淘汰,做了分片缓存策略。
兼容性:对于分享出去的 GIF 我们给出原 URL,优先保障用户体验。
灰度发布:作为首个大体量全面接入 TPG 的业务,为了保障平滑过渡,首先对新上传的图片保障异步压缩后存储在源站。
被访问后图片会存储在中间源和 OC 点,大概一个月等 TPG 热数据占 70% 后,对旧的图片需要人工触发或者基于访问触发实时压缩。
廉价转码资源
TPG 是利用 AVS2 编码标准通过非常复杂的计算来提高图片压缩比,实际无论是图片、音频还是视频压缩比的提升都会增加计算复杂度,等于是用计算资源来换带宽和存储。
所以带宽优化需要大量廉价转码资源,如果专门采购转码服务器,需要大量的现金流。所以我们用 FPGA 转码卡与离线平台软硬结合来提供廉价计算资源。
离线平台:离线平台主要通过部署 Docker 来对 CPU 空闲时段进行资源调度。资源来源有母机超卖池、公司和部门资源池、以及线上低负载设备。
同时为了不影响原有的线上业务和资源池的分配,会通过监控任务的负载状态来逐步扩缩容,现已实现了小时级调度能力和灵活的分配策略。
FPGA 卡:FPGA 作为一种高性能、低功耗的可编程芯片,可以根据客户定制来做针对性的算法设计。
所以在处理海量数据的时候,FPGA 相比于 CPU 和 GPU,优势在于 FPGA计算效率更高。
以相册TPG转码为例,FPGA 卡性能是普通图片处理服务器的10倍,编码延时减少 80%,大幅减少用户等待,采用结合 FPGA 转码卡与 Docker 离线软硬结合,能有效降低转码成本,现已节约了几千台服务器。
成果:项目在上半年完成,现在 TPG 请求量占 80% 以上,节约了 40% 的带宽,存储量减少,节约几千万/年,质量上反而由于文件变小,解码效率提升,用户等待时长减少了 22%。
全类型多场景的图片压缩解决方案
TPG 编码压缩虽然在压缩率上更优,但需要客户端和 PC 具备解码 SDK 才能正常使用,现在推广阶段,现网仍存在很多原图(JPEG、PNG、GIF)请求量。
Guetzli 是 Google 2017 年最新推出的图片压缩格式,比同等质量的 JPEG 节约 30%大小,此算法并没有改变 JPEG 编码格式,只是对数据进行优化缩减,因此编码出来的图片适用于目前已有的解码器。
但它的计算开销非常大,耗时不可接受。GPU 相比传统 CPU 具备高并发的图片类计算能力,Guetzli & GPU可大幅减少压缩时间到可接受范围。现在已有一些场景(漫画)在用这种方式。
HEIF 是 H.265 标准的建议格式,比 JPEG 小 40%,苹果 iPhone7 升级 iOS 11 以上拍摄直接生成的是 HEIF 格式,同等质量文件大小和 TPG 差不多。
腾讯的图片平台支持这种格式的存储和请求返回,只需客户端请求上做改造即可。
相册、微云都已使用,如果两个 iPhone7(iOS 11)用户互发本机拍摄的图片(HEIF 格式),则无需转码可比原 JPEG 图节约 40% 以上的流量和存储,在其他不支持的客户端下载时需转码为其他格式。
所以针对部分苹果用户体验更好,要成为主流还有待普及。
经过三年的积累腾讯搭建了一套全类型多场景的图片压缩解决方案,根据用户客户端情况返还最优的图片格式,降低业务接入门槛,如下右图。
带宽优化实战案例-视频
点播类小视频
冗余下载
原来 QQ 空间的小视频播放没做任何限速,一旦开始播放就会以用户最快的速度进行下载,一个小视频文件长度大约 80s,在正常网速下不到 20s 就可以下载完成。
但往往用户并没有完整看完每个视频,数据显示空间用户的平均播放时长是只有 23s,下载但没有播放的视频浪费了用户和企业的流量。
这种情况很普遍,比如 QQ 音乐里也一样,一首歌平均时长接近 4 分钟,高品质音质文件大小是 9M,下载完一首歌只需要 4s 不到,但经常发生刚听完前奏感觉不对胃口就切歌了。
还有一种场景,在 QQ 里的长视频(大于 10s)需要先全部下载完才能播放。
用户在对话框里收到一个视频,点击后往往要转菊花,等下载完一点开发现其实已经看过或并不感兴趣,这种情况还浪费了用户宝贵的时间,体验更不好。
QQ 空间小视频限制下载速度
对空间的小视频控制下载速度,先尝试限制下载永远只比播放多 40s,卡顿率在 1.2%,然后将 40s 改为 20s,卡顿率上升到 2.1%,持续验证,最后调整在 20s。如果用户网速太差,发生二次缓冲则不限速。
QQ 长视频实施边下边播
针对 QQ 的长视频启用边下边播策略,用户点击视频后先全速缓冲 20s 然后再以文件码率进行下载,看一秒下一秒,关闭播放就停止下载。
不需要等下载完才能播放,用户平均等待时间从 12.6s下降到了 1.77s 左右,极大地提升了用户体验。
现在边下边播已经成了腾讯视频业务的标配,改进措施完成后,冗余下载比从 65% 下降到 35% 左右。
空间小视频历史优化策略
关闭自动播放:过去 2 年空间小视频播放量一直在上涨,造成外网带宽流量也一直上涨。
2017 年以前已经做的优化手段有“高峰期关闭自动播放“(用户点击才播放,但现在来看只要在 WiFi 环境下自动播放用户体验更顺畅,所以也切回去了)。
限制大文件转发次数:分析下载日志文件大小,有很多大于 1G 以上的文件,这种大文件往往是盗版电影,产品不希望空间是传播盗版电影的平台,所以限制了大文件转发次数。
提高安全打击准确率和及时率:小视频的头部效应非常明显,少量热点视频就占播放量 50% 以上。当时传播比较火的有色情暴力和搞笑,针对色情暴力提升安全打击的准确率和及时率。
降码率:搞笑的很多都是小猫小狗,场景比较简单,当时我们认为这类视频流畅比清晰度更重要。
所以可以适当的降低清晰度(码率),于是系统根据热度,对每小时 TOP 2000 的热点视频后台压缩出低码率进行播放,节约了大量的带宽。
空间小视频 H.265 技术选型
码率太低,质量变差:码率是数据传输时单位时间传送的数据位数,同一种编码格式下码率越高越清晰,当时空间热点视频码率压缩到 300kps,不到现在普通手机拍摄的 1/3。码率降到肉眼可识别的程度后用户体验就会变差。
但业务持续上涨,需要既节约带宽又保障质量,所以考虑使用新一代视频编码标准 H.265 来提升压缩率。
新一代编码标准 H.265:H.265(又名HEVC)是 2013 年 ITU-T VCEG 继 H.264 之后所制定的新的视频编码标准,仍然是采用块的编码框架,块的大小从 16*16 变大为 64*64。
但对比 H.264 创造性采用四叉树架构,以及采用编码单元CU、预测单元PU,变化单元 TU,极大地提高了压缩效率,帧内预测方向从 9 个扩展到 35 个,获得更好的预测特性,相比 H.264 压缩率提升 40%。
2016 年当时公司没有业务尝试,除了专利风险外,由于 H.265 计算复杂度远高于 H.264,编解码都需要硬件在性能上支持。
硬解 & 软解:解码有硬解和软解两种,硬解码是使用播放设备(手机和电脑)的硬件解码。
比如通过专用的 DSP 内核解码芯片的功率更低,解码效率更高,现在支持硬解码的手机比例大概在 70%。安卓客户端复杂,不确定是否支持解码。
不具备专用硬件就只能通过软件利用 CPU 解码,软解由于要妥协解码设备的通用性,所以算法上对效率和质量有折扣,相比硬解更耗时,容易造成手机发热和耗电。
微信占用户耗电排行很高,对发热和耗电量都极为敏感,就不适合软解方案。视频普遍比较短才十几秒的话,解码耗时也会影响用户体验。
我们看 QQ 空间是怎么做的?空间在后台搭建转码能力,客户端维护一套自动更新的机型库,综合 H.265 的不同分辨率对不同手机性能进行自动打分,并动态更新,数据显示 95% 以上的手机是支持 H.265 软解的。
于是先上线软解方案,并开发了一套云适配的后台兼容方案,可以根据不同的客户端请求尽量给用户下发最适合的码率(高、中、低),尽量让更多人用到。
硬解比软解能减少用户终端 CPU 占用、降低系统开销、减少耗电和发热,所以现在要做软硬结合。
经过一整年的运营,整体 H.265 播放占比从 8% 提升到现在的 30%,压缩比最高 40%。卡顿率没有下降,反而提升,用户体验更流畅。
实时音视频
QQ 会议视频混音
视频里还有一种场景是实时音视频通话类,比如 QQ 会议视频,以往都会是有几个人同时说话,接收方就接收几路音频,然后在客户端进行混音操作。混音是把多种来源的声音整合至一个立体音轨或单音音轨中。
客户端混音改为后台混音:所以如果能够在服务端将一个房间所有的用户声音先混成一路再下发的话将大大减少我们和用户的下行带宽,实际上线后节省近 50% 带宽。
节省混音计算资源:另外,由于混音比较消耗计算资源,一方面对混音编码性能进行优化,一方面对用户的房间数进行性价比分析,对房间数 3 以下的不混音。
质量跟踪:优化过程中也通过质量评分系统,对用户质量进行监控。质量随着混音灰度逐步微升。
直播优化
下图是企鹅电竞正在直播的一场吃鸡,可以看到房间在线人数非常高,清晰度有高清、超清和蓝光,带宽成本一直很高。
今年春节期间 NOW 直播的答题业务非常火,每天晚上 8 点会在指定房间出题,观众答对可以瓜分每天 100 万的奖金,最高峰值有 90 万观众同时在线,假设平均码率 1M,峰值会有 900G 的带宽,成本非常高。
SNG 直播业务很多,根据每个产品不同特点,分别做了不同的优化。
空间直播是熟人社交,房间人数普遍很少,低于 10 人,小房间走 OC 回源率非常高,浪费 CDN 分发资源,所以使用 IP 直连方式。
NOW 直播的房间稍大(一般数十人到数百人不等),但音频走的 DC 带宽,OC 带宽单价是 DC 带宽的 1/2 还低,所以就推进 DC 转 OC。
前面分享了点播类视频使用 H.265 编解标准节省 40% 的带宽和存储,直播由于实时性要求更强,所以结合 GPU 提高转码性能,GI1(2 块卡)的转码性能是普通 24 核的CPU 的 9 倍,但采购价格仅是普通 CPU 的 1.6 倍。
分析企鹅电竞的房间大小,Top 300 的大主播占据了 61% 的用户,考虑转码资源性价比,只对 Top 300 的主播进行 H.265 优化。
几万元采购 GI1 设备,可节约成本 600 万元/年的带宽,也为非 WiFi 环境下的用户节约了流量。
和点播不同,大主播的设备和网络比较好,一般采用主播上行推 2 路流,一路 H.264 (考虑低端手机硬解能力),一路 H.265。小房间考虑到主播上行带宽限制和转码计算成本,就只出一路 H.264.
NOW 直播答题房间主播同时推 H.264 和 H.265 两路流可以节约总体 30% 带宽,可优化力度很大。
精细化码率优化
带宽优化案例还有很多,结合产品特色各有千秋,就不一一列举了,下面我们看一下现在视频优化的方向。
动态码率
码率控制有三种:恒定码率(CBR)、平均码率(ABR)、动态码率(VBR),一般使用的平均码率,但平均码率有很多弊端。
根据预测的用户网络质量变化:不同的用户网络质量不同,同一个用户网络质量也会发生变化。所以可以对用户网络质量变化进行预测,如果用户网络要变差,则下一帧切换到低码率流。
根据内容分类:不同的视频内容需要的码率是不同的,比如体育 NBA 类就比连续剧需要的码率高,可以在视频上传时进行标签分类,然后给与不同的编码参数,腾讯视频使用这个策略后整体码率节约 10%。
根据场景不同:但同一个视频里也会出现不同的场景,比如打斗需要的码率要比风景高,可利用深度学习对场景进行分类,在转码时给与不同的编码参数。
根据 ROI 特征提取,对人眼感兴趣区域重点编码
人眼一般对人物特别是人脸区域的注意力要大于其他区域,比如看下图是斗鱼一姐冯提莫的直播画面,可以对人脸重点编码、对人身体和衣服次重点增强、对其他区域适当减弱的策略来转码。
自适应分辨率
动态码率是在用户网络条件允许的情况下,找编码码率的最优解。而如果用户网速限制,但又想为用户提升清晰度的话,可以用自适应分辨率的方式。
在相同播放窗口下(显示分辨率相同),相同码率下不同编码分辨率的质量 PSNR 是不同的,所以在固定码率和显示窗口下,有最佳编码分辨率。
比如用户选择高清,用户带宽限制码率在 1.2M,在这个基础上可以找到适合用户网速的最佳编码分辨率进行编码。
AI 在成本优化中的应用
小马哥说过在腾讯 AI in every thing,AI 运维也超级火,AI 如何运用在带宽优化上呢,现在来看落地的压缩和安全打击两个方向。
图片超分辨率-QQ 相册
去年 QQ 相册大图使用了基于深度神经网络超分辨率技术。在图片无损的情况下可节约 75% 的流量和存储空间。
运用手段是先把图片像素压缩一半,图片 SIZE 压缩到原来的 1/4,再使用算法进行还原,达到跟原图相当的清晰度,肉眼无法识别,但图片大小仅是原图的 25%。这项技术不仅可以降低带宽,也可以用于提高用户体验。
和业界领先的 Google Raisr 对比,PSNR(峰值信噪比)更高,也就是失真更小,压缩性能耗时更低。
具体的模型训练,先采用 1W 张用户真实图片,通过调整图片颜色、高度、对比度、施转、左右反转等操作构造上百万个用户训练样本集。
采用压缩的方法将训练样本图片宽高各压缩到原来的 1/2,这部分图片经过超分处理后再与原来的图片效果进行比较,根据对比效果进行调整模型参数。
与业界的训练方法不同,除了对比图片的损失(PSNR)外,同时引入了可视化评测系统。
峰值信噪比是一种评价图像的客观标准,PSNR 值越大,就代表失真越少,越高越好,但它具有局限性,比如人肉眼对于面部会更在意。使用用户的真实图片进行可视化评测可达到更佳的超分效果。
AI&安全打击
空间上小视频色情问题一直存在而且不断出现对抗的原因主要是:量级比较大,资源有限很难全量鉴黄,黑产恶意不断对抗,去年就出现了大量栅格、星星等干扰,传统的鉴黄手段失效。
空间准入门槛低,UGC(用户原创内容)有留存功能,很方便当成网盘使用;空间分享功能灵活,可以分享到 QQ,微信,朋友圈等。
涉黄视频大多是带有引流信息,空间是网盘,分享是途径,赢利点是在 QQ 群付费或者微信群红包、赌博群等。
深度学习模型提升格栅识别能力
针对以上的分析,首先引入新的打击手段。首先要提升格栅干扰后的识别能力,腾讯安全部门用卷积神经网络 CNN 搭建了新的打击模型。
输入大量的格栅模板进行训练后,识别能力相比之前大大提升,和现网结合,不断及时添加新的干扰模版种子,边使用边训练的模式。
模型上线后每日点击量 TOP 1000 里黄色占比从 25% 下降到 5%,极大地提升了产品的形象和口碑。
OCR 提升招嫖识别能力
很多招嫖类会在美女图片上配有联系方式的文字,可以使用 OCR 技术(光学字符识别)。
通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程,简单的说就是可以提取图片上的文字,有效打击招嫖类。
传统打击手段弊端
传统的打击方式有行为聚类分析,比如涉黄热度文件里 90% 来源于分享,所以降低分享的打击预值重点打击。
通过业务安全的天象系统的养号情况,信安信用度的历史违规记录,用户的批量发表/分享行为,圈定出可疑用户,对可疑用户重点监控,降低打击预值。
但这些传统手段缺点是用户随意改动容易变种,MD5 种子库种子覆盖率低,人工审核效率低。
现在有 AI 助力,经过新一轮打击,空间和 QQ 的视频带宽在去年 10 月份有了明显的下降。
总结方法论
结合这些实际案例,带宽优化归纳为一小两少三不变。文件压缩的更小,下载次数少,冗余下载少,质量不变。
常用的管理和技术手段有很多,如下饼图:
在优化过程可以运用五部曲:
- 厘清资源消耗构成,在哪些场景,有多少入口,给资源使用建模。
- 对资源消耗 TOP 模块抓大放小,先解决主要矛盾。
- 对架构和算法实现庖丁解牛,了解产品策略,了解技术选型背后的原因和业界动态。
- 产品策略和技术双管齐下。
- 产品形态和业界技术可能每个月都会有新的变化,所以动态运营持之以恒。
业务运维还有一个非常痛苦的场景就是做预算,利用精细化成本管理思路为产品做带宽预测和优化模型。因为数据会变化,所以可以采集数据,系统自动统计带宽的预算和进行合理性分析。
运维为企业创造更大价值,用技术手段为用户提供低成本高质量的产品体验,能做到这点,那运维对企业来说就更具有价值。
范晶晶,腾讯高级工程师,2008 年进腾讯做资源管理和预核算,现在主要从事成本优化工作。SNG 成本优化项目 PM,三年累计为公司节省超 10 亿现金流。