我们准备了一系列的Demo帮助用户快速体验EasyRec的功能,降低使用EasyRec的门槛。
这些Demo包含了在公开数据集上针对不同模型做的多种实验,涵盖了推荐系统中的召回任务和排序任务,主要包括数据集下载、预处理、模型配置、训练及评估等过程。
我们提供了本地Anaconda安装
和Docker镜像启动
两种方式。
Demo实验中使用的环境为 python=3.6.8
+ tenserflow=1.12.0
conda create -n py36_tf12 python=3.6.8
conda activate py36_tf12
pip install tensorflow==1.12.0
git clone https://github.com/alibaba/EasyRec.git
cd EasyRec
bash scripts/init.sh
python setup.py install
git clone https://github.com/alibaba/EasyRec.git
cd EasyRec
-- Docker环境可选
(1) `python=3.6.9` + `tenserflow=1.15.5`
docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/easyrec:py36-tf1.15-0.7.4
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.7.4
docker exec -it <CONTAINER_ID> bash
(2) `python=3.8.10` + `tenserflow=2.10.0`
docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/easyrec:py38-tf2.10-0.7.4
docker run -td --network host -v /local_path/EasyRec:/docker_path/EasyRec mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/easyrec:py38-tf2.10-0.7.4
docker exec -it <CONTAINER_ID> bash
git clone https://github.com/alibaba/EasyRec.git
cd EasyRec
-- Docker环境可选
(1) `python=3.6.9` + `tenserflow=1.15.5`
bash scripts/build_docker.sh
sudo docker run -td --network host -v /local_path:/docker_path mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/easyrec:py36-tf1.15-<easyrec_version>
(2) `python=3.8.10` + `tenserflow=2.10.0`
bash scripts/build_docker_tf210.sh
sudo docker run -td --network host -v /local_path:/docker_path mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/easyrec:py38-tf2.10-<easyrec_version>
sudo docker exec -it <CONTAINER_ID> bash
注:<easyrec_version>需匹配当前EasyRec版本。
在data/xxx/download_and_process.sh
文件中提供了数据集的下载、解压、数据预处理等步骤,执行完成后会在目录下得到xxx_train_data
和xxx_test_data
两个文件。
下面分别是三种常用数据集的下载和预处理:
-
MovieLens-1M (详细见:data/movielens_1m/。 也可跳过预处理,直接通过链接下载处理后的数据集: movies_train_data、movies_test_data)
cd examples/data/movielens_1m sh download_and_process.sh
-
Criteo-Research-Kaggle (详细见:data/criteo/。也可跳过预处理,直接通过链接下载处理后的数据集: criteo_train_data、criteo_test_data)
cd examples/data/criteo sh download_and_process.sh
-
Amazon Books (详细见:data/amazon_books_data/。也可跳过预处理,直接通过链接直接下载处理后的数据集: amazon_train_data、amazon_test_data、negative_book_data)
cd examples/data/amazon_books_data sh download_and_process.sh
EasyRec的模型训练和评估都是基于config配置文件的,配置文件采用prototxt格式。在大多数任务中,我们只需要创建config文件就能满足相应的应用。
我们提供了用于demo实验的完整示例config文件,详细见: configs。
排序任务
召回任务
- dssm_on_books.config
- mind_on_books.config
- dssm_on_books_negative_sample.config
- mind_on_books_negative_sample.config
通过指定对应的pipeline_config_path文件即可启动命令训练模型并评估。更多模型可参考models。
在此数据集中, 提供了4个模型上的demo示例(Wide&Deep / DeepFM / DCN / AutoInt)。
-
Wide & Deep
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/wide_and_deep_on_movielens.config
-
DeepFM
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/deepfm_on_movielens.config
-
DCN
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/dcn_on_movielens.config
-
AutoInt
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/autoint_on_movielens.config
在此数据集中, 提供了2个模型上的demo示例(FM / DeepFM)。
-
FM
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/fm_on_criteo.config
-
DeepFM
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/deepfm_on_criteo.config
在此数据集中, 提供了2个模型及其负采样版的demo示例 DSSM / MIND / DSSM-Negative-Sample / MIND-Negative-Sample 。
-
DSSM
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/dssm_on_books.config
-
MIND
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/mind_on_books.config
-
DSSM with Negative Sample
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/dssm_on_books_negative_sample.config
-
MIND with Negative Sample
python -m easy_rec.python.train_eval --pipeline_config_path examples/configs/mind_on_books_negative_sample.config
CUDA_VISIBLE_DEVICES=0 python -m easy_rec.python.train_eval --pipeline_config_path *.config
- --pipeline_config_path: 训练用的配置文件
- --continue_train: 是否继续训
- ps跑在CPU上
- master跑在GPU:0上
- worker跑在GPU:1上
- Note: 本地只支持ps, master, worker模式,不支持ps, chief, worker, evaluator模式
wget https://easyrec.oss-cn-beijing.aliyuncs.com/scripts/train_2gpu.sh
sh train_2gpu.sh *.config
通过修改pipeline_config_path文件即可评估及导出对应的模型。
-
模型评估
python -m easy_rec.python.eval --pipeline_config_path examples/configs/deepfm_on_criteo.config
-
模型导出
python -m easy_rec.python.export --pipeline_config_path examples/configs/deepfm_on_criteo.config --export_dir examples/ckpt/export/deepfm_on_criteo
在公开数据集上的demo实验以及评估结果如下,仅供参考。
-
MovieLens-1M
Model Epoch AUC MLP 1 0.8616 Wide&Deep 1 0.8558 Wide&Deep(Backbone) 1 0.8854 MultiTower(Backbone) 1 0.8814 DeepFM 1 0.8867 DeepFM(Backbone) 1 0.8872 DCN 1 0.8576 DCN_v2 1 0.8770 AutoInt 1 0.8513 MaskNet 1 0.8872 FibiNet 1 0.8893 备注:
MovieLens-1M
数据集较小,评估指标方差较大,以上结果仅供参考。 -
Criteo-Research
Model Epoch AUC FM 1 0.7577 DeepFM 1 0.7970 DeepFM (backbone) 1 0.7970 DeepFM (periodic) 1 0.7979 DeepFM (autodis) 1 0.7982 DLRM 1 0.79785 DLRM (backbone) 1 0.7983 DLRM (senet) 1 0.7995 DLRM (standard) 1 0.7949 DLRM (autodis) 1 0.7989 DLRM (periodic) 1 0.7998
-
Amazon Books Data
Model Epoch AUC DSSM 2 0.8173 MIND 2 0.7511
注:评估召回模型及负采样版的效果建议参考HitRate指标,具体评估方法见HitRate评估。