高并发图片实时渲染技术在阿里妈妈的大规模应用
個性化推薦已經廣泛應用到新媒體、電商、游戲等領域,當你打開手機淘寶的時候,淘寶會根據你的瀏覽和購買等歷史行為,提供個性化的商品推薦。那么,這些形式多樣、風格各異的個性化商品展示是怎樣最終呈現到APP中的呢?今天就來為大家介紹,在超級推薦等場景下,我們是如何來為用戶實時推送個性化內容的。
個性化創意
在高流量的終端中推送圖文創意有很多需要考慮的因素,首當其沖的就是商品圖和宣傳文案的體量問題。在有大量商品等待推薦時,每個商品都會被添加許多維度的標簽,在創意呈現之前,由一個引擎進行篩選和拼接,決定向用戶推送的商品和宣傳文案。然而大部分的商品圖不適合作為廣告創意直接透出,原因是:1)設計感不足,導致吸睛力不夠,不能抓住用戶的注意力;2)傳遞的信息不完整,重要場外信息如促銷、賣點等缺失。更進一步說,廣告創意作為傳遞商品信息的最重要載體,如何能做到針對不同用戶喜好的個性化呈現,提升用戶視覺體驗的同時,也達到廣告效率的進步?
在這個背景下,我們引入了模版的概念,由專業的設計師團隊,針對不同的類目、風格、場景來設計模板。針對每一次投放,廣告引擎需要決策推送的商品、文案,并選擇一個合適的模版,但隨之而來的是,這些物料排列組合產生了體量非常龐大的創意。如果我們提前生成了全部可能被投放的創意,但最終很可能只有少數的優秀組合會保留下來,這就會造成一種極大的浪費。更糟糕的情況是,如果需要改動某些內容來進行效果的迭代,就很可能要重新生成大量的創意,這也不利于效果的驗證和快速迭代。
為解決這個問題,我們在2016年研發了高并發的圖片實時渲染技術,在每次創意展現的時刻,實時根據引擎提供的物料,渲染一張圖片返回。對于終端來說,我們像是一個 CDN 圖片服務。而對于大部分業務來說,幾乎不需要任何成本就可以接入這項服務。
Shout Out for Rust
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。
淘寶App 信息流中的廣告創意展示
2021年 淘寶App 改版后,首頁焦點廣告位改變為卡片式的新尺寸。在這項業務中,我們的渲染服務為廣告創意在新場景的快速落地和個性化提供了可能性。借助渲染服務,廣告創意在新尺寸下落地幾乎沒有額外成本。這主要得益于我們圍繞模版的產品架構選型帶來的靈活性:設計師只需要按照新的要求設計模板,就能適應復雜的新場景需要。
展示外投的個性化廣告創意展示
在外投業務中,由于媒體環境千差萬別,對于投放來說最簡單有效的創意形式就是圖片,非常適合使用拼圖服務。
由于渲染性能的提升,我們不僅可以支持實時渲染商品圖、文案內容。還提供了實時渲染模板中裝飾圖層的能力,在此基礎上,算法可以根據商品圖特征,產出更美觀的創意。比如對于同一個模板,可以根據不同商品圖主色調,產出完全不同配色。
這種根據商品圖特征實時變化創意配色的創意,目前已經投放在抖音、手機百度、趣頭條等各種媒體,日均 PV 超過 5 億。
阿里巴巴國際站個性化焦點圖
阿里巴巴國際站選擇我們的實時渲染服務,主要是因為我們可以支持多國語言。從目前業務比較廣泛的東亞語言到復雜的阿拉伯文,甚至多行、混合樣式的復雜排版都有完整的支持。阿里巴巴國際站借此快速實現了一個支持多國語言、投放簡單靈活、可覆蓋所有資源位的圖片生產方案。初期使用過程中,本服務服務端實際響應為 100ms 左右,在準備好模板后,能快速與其投放系統對接,AB 測試結果顯示對接后和原靜態圖相比,業務效果平均提升了 35.68%。
更多應用場景
此外還有許多應用場景,如今日頭條、西瓜視頻等的直通車外投創意上,我們將智能文案與實時合圖相結合;再如淘寶聯盟使用圖片實時渲染支持的二維碼功能,無需提前準備素材和客戶端介入,即可在雙 11 等大促時生成帶有二維碼的海報或活動頁等。
想象力推動創新
回望我們創造實時渲染引擎之前,也曾面臨著是用傳統的服務加大集群,還是從零開始研發的選擇。在這種時候,對于未來技術前景的想象力,和技術落地后帶來的廣泛應用的憧憬,推動了我們在這個領域的創新。最終,我們將看好的技術成功落地,助力業務,并可以反過來進一步提升我們的技術深度。希望這篇文章能夠在你面臨技術選型抉擇,或者在工作中苦惱“魚和熊掌不可兼得”的時候,提供一點新思路。
END
???關于我們
阿里媽媽創意前端團隊,致力于阿里集團核心商業產品中創意相關技術建設,優化創意效果與效率。歡迎感興趣的同學投遞簡歷至:alimama_chuangyi@service.alibaba.com,或點擊下方「閱讀原文」了解崗位詳情。
瘋狂暗示↓↓↓↓↓↓↓
總結
以上是生活随笔為你收集整理的高并发图片实时渲染技术在阿里妈妈的大规模应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【阿里妈妈数据科学系列】第一篇:认识在线
- 下一篇: 【阿里妈妈数据科学系列】第二篇:在线分流