• 一块GPU训练TB级推荐模型不是梦,OneEmbedding性能一骑绝尘


    d1d49b1f00bd97802405c2aa33d5ba30.jpeg

    来源 | 机器之心

    个性化推荐已成为人们获取信息的主要形式。以往,人们更多通过主动搜寻自己感兴趣的信息,而现在,基于算法推荐技术的信息分发平台会自动识别用户兴趣,快速筛选信息,推送用户所感兴趣的信息。

    一方面,推荐系统大幅提升了用户体验,另一方面,个性化分发信息更精准、高效,可以帮助平台更准确地匹配用户和信息,大大提高流量变现效率,基于推荐技术的流量变现引擎甚至成就了万亿市值的庞大商业帝国。

    短视频信息流推荐、广告搜索到线上购物,这些应用都构筑于精准的推荐系统之上,背后的核心功臣就是深度学习模型。

    不过,随着海量数据的积累以及更加频繁的用户数据迭代,底层系统可扩展性和训练速度面临严峻的挑战。人们发现,通用深度学习框架都不能直接满足工业级推荐系统的需求,而是必须基于通用深度学习框架做深度定制,甚至于要开发专门的系统才行。

    针对现代推荐系统的种种痛点,OneFlow 团队推出了一款高性能、可扩展、灵活度高的推荐系统组件 OneEmbedding。它的使用方式和通用深度学习框架一样简单,性能却远超通用框架,甚至超过了 NVIDIA HugeCTR 这样为推荐场景定制开发的系统。

    具体而言,在 DCN、DeepFM 两个模型上,无论是 FP32 还是混合精度(automatic mixed-precision, AMP)训练,OneEmbedding 的性能大幅超过 HugeCTR,而在 HugeCTR 深度优化以至于有点 “过拟合” 的 DLRM 模型上,OneEmbedding 性能与 HugeCTR 基本持平。

    0e401cbd4d1727fafe6e73867791f5fb.png

    b6aa4e2c878678c3439db1ff4201e3dc.png

    03edea1189bb29c1ebf128f21785c5c2.png

    (以上测试环境均为:CPU Intel(R) Xeon(R) Platinum 8336C CPU @ 2.30GHz * 2;CPU Memory 1920GB;GPU NVIDIA A100-SXM-80GB * 8;SSD Intel SSD D7P5510 Series 3.84TB * 4)

    当用户使用 OneFlow 搭建推荐模型时,只需使用以下数行代码对 Embedding 词表进行配置即可训练含有 TB 级别词表的推荐模型:

    1. # self.embedding = nn.Embedding(vocab_size, embedding_vec_size)
    2. self.embedding = flow.one_embedding.MultiTableEmbedding(
    3. "sparse_embedding",
    4. embedding_dim=embedding_vec_size,
    5. dtype=flow.float,
    6. key_type=flow.int64,
    7. tables=tables,
    8. store_options=store_options,
    9. )

    基于 OneEmbedding 搭建的常见搜索推荐广告模型案例地址:https://github.com/Oneflow-Inc/models/tree/main/RecommenderSystems

    1

    大规模推荐系统的挑战

    一般而言,推荐系统需要使用类似性别、年龄、行为等方面的离散特征(sparse feature),在一个 Embedding 词表中用特征 ID 进行查表(lookup),取得对应的 Embedding 向量并送到下游使用。

    常用的公开数据集 Criteo1T 中大概包含十亿个特征 ID,如果 embedding_dims 配置为 128,那总共需要 512 GB 空间来容纳 Embedding 参数,如果使用 Adam 优化器,由于需要保存额外的两个状态变量 m 和 v,所需存储容量就增加到 1536 GB。实际应用场景中,数据规模比 Criteo 还要高出几个数量级,模型的容量就更大了。

    大规模推荐系统的核心问题就是,如何高效经济地支持大规模 Embedding 的查询和更新。权衡规模、成本和效率,出现了如下三种常见的解决方案。

  • 相关阅读:
    第一周 改善深层神经网络—初始化、正则化、梯度校验(1 & 2 & 3)
    基于springboot实现车辆充电桩平台管理系统项目【项目源码+论文说明】计算机毕业设计
    如何管理敏捷开发迭代,Sprint Backlog管理?
    怎样快速入门SpringMVC
    编译GreatSQL with RocksDB引擎
    振兴农村循环经济 和数链串起农业“生态链”
    C语言学习概览(三)
    jenkins持续集成、持续交付配置,以及对应Gitlab配置
    群狼调研(长沙商超神秘顾客调查)开展网络问卷调查
    arcmap / arcgis 安装教程
  • 原文地址:https://blog.csdn.net/OneFlow_Official/article/details/126314138