# DeepFM Description This is an example of training DeepFM with Criteo dataset in MindSpore. [Paper](https://arxiv.org/pdf/1703.04247.pdf) Huifeng Guo, Ruiming Tang, Yunming Ye, Zhenguo Li, Xiuqiang He # Model architecture The overall network architecture of DeepFM is show below: [Link](https://arxiv.org/pdf/1703.04247.pdf) # Requirements - Install [MindSpore](https://www.mindspore.cn/install/en). - Download the criteo dataset for pre-training. Extract and clean text in the dataset with [WikiExtractor](https://github.com/attardi/wikiextractor). Convert the dataset to TFRecord format and move the files to a specified path. - For more information, please check the resources below: - [MindSpore tutorials](https://www.mindspore.cn/tutorial/zh-CN/master/index.html) - [MindSpore API](https://www.mindspore.cn/api/zh-CN/master/index.html) # Script description ## Script and sample code ```python ├── deepfm ├── README.md ├── scripts │ ├──run_train.sh │ ├──run_eval.sh ├── src │ ├──config.py │ ├──dataset.py │ ├──callback.py │ ├──deepfm.py ├── train.py ├── eval.py ``` ## Training process ### Usage - sh run_train.sh [DEVICE_NUM] [DATASET_PATH] [MINDSPORE_HCCL_CONFIG_PAHT] - python train.py --dataset_path [DATASET_PATH] ### Launch ``` # distribute training example sh scripts/run_distribute_train.sh 8 /opt/dataset/criteo /opt/mindspore_hccl_file.json # standalone training example sh scripts/run_standalone_train.sh 0 /opt/dataset/criteo or python train.py --dataset_path /opt/dataset/criteo > output.log 2>&1 & ``` ### Result Training result will be stored in the example path. Checkpoints will be stored at `./checkpoint` by default, and training log will be redirected to `./output.log` by default, and loss log will be redirected to `./loss.log` by default, and eval log will be redirected to `./auc.log` by default. ## Eval process ### Usage - sh run_eval.sh [DEVICE_ID] [DATASET_PATH] [CHECKPOINT_PATH] ### Launch ``` # infer example sh scripts/run_eval.sh 0 ~/criteo/eval/ ~/train/deepfm-15_41257.ckpt ``` > checkpoint can be produced in training process. ### Result Inference result will be stored in the example path, you can find result like the followings in `auc.log`. ``` 2020-05-27 20:51:35 AUC: 0.80577889065281, eval time: 35.55999s. ``` # Model description ## Performance ### Training Performance | Parameters | DeepFM | | -------------------------- | ------------------------------------------------------| | Model Version | | | Resource | Ascend 910, cpu:2.60GHz 96cores, memory:1.5T | | uploaded Date | 05/27/2020 | | MindSpore Version | 0.2.0 | | Dataset | Criteo | | Training Parameters | src/config.py | | Optimizer | Adam | | Loss Function | SoftmaxCrossEntropyWithLogits | | outputs | | | Loss | 0.4234 | | Accuracy | AUC[0.8055] | | Total time | 91 min | | Params (M) | | | Checkpoint for Fine tuning | | | Model for inference | | #### Inference Performance | Parameters | | | | -------------------------- | ----------------------------- | ------------------------- | | Model Version | | | | Resource | Ascend 910 | Ascend 310 | | uploaded Date | 05/27/2020 | 05/27/2020 | | MindSpore Version | 0.2.0 | 0.2.0 | | Dataset | Criteo | | | batch_size | 1000 | | | outputs | | | | Accuracy | AUC[0.8055] | | | Speed | | | | Total time | 35.559s | | | Model for inference | | | # ModelZoo Homepage [Link](https://gitee.com/mindspore/mindspore/tree/master/mindspore/model_zoo)