8000 hello-world alexnet dygraph commit-20200629 by Sunyingbin · Pull Request #4725 · PaddlePaddle/models · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

hello-world alexnet dygraph commit-20200629 #4725

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: dev-static
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ python -u main.py \
```

### 服务部署
    模块内提供已训练好的5个inference_model模型,用户可根据自身业务情况进行下载使用
    模块内提供已训练好的5个训练模型,用户可通过执行inference model脚本转换成可以部署的模型

#### 服务器部署
    请参考PaddlePaddle官方提供的[服务器端部署](https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/advanced_usage/deploy/inference/index_cn.html)文档进行部署上线。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ def do_save_inference_model(args):
assert (args.init_from_params) or (args.init_from_pretrain_model)

if args.init_from_params:
fluid.load(test_prog, args.init_from_params)
fluid.load(test_prog, args.init_from_params, executor=exe)
elif args.init_from_pretrain_model:
fluid.load(test_prog, args.init_from_pretrain_model)
fluid.load(test_prog, args.init_from_pretrain_model, executor=exe)

# saving inference model
fluid.io.save_inference_model(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def do_save_inference_model(args):
assert (args.init_from_params)

if args.init_from_params:
fluid.load(test_prog, args.init_from_params)
fluid.load(test_prog, args.init_from_params, executor=exe)

# saving inference model
fluid.io.save_inference_model(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def do_predict(args):
assert (args.init_from_params)

if args.init_from_params:
fluid.load(test_prog, args.init_from_params)
fluid.load(test_prog, args.init_from_params, executor=exe)

compiled_test_prog = fluid.CompiledProgram(test_prog)

Expand Down
12 changes: 9 additions & 3 deletions PaddleNLP/sentiment_classification/run.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,19 @@ TASK_NAME='senta'
DATA_PATH=./senta_data/
CKPT_PATH=./save_models
MODEL_PATH=./save_models/step_1800/
MODEL_TYPE=${MODEL_TYPE:-bilstm_net}
USE_CUDA=${USE_CUDA:-true}


# run_train on train.tsv and do_val on test.tsv
train() {
python -u run_classifier.py \
--task_name ${TASK_NAME} \
--use_cuda true \
--use_cuda $USE_CUDA \
--do_train true \
--do_val false \
--do_infer false \
--model_type $MODEL_TYPE \
--batch_size 8 \
--data_dir ${DATA_PATH} \
--vocab_path ${DATA_PATH}/word_dict.txt \
Expand All @@ -33,10 +37,11 @@ train() {
evaluate() {
python -u run_classifier.py \
--task_name ${TASK_NAME} \
--use_cuda true \
--use_cuda $USE_CUDA \
--do_train false \
--do_val true \
--do_infer false \
--model_type $MODEL_TYPE \
--batch_size 10 \
--data_dir ${DATA_PATH} \
--vocab_path ${DATA_PATH}/word_dict.txt \
Expand All @@ -48,10 +53,11 @@ evaluate() {
infer() {
python -u run_classifier.py \
--task_name ${TASK_NAME} \
--use_cuda true \
--use_cuda $USE_CUDA \
--do_train false \
--do_val false \
--do_infer true \
--model_type $MODEL_TYPE \
--batch_size 10 \
--data_dir ${DATA_PATH} \
--vocab_path ${DATA_PATH}/word_dict.txt \
Expand Down
3 changes: 1 addition & 2 deletions PaddleNLP/seq2seq/variational_seq2seq/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,11 +230,10 @@ def _build_decoder(self,
# `sample_output_layer` samples an id from the logits distribution instead of argmax(logits)
# it will be used within BeamSearchDecoder
sample_output_layer = lambda x: layers.unsqueeze(fluid.one_hot(
layers.unsqueeze(
layers.sampling_id(
layers.softmax(
layers.squeeze(output_layer(x),[1])
),dtype='int'), [1]),
),dtype='int'),
depth=self.tar_vocab_size), [1])

if mode == 'train':
Expand Down
34 changes: 1 addition & 33 deletions PaddleRec/README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,4 @@
PaddleRec
=========

个性化推荐
-------

推荐系统在当前的互联网服务中正在发挥越来越大的作用,目前大部分电子商务系统、社交网络,广告推荐,搜索引擎,信息流,都不同程度的使用了各种形式的个性化推荐技术,帮助用户快速找到他们想要的信息。

在工业可用的推荐系统中,推荐策略一般会被划分为多个模块串联执行。以新闻推荐系统为例,存在多个可以使用深度学习技术的环节,例如新闻的内容理解--标签标注,个性化新闻召回,个性化匹配与排序,融合等。PaddlePaddle对推荐算法的训练提供了完整的支持,并提供了多种模型配置供用户选择。

PaddleRec全景图:

![paddlerec](./img/paddlerec.png)



| 任务场景 | 模型 | 简介 |
| :------------------------:| :------------------------------------------------: | :----------------------------------------------------------: |
| 内容理解 | [TagSpace](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/tagspace) |Tagspace模型学习文本及标签的embedding表示,应用于工业级的标签推荐,具体应用场景有feed新闻标签推荐。|
| 内容理解 | [TextClassification](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/text_classification) |文本分类,具体应用场景有feed新闻标签分类。|
| 召回 | [Word2Vec](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/word2vec) |训练得到词的向量表示、广泛应用于NLP、推荐等任务场景。 |
| 召回 | [GNN](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gnn) |SR-GNN,全称为Session-based Recommendations with Graph Neural Network(GNN)。使用GNN进行会话序列建模。 |
| 召回 | [TDM-Variant](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/tdm) |全称为Tree-based Deep Model for Recommender Systems。层次化建模及检索 |
| 召回 | [GRU4Rec](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gru4rec) |Session-based 推荐, 首次将RNN(GRU)运用于session-based推荐,核心思想是在一个session中,用户点击一系列item的行为看做一个序列,用来训练RNN模型 |
| 召回 | [SSR](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ssr) |全称为SequenceSemanticRetrieval, 解决了 GRU4Rec 模型无法预测训练数据集中不存在的项目,比如新闻推荐的问题。它由两个部分组成:一个是匹配模型部分,另一个是检索部分 |
| 匹配 | [Multiview-Simnet](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/multiview_simnet) |多视角Simnet模型是可以融合用户以及推荐项目的多个视角的特征并进行个性化匹配学习的一体化模型。这类模型在很多工业化的场景中都会被使用到,比如百度的Feed产品中 |
| 匹配 | [DSSM](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/dssm) |全称:Deep Structured Semantic Model深度语义匹配模型 |
| 排序 | [DNN](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ctr/dnn) |经典的CTR预估算法。|
| 排序 | [Wide_Deep](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ctr/wide_deep) |经典的CTR预估算法。|
| 排序 | [DeepFM](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ctr/deepfm) |DeepFM,全称Factorization-Machine based Neural Network。经典的CTR预估算法,网络由DNN和FM两部分组成。 |
| 排序 | [XDeepFM](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ctr/xdeepfm) |xDeepFM,全称extreme Factorization Machine。对DeepFM和DCN的改进,提出CIN(Compressed Interaction Network),使用vector-wise等级的显示特征交叉。 |
| 排序 | [DCN](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ctr/dcn) |全称Deep & Cross Network。提出一种新的交叉网络(cross network),在每个层上明确地应用特征交叉。 |
| 排序 | [DIN](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ctr/din) |DIN,全称为Deep Interest Network。特点为对历史序列建模的过程中结合了预估目标的信息。 |
| 融合- 多任务 | [ESMM](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/multi_task/esmm) |ESMM,全称为Entire Space Multi-task Model。提出一种新的CVR预估模型。 |
| 融合- 多任务 | [Share_bottom](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/multi_task/share_bottom) |多任务学习的基本框架,其特点是对于不同的任务,底层的参数和网络结构是共享的。 |
| 融合- 多任务 | [MMoE](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/multi_task/mmoe) |MMOE, 全称为Multi-grate Mixture-of-Experts,可以刻画任务相关性。 |
models/PaddleRec只是提供了经典推荐算法的Paddle实现,我们已经开源了功能更强大的工具组件[PaddlePaddle/PaddleRec](https://github.com/PaddlePaddle/PaddleRec) 打通了推荐算法+分布式训练全流程,并提供了高级API,在单机和分布式间可以实现无缝切换。后续我们将在[PaddlePaddle/PaddleRec](https://github.com/PaddlePaddle/PaddleRec) Repo中发布新的模型和功能,models/PaddleRec不再更新维护。
4 changes: 2 additions & 2 deletions PaddleRec/ctr/wide_deep/data_preparation.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,11 @@ def build_model_columns(train_data_path, test_data_path):
train_df['label'] = train_df['income_bracket'].apply(lambda x : 1 if x == '>50K' else 0)
test_df['label'] = test_df['income_bracket'].apply(lambda x : 1 if x == '>50K' else 0)

with io.open('train_data/columns.txt','w') as f:
with open('train_data/columns.txt','w') as f:
write_str = str(len(wide_columns)) + '\n' + str(len(deep_columns)) + '\n'
f.write(write_str)
f.close()
with io.open('test_data/columns.txt','w') as f:
with open('test_data/columns.txt','w') as f:
write_str = str(len(wide_columns)) + '\n' + str(len(deep_columns)) + '\n'
f.write(write_str)
f.close()
Expand Down
2 changes: 2 additions & 0 deletions PaddleRec/ctr/wide_deep/infer.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,5 +69,7 @@ def run_infer(args,test_data_path):
if __name__ == "__main__":

args = args.parse_args()
logger.info("batch_size: {}, use_gpu: {}, test_epoch: {}, test_data_path: {}, model_dir:{}, hidden1_units: {}, hidden2_units: {}, hidden3_units: {}".format(
args.batch_size, args.use_gpu, args.test_epoch, args.test_data_path, args.model_dir, args.hidden1_units, args.hidden2_units, args.hidden3_units))
run_infer(args, args.test_data_path)

2 changes: 2 additions & 0 deletions PaddleRec/ctr/wide_deep/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,6 @@ def train(args, train_data_path):

if __name__ == "__main__":
args = args.parse_args()
logger.info("epoch:{}, batch_size: {}, use_gpu: {}, train_data_path: {}, model_dir: {}, hidden1_units: {}, hidden2_units: {}, hidden3_units: {}".format(
args.epoch, args.batch_size, args.use_gpu, args.train_data_path, args.model_dir, args.hidden1_units, args.hidden2_units, args.hidden3_units))
train(args, args.train_data_path)
10 changes: 10 additions & 0 deletions PaddleRec/dssm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ DSSM[《Learning Deep Structured Semantic Models for Web Search using Clickthrou

python3.7

## 数据集说明

由于论文没有公开数据集,本项目构造数据验证网络的正确性,其说明如下:

query:随机构造的query向量表示

doc_pos:随机构造doc正例向量表示

doc_neg_0~3为四个doc负例向量表示

## 单机训练

GPU环境
Expand Down
14 changes: 4 additions & 10 deletions PaddleRec/dssm/dssm.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ def model(TRIGRAM_D = 1000, L1_N = 300, L2_N = 300, L3_N = 128, Neg = 4):
return avg_loss, R_Q_D_p, [query] + [doc_pos] + doc_negs

args = args.parse_args()
loss,R_Q_D_p, data_list = model(args.TRIGRAM_D,args.L1_N,args.L2_N,args.L3_N,args.Neg)
logger.info("use_gpu: {}, batch_size: {}, TRIGRAM_D: {}, L1_N:{}, L2_N: {}, L3_N: {}, Neg: {}, base_lr: {}, model_dir: {}".format(
args.use_gpu, args.batch_size, args.TRIGRAM_D, args.L1_N, args.L2_N, args.L3_N, args.Neg, args.base_lr, args.model_dir))

loss,R_Q_D_p, data_list = model(args.TRIGRAM_D, args.L1_N, args.L2_N, args.L3_N, args.Neg)

sgd = fluid.optimizer.SGD(learning_rate=args.base_lr)
sgd.minimize(loss)
Expand Down Expand Up @@ -108,12 +111,3 @@ def model(TRIGRAM_D = 1000, L1_N = 300, L2_N = 300, L3_N = 128, Neg = 4):
feed_var_names = ["query", "doc_pos"]
fetch_vars = [R_Q_D_p]
fluid.io.save_inference_model(args.model_dir, feed_var_names, fetch_vars, exe)









3 changes: 2 additions & 1 deletion PaddleRec/dssm/infer.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ def infer(args):
with fluid.scope_guard(fluid.Scope()):
infer_program, feed_target_names, fetch_vars = fluid.io.load_inference_model(args.model_dir, exe)

#构造测试数据
sample_size = 100
l_Qs = []
pos_l_Ds = []
Expand All @@ -38,4 +37,6 @@ def infer(args):

if __name__ == "__main__":
args = args.parse_args()
logger.info("use_gpu: {}, model_dir: {}".format(args.use_gpu, args.model_dir))

infer(args)
2 changes: 1 addition & 1 deletion PaddleRec/dssm/infer_cpu.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
python infer.py --use_gpu 0 \
--model_dir 'model_dir'
--model_dir ./model_dir
2 changes: 1 addition & 1 deletion PaddleRec/dssm/infer_gpu.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
CUDA_VISIBLE_DEVICES=0 python infer.py --use_gpu 1 \
--model_dir 'model_dir'
--model_dir ./model_dir
2 changes: 1 addition & 1 deletion PaddleRec/dssm/train_cpu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ python dssm.py --use_gpu 0 \
--L3_N 128 \
--Neg 4 \
--base_lr 0.01 \
--model_dir 'model_dir'
--model_dir ./model_dir
2 changes: 1 addition & 1 deletion PaddleRec/dssm/train_gpu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ CUDA_VISIBLE_DEVICES=0 python dssm.py --use_gpu 1 \
< 10000 span class='blob-code-inner blob-code-marker ' data-code-marker=" "> --L3_N 128 \
--Neg 4 \
--base_lr 0.01 \
--model_dir 'model_dir'
--model_dir ./model_dir
21 changes: 12 additions & 9 deletions PaddleRec/multi_task/esmm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
├── net.py # ESMM网络结构
├── train.py # ESMM模型训练脚本
├── infer.py # ESMM模型预测脚本
├── reader.py # 数据预处理文件
├── utils.py # 通用函数
├── args.py # 参数脚本
├── get_data.sh # 生成训练数据脚本
Expand All @@ -16,6 +15,7 @@
├── cpu_train.sh # cpu训练shell脚本
├── gpu_infer.sh # gpu预测shell脚本
├── cpu_infer.sh # cpu预测shell脚本
├── vocab_size.txt #词汇表文件
```

## 简介
Expand Down Expand Up @@ -50,14 +50,14 @@ GPU环境
在gpu_train.sh脚本文件中设置好数据路径、参数。

```shell
CUDA_VISIBLE_DEVICES=0 python train.py --use_gpu True\ #是否使用gpu
CUDA_VISIBLE_DEVICES=0 python train.py --use_gpu 1\ #是否使用gpu
--epochs 100\ #训练轮次
--batch_size 64\ #batch_size大小
--embed_size 12\ #每个featsigns的embedding维度
--cpu_num 2\ #cpu数量
--model_dir ./model_dir \ #模型保存路径
--train_data_path ./train_data \ #训练数据路径
--vocab_path ./vocab/vocab_size.txt #embedding词汇表大小路径
--vocab_path ./vocab_size.txt #embedding词汇表大小路径
```

修改脚本的可执行权限并运行
Expand All @@ -71,14 +71,14 @@ CPU环境
在cpu_train.sh脚本文件中设置好数据路径、参数。

```shell
python train.py --use_gpu False\ #是否使用gpu
python train.py --use_gpu 0\ #是否使用gpu
--epochs 100\ #训练轮次
--batch_size 64\ #batch_size大小
--embed_size 12\ #每个featsigns的embedding维度
--cpu_num 2\ #cpu数量
--model_dir ./model_dir \ #模型保存路径
--train_data_path ./train_data \ #训练数据路径
--vocab_path ./vocab/vocab_size.txt #embedding词汇表大小路径
--vocab_path ./vocab_size.txt #embedding词汇表大小路径
```

修改脚本的可执行权限并运行
Expand All @@ -94,10 +94,12 @@ GPU环境
在gpu_infer.sh脚本文件中设置好数据路径、参数。

```sh
python infer.py --use_gpu True\ #是否使用gpu
python infer.py --use_gpu 1\ #是否使用gpu
--batch_size 64\ #batch_size大小
--cpu_num 2\ #cpu数量
--model_dir ./model_dir \ #模型保存路径
--test_data_path ./test_data \ #训练数据路径
--vocab_path ./vocab/vocab_size.txt #embedding词汇表大小路径
--vocab_path ./vocab_size.txt #embedding词汇表大小路径
```

修改脚本的可执行权限并运行
Expand All @@ -111,11 +113,12 @@ CPU环境
在cpu_infer.sh脚本文件中设置好数据路径、参数。

```shell
python infer.py --use_gpu False\ #是否使用gpu
python infer.py --use_gpu 0\ #是否使用gpu
--batch_size 64\ #batch_size大小
--cpu_num 2\ #cpu数量
--model_dir ./model_dir \ #模型保存路径
--test_data_path ./test_data \ #训练数据路径
--vocab_path ./vocab/vocab_size.txt #embedding词汇表大小路径
--vocab_path ./vocab_size.txt #embedding词汇表大小路径
```

修改脚本的可执行权限并运行
Expand Down
4 changes: 2 additions & 2 deletions PaddleRec/multi_task/esmm/args.py
93C6
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ def parse_args():
parser.add_argument("--batch_size", type=int, default=64, help="batch_size")
parser.add_argument("--embed_size", type=int, default=12, help="embed_size")
parser.add_argument("--cpu_num", type=int, default=2, help="cpu_num")
parser.add_argument('--use_gpu', type=bool, default=False, help='whether using gpu')
parser.add_argument('--use_gpu', type=int, default=0, help='whether using gpu')
parser.add_argument('--model_dir', type=str, default='./model_dir', help='whether using gpu')

parser.add_argument('--train_data_path', type=str, default='./train_data', help='train_data_path')
parser.add_argument('--test_data_path', type=str, default='./test_data', help='test_data_path')
parser.add_argument('--vocab_path', type=str, default='./vocab/vocab_size.txt', help='vocab_path')
parser.add_argument('--vocab_path', type=str, default='./vocab_size.txt', help='vocab_path')
parser.add_argument("--train_sample_size", type=int, default=sys.maxsize, help="train_sample_size")
parser.add_argument("--test_sample_size", type=int, default=sys.maxsize, help="test_sample_size")

Expand Down
11 changes: 6 additions & 5 deletions PaddleRec/multi_task/esmm/cpu_infer.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
python infer.py --use_gpu False\ #是否使用gpu
--batch_size 64\ #batch_size大小
--cpu_num 2\ #cpu数量
--test_data_path ./test_data \ #训练数据路径
--vocab_path ./vocab/vocab_size.txt #embedding词汇表大小路径
python infer.py --use_gpu 0 \
--batch_size 64 \
--cpu_num 2 \
--model_dir ./model_dir \
--test_data_path ./test_data \
--vocab_path ./vocab_size.txt
16 changes: 8 additions & 8 deletions PaddleRec/multi_task/esmm/cpu_train.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
python train.py --use_gpu False\ #是否使用gpu
--epochs 100\ #训练轮次
--batch_size 64\ #batch_size大小
--embed_size 12\ #每个featsigns的embedding维度
--cpu_num 2\ #cpu数量
--model_dir ./model_dir \ #模型保存路径
--train_data_path ./train_data \ #训练数据路径
--vocab_path ./vocab/vocab_size.txt #embedding词汇表大小路径
python train.py --use_gpu 0 \
--epochs 100 \
--batch_size 64 \
--embed_size 12 \
--cpu_num 2 \
--model_dir ./model_dir \
--train_data_path ./train_data \
--vocab_path ./vocab_size.txt
Loading
0