EasyRec完整指南:从零开始掌握工业级推荐系统开发
【免费下载链接】EasyRecA framework for large scale recommendation algorithms.项目地址: https://gitcode.com/gh_mirrors/ea/EasyRec
EasyRec是一款功能强大的工业级推荐系统框架,旨在帮助开发者快速构建高效、准确的推荐系统。无论是电商平台的商品推荐、视频网站的内容推荐,还是新闻APP的资讯推荐,EasyRec都能提供全方位的支持,让你轻松应对各种推荐场景。
认识EasyRec:开启推荐系统开发之旅 🚀
什么是EasyRec?
EasyRec是一个易于使用的推荐系统框架,它实现了推荐任务中常用的各种先进机器学习模型,包括候选生成(匹配)、评分(排序)和多任务学习等。通过简单的配置和超参数调优(HPO),EasyRec可以显著提高生成高性能模型的效率。
EasyRec的核心优势
全平台运行能力:支持在MaxCompute、DataScience、DLC以及本地环境运行,兼容TF1.12-1.15、TF2.x和PAI-TF等多种TensorFlow版本。
多样化输入数据:能够处理MaxCompute表、HDFS文件、OSS文件、Kafka流数据以及本地CSV文件等多种数据格式。
简单易用的配置:提供灵活的特征配置和简单的模型配置,内置高效稳健的特征生成功能(已在淘宝使用),并正在开发友好的Web界面。
智能功能:支持早停(EarlyStop)、最佳检查点保存(Best Checkpoint Saver)、超参数搜索(Hyper Parameter Search)、自动特征交叉(AutoFeatureCross)等智能功能,还在开发NAS、知识蒸馏、多模态等高级特性。
大规模部署支持:支持大规模嵌入、增量保存,提供参数服务器(ParameterServer)、镜像(Mirrored)、多 worker(MultiWorker)等多种并行策略,可轻松部署到EAS实现自动扩展和监控。
快速上手:EasyRec环境搭建与安装
本地Anaconda安装
在搭载Apple M系列芯片的MacBook上必须使用TensorFlow 2.5或更高版本,其他环境可参考以下步骤:
conda create -n py36_tf12 python=3.6.8 conda activate py36_tf12 pip install tensorflow==1.12.0 pip install tensorflow_probability==0.5.0 git clone https://gitcode.com/gh_mirrors/ea/EasyRec cd EasyRec bash scripts/init.sh python setup.py install注意:必须安装tensorflow_probability包,其版本需与TensorFlow版本对应,常见版本对应关系如下:
| TensorFlow版本 | TensorFlowProbability版本 |
|---|---|
| 1.12 | 0.5.0 |
| 1.15 | 0.8.0 |
| 2.5.0 | 0.13.0 |
| 2.6.0 | 0.14.0 |
| 2.7.0 | 0.15.0 |
| 2.8.0 | 0.16.0 |
| 2.10 | 0.18.0 |
| 2.11 | 0.19.0 |
| 2.12 | 0.20.0 |
Docker镜像启动
Docker环境为python=3.6.9+tensorflow=1.15.5,推荐直接拉取已上传的镜像:
git clone https://gitcode.com/gh_mirrors/ea/EasyRec cd EasyRec docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/easyrec:py36-tf1.15-0.8.5 docker run -td --network host -v /local_path/EasyRec:/docker_path/EasyRec mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/easyrec:py36-tf1.15-0.8.5 docker exec -it <CONTAINER_ID> bash也可以选择自行构建Docker镜像,项目提供了多个版本的tensorflow镜像构建脚本,如scripts/build_docker_tf112.sh、scripts/build_docker_tf115.sh等。
EasyRec核心功能与模型解析
丰富的模型库
EasyRec提供了多种主流的推荐模型,满足不同场景的需求:
匹配模型:如DSSM、MIND、DropoutNet、CoMetricLearningI2I、PDN等,用于从海量物品中快速筛选出用户可能感兴趣的候选集。
排序模型:如Wide & Deep、DeepFM、MultiTower、DCN、DIN、BST等,对候选集进行精准排序,提高推荐效果。
多任务模型:如MMoE、ESMM、DBMTL、PLE等,能够同时处理多个相关任务,提高模型的泛化能力和效率。
多模态模型:如CMBF、UNITER等,支持文本、图像等多种类型数据的融合,提升推荐的丰富性和准确性。
高效的特征工程
EasyRec提供了灵活的特征配置方式,支持多种特征类型,如ID特征、数值特征、序列特征等。通过简单的配置,即可完成特征的预处理、嵌入等操作。
feature_config: { features: { input_names: "hour" feature_type: IdFeature embedding_dim: 16 hash_bucket_size: 50 } features: { input_names: "c1" feature_type: IdFeature embedding_dim: 16 hash_bucket_size: 10 } ... }智能超参数优化
EasyRec内置了超参数搜索功能,能够自动寻找最优的超参数组合,提高模型性能。通过配置HPO参数,即可启动超参数搜索过程。
实战演练:构建你的第一个推荐模型
数据准备
输入数据一般为CSV格式文件,不需要包含表头。可以使用示例数据进行测试:
- train: dwd_avazu_ctr_deepmodel_train.csv
- test: dwd_avazu_ctr_deepmodel_test.csv
配置文件编写
配置文件采用prototxt格式,包含输入输出、数据相关、特征相关、训练相关、评估相关和模型相关等部分的配置。以下是一个MultiTower模型的配置示例:
# 训练文件和测试文件 train_input_path: "dwd_avazu_ctr_deepmodel_train.csv" eval_input_path: "dwd_avazu_ctr_deepmodel_test.csv" # 模型保存路径 model_dir: "experiments/easy_rec/" # 数据相关的描述 data_config { separator: "," input_fields: { input_name: "label" input_type: FLOAT default_val:"" } ... } # 特征相关配置 feature_config: { features: { input_names: "hour" feature_type: IdFeature embedding_dim: 16 hash_bucket_size: 50 } ... } # 训练相关参数 train_config { log_step_count_steps: 200 optimizer_config: { adam_optimizer: { learning_rate: { exponential_decay_learning_rate { initial_learning_rate: 0.0001 decay_steps: 100000 decay_factor: 0.5 min_learning_rate: 0.0000001 } } } use_moving_average: false } sync_replicas: true num_steps:1000 } # 评估相关配置 eval_config { num_examples: 1000 metrics_set: { auc {} } } # 模型相关配置 model_config:{ model_class: "MultiTower" feature_groups: { group_name: "item" feature_names: "c1" ... wide_deep:DEEP } ... multi_tower { towers { input: "item" dnn { hidden_units: [384, 320, 256, 192, 128] } } ... final_dnn { hidden_units: [256, 192, 128, 64] } l2_regularization: 0.0 } embedding_regularization: 0.0 }模型训练与评估
GPU单机单卡训练
CUDA_VISIBLE_DEVICES=0 python -m easy_rec.python.train_eval --pipeline_config_path dwd_avazu_ctr_deepmodel_local.config评估模型
CUDA_VISIBLE_DEVICES=0 python -m easy_rec.python.eval --pipeline_config_path dwd_avazu_ctr_deepmodel_local.config导出模型
CUDA_VISIBLE_DEVICES='' python -m easy_rec.python.export --pipeline_config_path dwd_avazu_ctr_deepmodel_local.config --export_dir dwd_avazu_ctr_export进阶技巧:EasyRec高级功能应用
分布式训练
EasyRec支持多种分布式训练策略,如参数服务器(PS)、镜像(Mirrored)、多 worker(MultiWorker)等。以GPU PS训练为例:
wget https://easyrec.oss-cn-beijing.aliyuncs.com/scripts/train_2gpu.sh sh train_2gpu.sh dwd_avazu_ctr_deepmodel_local.config增量训练
EasyRec支持增量训练,能够在已有模型的基础上继续训练,节省训练时间,提高模型迭代效率。通过配置continue_train: true即可开启增量训练。
模型部署
训练好的模型可以轻松部署到EAS(弹性算法服务),实现自动扩展和监控。EAS提供了完善的服务管理功能,方便模型的上线和运维。
常见问题与解决方案
在使用EasyRec的过程中,可能会遇到各种问题,以下是一些常见问题的解决方案:
安装问题
如果遇到安装依赖包失败的问题,可以尝试更换镜像源,如使用阿里云镜像源:
pip install -i https://mirrors.aliyun.com/pypi/simple/ tensorflow==1.12.0数据格式问题
确保输入数据的格式符合要求,CSV文件不需要表头,字段之间使用指定的分隔符。如果数据中包含缺失值,可以在配置文件中设置default_val。
模型性能问题
如果模型性能不佳,可以尝试调整超参数、增加特征数量、更换模型结构等方法。EasyRec的超参数搜索功能可以帮助自动寻找最优的超参数组合。
总结与展望
EasyRec作为一款功能强大的工业级推荐系统框架,为开发者提供了便捷、高效的推荐系统开发解决方案。通过本文的介绍,你已经了解了EasyRec的基本概念、安装方法、核心功能、实战流程以及进阶技巧。
未来,EasyRec将继续开发更多高级特性,如NAS、知识蒸馏、多模态等,不断提升推荐系统的性能和效率。如果你对EasyRec感兴趣,可以访问项目仓库获取更多信息:https://gitcode.com/gh_mirrors/ea/EasyRec
希望本文能够帮助你快速掌握EasyRec,构建出高性能的推荐系统!如有任何问题,欢迎加入钉钉群(37930014162)进行交流讨论。
【免费下载链接】EasyRecA framework for large scale recommendation algorithms.项目地址: https://gitcode.com/gh_mirrors/ea/EasyRec
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考