个性化推荐已经广泛应用到新媒体、电商、游戏等领域,当你打开手机淘宝的时候,淘宝会根据你的浏览和购买等历史行为,提供个性化的商品推荐。那么,这些形式多样、风格各异的个性化商品展示是怎样最终呈现到APP中的呢?今天就来为大家介绍,在超级推荐等场景下,我们是如何来为用户实时推送个性化内容的。 在高流量的终端中推送图文创意有很多需要考虑的因素,首当其冲的就是商品图和宣传文案的体量问题。在有大量商品等待推荐时,每个商品都会被添加许多维度的标签,在创意呈现之前,由一个引擎进行筛选和拼接,决定向用户推送的商品和宣传文案。然而大部分的商品图不适合作为广告创意直接透出,原因是:1)设计感不足,导致吸睛力不够,不能抓住用户的注意力;2)传递的信息不完整,重要场外信息如促销、卖点等缺失。更进一步说,广告创意作为传递商品信息的最重要载体,如何能做到针对不同用户喜好的个性化呈现,提升用户视觉体验的同时,也达到广告效率的进步? 在这个背景下,我们引入了模版的概念,由专业的设计师团队,针对不同的类目、风格、场景来设计模板。针对每一次投放,广告引擎需要决策推送的商品、文案,并选择一个合适的模版,但随之而来的是,这些物料排列组合产生了体量非常庞大的创意。如果我们提前生成了全部可能被投放的创意,但最终很可能只有少数的优秀组合会保留下来,这就会造成一种极大的浪费。更糟糕的情况是,如果需要改动某些内容来进行效果的迭代,就很可能要重新生成大量的创意,这也不利于效果的验证和快速迭代。 为解决这个问题,我们在2016年研发了高并发的图片实时渲染技术,在每次创意展现的时刻,实时根据引擎提供的物料,渲染一张图片返回。对于终端来说,我们像是一个 CDN 图片服务。而对于大部分业务来说,几乎不需要任何成本就可以接入这项服务。 2016年,经过几轮技术论证后,我们选择了当时其实并不是很成熟的 Rust 作为开发语言,完成了我们所知比较早的阿里集团 Rust 线上服务。选择 Rust 的原因主要包括:
安全: 作为一个线上服务,一旦出错就会导致广告位空白,这是非常严重的故障。作为一个没有太多历史版本可以支撑的全新项目,我们无法承担 c/cpp 这类语言带来的风险。而 Rust 的强类型、内存管理和几乎算是刻板的变量控制,反而成为安全性上的有力保证。在最初的版本中,我们也刻意减少了对第三方库的依赖,来进一步提升整个项目的可靠性。 性能: 如果说 Rust 最吸引我们的一点,那就是它能够在保证安全性的前提下,提供接近 c/cpp 的性能。在规格为 32 Cores 2.5GHz / 128GB RAM / 600GB SSD 的服务器上,以原手机淘宝 640x200 像素的 banner 创意图生成为例,若宝贝主图有缓存,当前图片的渲染服务单机压到 70% CPU 水位,并发请求数为 100 时,可保证每秒 5000 次请求下,服务的整体返回时间维持在 25ms 以内;若没有宝贝主图缓存,服务单机压到 50% CPU 水位,并发请求数依然为 100 时,可保证每秒 3000 次请求下,服务的整体响应时间保持在 30ms 以内。 并发: 当然,大部分语言都有并发模型。但是 Rust 严格的内存管理和跨线程访问模型,保证了我们在系统设计的过程中,几乎不会出现错误跨线程访问而产生竞争、死锁等问题。最重要的是,这种来自语言级别的约束,也很大程度上保证了我们依赖的三方库也能提供类似的保证。 一个高性能的渲染服务实质上会让许多不可能的想法成为可能。在项目上线后,很快拓展到了其他业务中。
阿里妈妈全域营销平台在”双11”等大促场景,会在各手机客户端投放千人千面的智能开屏创意。例如,根据用户的过往喜好,选择商品放置在上述样例的商品站台上。如果预先生成这些创意图,几乎是不可能的。我们通过对选品与展现规则与对应图片位置打标,在客户端开屏展示时生成一个展示方案,并通过我们的图片实时渲染服务迅速生成图片,来达到业务所需要的千人千面的效果。 由于开屏的时间很短,各家媒体的开屏创意尺寸较大,这项业务对于渲染服务的速度要求很高。当创意使用 3 张较大的商品主图,在规格为 32 Cores 2.5GHz / 128GB RAM / 600GB SSD 的服务器上,当 CPU 在 70% 水位时,每秒可处理 500 个左右的请求,平均响应时间约 200ms。
2021年 淘宝App 改版后,首页焦点广告位改变为卡片式的新尺寸。在这项业务中,我们的渲染服务为广告创意在新场景的快速落地和个性化提供了可能性。借助渲染服务,广告创意在新尺寸下落地几乎没有额外成本。这主要得益于我们围绕模版的产品架构选型带来的灵活性:设计师只需要按照新的要求设计模板,就能适应复杂的新场景需要。
在外投业务中,由于媒体环境千差万别,对于投放来说最简单有效的创意形式就是图片,非常适合使用拼图服务。 由于渲染性能的提升,我们不仅可以支持实时渲染商品图、文案内容。还提供了实时渲染模板中装饰图层的能力,在此基础上,算法可以根据商品图特征,产出更美观的创意。比如对于同一个模板,可以根据不同商品图主色调,产出完全不同配色。 这种根据商品图特征实时变化创意配色的创意,目前已经投放在抖音、手机百度、趣头条等各种媒体,日均 PV 超过 5 亿。 阿里巴巴国际站选择我们的实时渲染服务,主要是因为我们可以支持多国语言。从目前业务比较广泛的东亚语言到复杂的阿拉伯文,甚至多行、混合样式的复杂排版都有完整的支持。阿里巴巴国际站借此快速实现了一个支持多国语言、投放简单灵活、可覆盖所有资源位的图片生产方案。初期使用过程中,本服务服务端实际响应为 100ms 左右,在准备好模板后,能快速与其投放系统对接,AB 测试结果显示对接后和原静态图相比,业务效果平均提升了 35.68%。 此外还有许多应用场景,如今日头条、西瓜视频等的直通车外投创意上,我们将智能文案与实时合图相结合;再如淘宝联盟使用图片实时渲染支持的二维码功能,无需提前准备素材和客户端介入,即可在双 11 等大促时生成带有二维码的海报或活动页等。
回望我们创造实时渲染引擎之前,也曾面临着是用传统的服务加大集群,还是从零开始研发的选择。在这种时候,对于未来技术前景的想象力,和技术落地后带来的广泛应用的憧憬,推动了我们在这个领域的创新。最终,我们将看好的技术成功落地,助力业务,并可以反过来进一步提升我们的技术深度。希望这篇文章能够在你面临技术选型抉择,或者在工作中苦恼“鱼和熊掌不可兼得”的时候,提供一点新思路。
END
▐ 关于我们 阿里妈妈创意前端团队,致力于阿里集团核心商业产品中创意相关技术建设,优 化创意效果与效率。欢迎感兴趣的同学投递简历至: alimama_chuangyi@service.alibaba.com ,或点击下方「阅读原文」 了解岗位详情。