ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Monolith:让推荐系统支持海量 ID 特征实时学习的大规模训练框架

Monolith:让推荐系统支持海量 ID 特征实时学习的大规模训练框架 Monolith让推荐系统支持海量 ID 特征实时学习的大规模训练框架【免费下载链接】monolithA Lightweight Recommendation System项目地址: https://gitcode.com/GitHub_Trending/monolith4/monolithMonolith 是字节跳动开源的轻量级推荐系统A Lightweight Recommendation System深度学习框架基于 TensorFlow 构建核心能力是无冲突嵌入表collisionless embedding tables与实时训练real time training支持批量与实时两种训练模式并覆盖从训练到在线推理serving的完整链路。为什么是它推荐系统的两个老大难问题Monolith 恰好都给了答案。其一用户、物品 ID 动辄十亿级传统做法用固定哈希把 ID 映射到嵌入槽位不同 ID 会撞进同一个槽向量互相污染模型精度受损。Monolith 的无冲突嵌入表为每个 ID 保留唯一表示这一设计是它区别于普通 TF 训练方案的关键。其二离线批量模型天级更新追不上热点。Monolith 支持实时训练新行为进来就能更新参数帮助平台快速捕捉用户的新兴趣。框架整体构建在 TensorFlow 之上自带 C 自定义算子和分布式参数服务器PS训练、导出、部署一条龙。项目入口见 README.md。能力拆解它如何完成特征工程特征工程模块负责把原始日志、用户行为流中的 ID、标签、多值特征解析成模型可直接消费的结构化张量。入口在 monolith/core/feature.py配合 monolith/native_training/feature_utils.py 处理稀疏与多值特征数据侧的 C 内核monolith/native_training/data/kernels/完成解析、过滤、重采样等重活Python 层保持简洁。它如何搭建推荐模型monolith/core/model.py 定义模型骨架特征列feature columns把稀疏特征、稠密特征组织成网络输入Dense、MLP 等网络组件在其上拼装。优化器集中在 monolith/core/optimizers.py支持 AdamOM、Shampoo 等适合海量嵌入参数的更新规则monolith/core/base_layer.py 提供可复用网络层。召回、排序、多任务等常见结构都能在其上搭出来。它如何吃下实时数据流实时训练管线让模型直接消费流式数据而不只是等 T1 的批量文件。monolith/native_training/data/ 下内置 Kafka、Parquet 等数据源内核以及负样本生成、标签规整、特征变换等数据集算子配合参数同步parameter sync机制训练参数可以在大规模 PS 集群间高效流转。效果上模型对突发热点的响应从天压缩到秒级。架构与原理整体链路是批量日志与实时数据流先进入特征工程产出结构化特征张量张量进入嵌入层无冲突嵌入表为每个 ID 提供唯一向量MonolithModel 完成前向计算优化器更新参数训练产出 SavedModel 后导出由 serving 组件在线推理。无冲突嵌入表是整套架构的核心数据结构实时数据经自定义算子进入训练图参数更新在分布式 PS 上完成最终导出模型走 Kubernetes 部署。上手路径三步跑通推荐系统 Demo第一步克隆仓库git clone https://gitcode.com/GitHub_Trending/monolith4/monolith第二步本地装好 Bazel 3.1.0 与 Python 依赖后直接跑内置训练 Demo详见 README.md 的 Quick Startbazel run //monolith/native_training:demo --output_filterIGNORE_LOGS第三步把在线服务部署到 Kubernetes进入 deploy 目录执行make deploy它会把 MLService 的 CRD 和控制器一并安装进集群。服务编排配置示例精简版apiVersion: mlplatform.volcengine.com/v1 kind: MLService metadata: name: mlservice-demo spec: roles: - name: Entry # 在线推理入口角色 shardNum: 1 serviceSpec: serviceType: ClusterIP template: spec: replicas: 1 - name: PS # 参数服务器角色 shardNum: 2 template: spec: replicas: 1完整示例在 deploy/config/samples/mlplatform_v1_mlservice.yaml部署说明见 deploy/README.md。进阶玩法分片、数据源与训练规模怎么扩规模怎么扩MLService 里每个角色有shardNum分片数与replicas副本数两个旋钮。数据量、QPS 上来时先把 PS 角色的 shardNum 调大把推理入口的 replicas 调大控制器会自动滚动更新见 deploy/config/manager/ 下的部署配置。数据源怎么扩流式数据想换 Kafka topic 或加 Parquet 批量数据只需在 monolith/native_training/data/ 对应配置里加数据源无需改模型代码GPU 训练可参考 monolith/gpu_runner.py。导出与在线评估模型导出、warmup 数据生成见 monolith/native_training/model_export/在线推理链路文档见 markdown/serving.md。写在最后Monolith 把无冲突嵌入、实时训练、K8s 部署三件事打包成一套开源框架让大规模推荐系统的工程门槛明显降低。从bazel run //monolith/native_training:demo跑起来再到make deploy上集群一条完整路径已经铺好——现在就动手试试吧。【免费下载链接】monolithA Lightweight Recommendation System项目地址: https://gitcode.com/GitHub_Trending/monolith4/monolith创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表