diff --git a/TensorFlow/built-in/recommendation/DIEN_ID0109_for_TensorFlow/README.md b/TensorFlow/built-in/recommendation/DIEN_ID0109_for_TensorFlow/README.md index c690b6b5332c4638e3c0b864af5a9126c14ff701..19106617a7959682666d3ed86c70646032c51f19 100644 --- a/TensorFlow/built-in/recommendation/DIEN_ID0109_for_TensorFlow/README.md +++ b/TensorFlow/built-in/recommendation/DIEN_ID0109_for_TensorFlow/README.md @@ -1,14 +1,111 @@ -# Deep Interest Evolution Network for Click-Through Rate Prediction -https://arxiv.org/abs/1809.03672 -## prepare data -### method 1 -You can get the data from amazon website and process it using the script +- [基本信息](#基本信息.md) +- [概述](#概述.md) +- [训练环境准备](#训练环境准备.md) +- [快速上手](#快速上手.md) +- [迁移学习指导](#迁移学习指导.md) +- [高级参考](#高级参考.md) + +

基本信息

+ +**发布者(Publisher):Huawei** + +**应用领域(Application Domain):Recommendation** + +**版本(Version):1.1** + +**修改时间(Modified) :2022.04.08** + +**大小(Size)**_**:220Kb** + +**框架(Framework):TensorFlow 1.15.0** + +**模型格式(Model Format):ckpt** + +**精度(Precision):Mixed** + +**处理器(Processor):昇腾910** + +**应用级别(Categories):Research** + +**描述(Description):基于TensorFlow框架的DIEN网络训练代码** + +- 参考论文: + + https://arxiv.org/abs/1809.03672 + +- 参考实现: + + https://github.com/mouna99/dien + +- 适配昇腾 AI 处理器的实现: + + https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/built-in/recommendation/DIEN_ID0109_for_TensorFlow + +- 通过Git获取对应commit\_id的代码方法如下: + + ``` + git clone {repository_url} # 克隆仓库的代码 + cd {repository_name} # 切换到模型的代码仓目录 + git checkout {branch} # 切换到对应分支 + git reset --hard {commit_id} # 代码设置到对应的commit_id + cd {code_path} # 切换到模型代码所在路径,若仓库下只有该模型,则无需切换 + ``` + +## 默认配置 +- 网络结构 + + - 学习率为0.001 + - 优化器:adam + - 单卡batchsize:128 + - 总step数为25400 + +- 训练超参(单卡): + - Batch size: 128 + - Learning rate\(LR\): 0.0001 + - Train epochs:1 + - Trainsteps:25400 + +## 支持特性 + +| 特性列表 | 是否支持 | +| ---------- | -------- | +| 分布式训练 | 否 | +| 混合精度 | 是 | +| 数据并行 | 否 | + + +## 混合精度训练 + +昇腾910 AI处理器提供自动混合精度功能,可以针对全网中float32数据类型的算子,按照内置的优化策略,自动将部分float32的算子降低精度到float16,从而在精度损失很小的情况下提升系统性能并减少内存使用。 + +## 开启混合精度 +相关代码示例。 + +``` +config_proto = tf.ConfigProto(allow_soft_placement=True) + custom_op = config_proto.graph_options.rewrite_options.custom_optimizers.add() + custom_op.name = 'NpuOptimizer' + custom_op.parameter_map["use_off_line"].b = True + custom_op.parameter_map["precision_mode"].s = tf.compat.as_bytes("allow_mix_precision") + config_proto.graph_options.rewrite_options.remapping = RewriterConfig.OFF + session_config = npu_config_proto(config_proto=config_proto) ``` -sh prepare_data.sh +

训练环境准备

+ +- 硬件环境和运行环境准备请参见《[CANN软件安装指南](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373?category=installation-update)》 +- 运行以下命令安装依赖。 ``` -### method 2 (recommended) -Because getting and processing the data is time consuming,so we had processed it and upload it for you. You can unzip it to use directly. +pip3 install requirements.txt ``` +说明:依赖配置文件requirements.txt文件位于模型的根目录 + + +

快速上手

+ +## 数据集准备 + +1. 可以从"参考实现"中的源码链接里下载数据集 +2. 下载好数据集后可以解压到本地目录下 tar -jxvf data.tar.gz mv data/* . tar -jxvf data1.tar.gz @@ -16,23 +113,61 @@ mv data1/* . tar -jxvf data2.tar.gz mv data2/* . ``` -When you see the files below, you can do the next work. -- cat_voc.pkl -- mid_voc.pkl -- uid_voc.pkl -- local_train_splitByUser -- local_test_splitByUser -- reviews-info -- item-info -## train model +## 模型训练 +- 单击“立即下载”,并选择合适的下载方式下载源码包。 +- 开始训练。 + + 1. 启动训练之前,首先要配置程序运行相关环境变量。 + + 环境变量配置信息参见: + + [Ascend 910训练平台环境变量设置](https://gitee.com/ascend/modelzoo/wikis/Ascend%20910%E8%AE%AD%E7%BB%83%E5%B9%B3%E5%8F%B0%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%AE%BE%E7%BD%AE?sort_id=3148819) + + +- 单卡训练 + 以数据集放在/data为例 + ``` + cd test + bash train_performance_1p.sh --data_path=/data (功能和性能) + bash train_full_1p.sh --data_path=/data (全量) ## 当前full脚本尚未调通 + ``` + +

迁移学习指导

+ +- 数据集准备。 + + 1. 获取数据。 + 请参见“快速上手”中的数据集准备 + +- 模型训练 + + 请参考“快速上手”章节 + +

高级参考

+ +## 脚本和示例代码 + + ├── README.md //说明文档 + ├── requirements.txt //依赖 + ├── script //模型结构 + │ ├──data_iterator.py + │ ├──Dice.py + │ ├──train.py + │ ├──model.py + ├── test + | |—— train_full_1p.sh //单卡训练脚本 + | |—— train_performance_1p.sh //单卡训练脚本 + +## 脚本参数 + ``` -python train.py train [model name] +batch_size 训练batch_size +learning_rate 初始学习率 +train_epochs 总训练epoch数 + ``` -The model blelow had been supported: -- DNN -- PNN -- Wide (Wide&Deep NN) -- DIN (https://arxiv.org/abs/1706.06978) -- DIEN (https://arxiv.org/pdf/1809.03672.pdf) - -Note: we use tensorflow 1.4. + +## 训练过程 + +通过“模型训练”中的训练指令启动单卡训练。 +将训练脚本(train_full_1p.sh)中的data_path设置为训练数据集的路径。具体的流程参见“模型训练”的示例。 \ No newline at end of file diff --git a/TensorFlow2/built-in/nlp/BertLarge_ID0634_for_TensorFlow2.X/ReadMe.md b/TensorFlow2/built-in/nlp/BertLarge_ID0634_for_TensorFlow2.X/ReadMe.md index e9281c0fbace9c0a683a6afd0f8fff4805da7516..762b1b60f76d498b1eaeff8047263a6b4f56098b 100644 --- a/TensorFlow2/built-in/nlp/BertLarge_ID0634_for_TensorFlow2.X/ReadMe.md +++ b/TensorFlow2/built-in/nlp/BertLarge_ID0634_for_TensorFlow2.X/ReadMe.md @@ -16,7 +16,7 @@ **大小(Size):210KB** -**框架(Framework):TensorFlow_2.4.1** +**框架(Framework):TensorFlow_2.6.0** **模型格式(Model Format):ckpt** @@ -60,14 +60,14 @@ BERT模型的全称是:BidirectionalEncoder **Representations** from Transform - 24-layer, 1024-hidden, 16-heads, 340M parameters - 训练超参(单卡): - - Batch size: 16 + - Batch size: 24 - max_predictions_per_seq: 76 - max_seq_length: 512 - Learning rate\(LR\): 0.000058711 - Weight decay: 0.01 - beta_1: 0.91063 - beta_2: 0.96497 - - Train epoch: 12 + - Train epoch: 32 ## 支持特性 @@ -87,7 +87,7 @@ BERT模型的全称是:BidirectionalEncoder **Representations** from Transform 拉起脚本中,传入--precision_mode='allow_mix_precision' ``` - ./train_performance_1p_16bs.sh --help + ./train_performance_1p_24bs.sh --help parameter explain: --precision_mode precision mode(allow_fp32_to_fp16/force_fp16/must_keep_origin_dtype/allow_mix_precision) @@ -166,7 +166,7 @@ npu_device.global_options().precision_mode=FLAGS.precision_mode ## 模型训练 - 下载训练脚本。 -- 检查scripts/目录下是否有存在8卡IP的json配置文件“rank_table_8p.json"。 +- 检查并修改configs/目录下8卡IP的json配置文件“rank_table_8p.json"。 ``` { @@ -235,15 +235,15 @@ npu_device.global_options().precision_mode=FLAGS.precision_mode 2. 单卡训练 - 2. 1单卡训练指令(脚本位于BertLarge_TF2.x_for_Tensorflow/test/train_full_1p_16bs.sh),请确保下面例子中的“--data_path”修改为用户的tfrecord的路径,这里选择将tfrecord文件夹放在home目录下。 + 2.1 单卡训练指令(脚本位于BertLarge_TF2.x_for_Tensorflow/test/train_performance_1p_24bs.sh),请确保下面例子中的“--data_path”修改为用户的tfrecord的路径,这里选择将tfrecord文件夹放在home目录下。 - bash test/train_full_1p_16bs.sh --data_path=/home/tfrecord --precision_mode='allow_mix_precision' + bash test/train_performance_1p_24bs.sh --data_path=/home/tfrecord --precision_mode=allow_mix_precision 3. 8卡训练 - 3.1 8卡训练指令(脚本位于BertLarge_TF2.x_for_Tensorflow/test/train_full_8p_128bs.sh),请确保下面例子中的“--data_path”修改为用户的tfrecord的路径。 + 3.1 8卡训练指令(脚本位于BertLarge_TF2.x_for_Tensorflow/test/train_performance_8p_192bs.sh),请确保下面例子中的“--data_path”修改为用户的tfrecord的路径。 - bash test/train_full_8p_128bs.sh --data_path=/home/tfrecord --precision_mode='allow_mix_precision' + bash test/train_performance_8p_192bs.sh --data_path=/home/tfrecord --precision_mode=allow_mix_precision @@ -260,8 +260,8 @@ npu_device.global_options().precision_mode=FLAGS.precision_mode | |--bert_config.json | |--rank_table_8p.json |--test #训练脚本目录 -| |--train_full_1p_16bs.sh -| |--train_full_8p_64bs.sh +| |--train_performance_1p_24bs.sh +| |--train_performance_8p_192bs.sh | |--...... ``` @@ -300,3 +300,4 @@ npu_device.global_options().precision_mode=FLAGS.precision_mode +