接下来会看到,将图片加入到用户侧建模,理论上并不复杂,理论上用传统 PS 也可以实现,起码跑个实验,发篇论文应该不成问题。但是,如果应用到实际系统,图片特征引入的大数据量成为技术瓶颈。为此,阿里团队为传统 PS 的 server 也增加了「模型训练」功能,并称新结构为 Advanced Model Server(AMS)。
基于历史点击图片建模用户视觉偏好
先谈一下第一个「小创新」。之所以说其「小」,是因为通过预训练的 CNN 模型提取特征后,每张图片用一个高维(比如 4096)稠密向量来表示。这些图片向量,与常见的稀疏 ID 类特征经过 embedding 得到的稠密向量,没有质的区别(量的区别,下文会提到),完全可以复用以前处理 ID embedding 的方法(如 pooling, attention)来处理。
第 1 步得到基于 id 特征的 embedding 结果,与第 2 步得到的商品图片 (ad image) 的 embedding 结果(粉红色),与第 3 步得到的表示用户兴趣偏好的向量(桔红色),拼接起来,传入 MLP,进行充分的交互
这个模型的优势在于:
之前的模型只考虑了传统的 ID 类特征和物料的图像信息,这次加入了用户的视觉偏好,补齐了一块信息短板
不仅如此,通过 MLP,将传统的 ID 类特征、物料的图像信息、用户的视觉偏好进行充分交互,能够发现更多的 pattern。
基于用户历史访问的 item id 来建模用户的兴趣,始终有「冷启动」问题。如果用户访问过一个 embedding matrix 中不存在的 item,这部分信息只能损失掉。而基于用户历史访问的图片来建模,类似于 content-based modeling,商品虽然是新的,但是其使用的图片与模型之前见过的图片却很相似,从而减轻了「冷启动」问题。
综上可见,DICM 的思路、结构都很简单。但是,上面的描述埋了个大伏笔:那个图片嵌入模型 embmodel 如何设计?没有加入图片、只有稀疏的 ID 类特征时,Embedding+MLP 可以通过 Parameter Server 来分布式训练。现在这个 embmodel,是否还可以在 PS 上训练?在回答这个问题之前,让我们先看看稀疏 ID 特征 Embedding+MLP 在传统的 PS 上是如何训练的?
稀疏 ID 特征 Embedding+MLP 在传统的 PS 上是如何训练的?
介绍 PS 的论文、博客汗牛充栋,实在论不上我在这里炒冷饭,但是,我还是要将我实践过的「基于 PS 训练的 DNN 推荐算法」,在这里简单介绍一下,因为我觉得它与《Scaling Distributed Machine Learning with the Parameter Server》所介绍的「经典」PS 还是稍稍有所不同,与同行们探讨。
基于 PS 的分布式训练的思想还是很简单的:
1.一开始是 data parallelism。每台 worker 只利用本地的训练数据前代、回代,计算 gradient,并发往 server。Server 汇总(平均)各 worker 发来的 gradient,更新模型,并把更新过的模型同步给各 worker。这里有一个前提,就是数据量超大,但是模型足够小,单台 server 的内存足以容纳。
2.但是,推荐/搜索系统使用超大规模的 LR 模型,模型参数之多,已经是单台 server 无法容纳的了。这时 Parameter Server 才应运而生,它同时结合了 data parallelism 与 model parallelism
Data parallelism:训练数据依然分布地存储在各台 worker node 上,各 worker node 也只用本地数据进行计算。
Model parallelism:一来模型之大,单台 server 已经无法容纳,所以多台 server 组成一个分布式的 key-value 数据库,共同容纳、更新模型参数;二来,由于推荐/搜索的特征超级稀疏,各 worker 上的训练数据只涵盖了一部分特征,因此每个 worker 与 server 之间也没有必要同步完整模型,而只需要同步该 worker 的本地训练数据所能够涵盖的那一部分模型。
所以按照我的理解,PS 最擅长的是训练稀疏数据集上的算法,比如超大规模 LR 的 CTR 预估。但是,基于 DNN 的推荐/搜索算法,常见模式是稀疏 ID 特征 Embedding+MLP,稍稍有所不同
1.稀疏 ID 特征 Embedding,是使用 PS 的理想对象:超大的 embedding 矩阵已经无法容纳于单台机器中,需要分布式的 key-value 数据库共同存储;数据稀疏,各 worker 上的训练数据只涵盖一部分 ID 特征,自然也只需要和 server 同步这一部分 ID 的 embedding 向量。
该「压缩」模型的参数,由每个 server 根据存在本地的图片数据学习得到,并且在一轮迭代结束时,各 server 上的「压缩」模型需要同步。
每个 server 上都有这样一个这个可学习的「压缩」模型,要能够利用存放在本地的数据(这里就是 4096 长的 image 原始 embedding)前代、回代、更新权重,并且各 server 的模型还需要同步,简直就是 worker 上模型的翻版。将 worker 的「训练模型」的功能复制到 server,这也就是 Advanced Model Server 相比于传统 Parameter Server 的改进之处。
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。