MindSpore 21天实战营-Wide & Deep
一、Wide And Deep介绍
Wide模型介绍
在目前大规模线上推荐排序系统中,通用的线性模型如LR被广泛应用。线性模型通常输入二进制的one-hot稀疏表示特征进行训练。比如特征“user_installed_app=netflix”为1,表示用户已安装netflix。交叉特征AND(user_installed_app=netflix,impresion_app=Pandora)表示既安装了netflix app同时又浏览过Pandora的用户特征为1,否则为0。wide模型可以通过利用交叉特征高效的实现记忆能力,达到准确推荐的目的。wide模型通过加入一些宽泛类特征实现一定的泛化能力。但是受限与训练数据,wide模型无法实现训练数据中未曾出现过的泛化。
Deep 模型介绍
像FM和DNN这种Embedding类的模型,可以通过学习到的低纬度稠密向量实现模型的泛化能力,包括可以实现对未见过的内容进行泛化推荐。当模型query-item矩阵比较稀疏时,模型的会过分泛化,推荐出很多无相关性的内容,准确性不能得到保证。
W&D模型
二、使用GPU完成作业
下载wide & deep体验脚本
# 在root用户主目录下执行如下命令
git clone https://github.com/mindspore-ai/mindspore-21-days-tutorials.git mkdir -p /root/workspace/wide_deep cp -r /root/mindspore-21-days-tutorials/chapter5/wide_deep_gpu /root/workspace/wide_deep cd /root/workspace/wide_deep
准备阶段
体验作业
下载事先准备好的mindrecord和.ckpt文件
wget https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/train_demo.tar.gz tar -zxvf train_demo.tar.gz mkdir -p data/ten_percent mv mindrecord data/ten_percent wget https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/wide_deep.ckpt
验证结果
cd /wide_deep python eval.py --data_path=data/ten_percent/mindrecord --ckpt_path=wide_deep.ckpt
进阶作业
准备Criteo数据集(非全量),从华为云obs上下载Criteo数据集mini_demo.txt(全量数据的1%)
mkdir -p data/one_percent wget https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/mini_demo.txt mv mini_demo.txt ./data/one_percent
训练启动阶段
启动GPU容器
使用GPU mindspore-1.0.0版本镜像,将训练脚本及数据集所在目录挂载到容器环境中
docker run -it -v /root/workspace/wide_deep:/wide_deep --runtime=nvidia --privileged=true mindspore/mindspore-gpu:1.0.0 /bin/bash 安装环境依赖项 pip install pandas pip install scikit-learn
注:如果环境中没有安装docker
ubuntu系统可以使用apt-get install docker进行安装
处理数据
python src/preprocess_data.py --data_path=/wide_deep/data/one_percent/ --data_file=mini_demo.txt
开始训练
python train.py --data_path=data/one_percent/mindrecord
验证结果
python eval.py --data_path=data/one_percent/mindrecord --ckpt_path=widedeep_train-1_42.ckpt
三、使用昇腾环境进行训练
1.数据准备
wide_deep.ckpt:https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/wide_deep.ckpt
train_demo.tar.gz:https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/train_demo.tar.gz
demo.txt:https://wide-deep-21.obs.cn-north-4.myhuaweicloud.com/mini_demo.txt
脚本源代码通过git clone https://github.com/mindspore-ai/mindspore-21-days-tutorials.git
2.将代码上传到OBS中
ckpt_file: 存放体验作业需要的wide_deep.ckpt文件
mindrecoder: 存放train_demo.tar.gz文件
minddemo:mini_demo目录存放进阶作业需要的mini_demo.txt文件
output: 存放进阶作业在ModelArts平台上执行任务时生成的ckpt文件
code:存放模型训练的输出文件
体验作业
体验作业的主要配置:
训练结果:
进阶作业
模型预训练环境配置:
预训练结果:
模型训练环境配置
训练结果
验证结果(验证的配置同体验作业):
- 点赞
- 收藏
- 关注作者
评论(0)