作为图片届的“Twitter”,Pinterest首页展示给用户的图片也离不开背后的推荐模型。近期,其工程团队通过将机器学习服务从CPU转移到GPU上,使得Pinterest可以上线比之前大100倍的推荐模型。上线大模型给模型质量带来了阶跃式的提升,最终将Pinterest首页feed流的用户活跃度提高了16%。
在本文中,他们分享了如何只经过微小的投入和延迟的成本实现这一优化目标,这包括优化特定算子,整合内存传输,通过CUDA Graph技术在设备上执行静态图,以及分布式系统的重新设置。他们的实践证明,要想提高模型效果,模型参数就得变大,而使用GPU服务方案的经济效益远超CPU服务方案。
来源|Pinterest Engineering
翻译|郑泽康
Pinterest的使命是给每个人带来创造他们所热爱生活的灵感。为了实现这一使命,我们所有产品中都包含的一个关键组件就是各式各样的推荐模型,它们负责在合适的时间给合适的人展示合适的内容。我们的推荐模型是通过高级算法进行训练的一系列机器学习模型,用于理解用户在Pinterest上花费时间时的行为,这些推荐模型是通过定制的机器学习模型服务器(Scorpion Model Server, 即SMS)来运行的。
SMS 上需要面对十分艰巨的技术挑战,基于3000多亿个Pin的语料库,它必须在毫秒内为4亿多个用户提供相关推荐。之前,SMS在CPU上进行模型推理,其内核经过了多年的优化以满足我们对延迟和基础设施成本的严格要求,但即使最新一代的CPU也几乎达到了SMS服务的极限。我们必须非常审慎地确保,每次因模型变化而带来的延迟和基础设施成本的增加都是合情合理的。
机器学习领域里模型参数和计算量增加的趋势让问题变得更加严峻。在推荐系统中,具有1000亿参数量的模型已经很常见,并在业内常被提及。
在Pinterest,我们采用了稍微不同的方式,通过使用诸如Transformer的现代模型架构来扩大模型。在更大模型下,我们立即观测到模型准确率发生的质变——其大幅提升了Pinner(译注:Pinterest用户)的参与度。但是,在CPU服务器上运行这些现代模型架构几乎让成本和延迟都提升了40倍,这一代价难以承受。因此,我们转而寻求使用GPU来加速模型推理,从而可以使用合理的成本来运行这些模型。