From a29003b70819c4c4ed5d65654590cdf2aa2e731e Mon Sep 17 00:00:00 2001 From: Hongyu Liu <43953930+phlrain@users.noreply.github.com> Date: Mon, 1 Jul 2019 15:36:26 +0800 Subject: [PATCH] Add seq2seq padding (#2603) * change seq2seq to padding impl; test=develop * add bleu result; test=develop * fix formate; test=develop * fix formate; test=develop --- .../rnn_search/.run_ce.sh | 5 - .../rnn_search/README.md | 152 ++-- .../rnn_search/_ce.py | 63 -- .../rnn_search/args.py | 123 ++-- .../rnn_search/attention_model.py | 681 ++++++++++++------ .../rnn_search/base_model.py | 502 +++++++++++++ .../rnn_search/data/download_en-vi.sh | 33 + .../rnn_search/images/bi_rnn.png | Bin 171455 -> 0 bytes .../rnn_search/images/decoder_attention.png | Bin 83630 -> 0 bytes .../rnn_search/images/encoder_attention.png | Bin 47539 -> 0 bytes .../rnn_search/infer.py | 218 +++--- .../rnn_search/infer.sh | 21 + .../rnn_search/no_attention_model.py | 127 ---- .../rnn_search/reader.py | 210 ++++++ .../rnn_search/run.sh | 22 + .../rnn_search/train.py | 265 ++++--- 16 files changed, 1658 insertions(+), 764 deletions(-) delete mode 100755 PaddleNLP/unarchived/neural_machine_translation/rnn_search/.run_ce.sh delete mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/_ce.py create mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/base_model.py create mode 100755 PaddleNLP/unarchived/neural_machine_translation/rnn_search/data/download_en-vi.sh delete mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/images/bi_rnn.png delete mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/images/decoder_attention.png delete mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/images/encoder_attention.png create mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/infer.sh delete mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/no_attention_model.py create mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/reader.py create mode 100644 PaddleNLP/unarchived/neural_machine_translation/rnn_search/run.sh diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/.run_ce.sh b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/.run_ce.sh deleted file mode 100755 index 6be159cb..00000000 --- a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/.run_ce.sh +++ /dev/null @@ -1,5 +0,0 @@ -###!/bin/bash -####This file is only used for continuous evaluation. - -model_file='train.py' -python $model_file --pass_num 1 --learning_rate 0.001 --save_interval 10 --enable_ce | python _ce.py diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/README.md b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/README.md index 556ea6f5..991ee9cc 100644 --- a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/README.md +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/README.md @@ -10,8 +10,11 @@ ├── args.py # 训练、预测以及模型参数 ├── train.py # 训练主程序 ├── infer.py # 预测主程序 +├── run.sh # 默认配置的启动脚本 +├── infer.sh # 默认配置的解码脚本 ├── attention_model.py # 带注意力机制的翻译模型配置 -└── no_attention_model.py # 无注意力机制的翻译模型配置 +└── base_model.py # 无注意力机制的翻译模型配置 + ``` ## 简介 @@ -19,116 +22,93 @@ 近年来,深度学习技术的发展不断为机器翻译任务带来新的突破。直接用神经网络将源语言映射到目标语言,即端到端的神经网络机器翻译(End-to-End Neural Machine Translation, End-to-End NMT)模型逐渐成为主流,此类模型一般简称为NMT模型。 -本目录包含一个经典的机器翻译模型[RNN Search](https://arxiv.org/pdf/1409.0473.pdf)的Paddle Fluid实现。事实上,RNN search是一个较为传统的NMT模型,在现阶段,其表现已被很多新模型(如[Transformer](https://arxiv.org/abs/1706.03762))超越。但除机器翻译外,该模型是许多序列到序列(sequence to sequence, 以下简称Seq2Seq)类模型的基础,很多解决其他NLP问题的模型均以此模型为基础;因此其在NLP领域具有重要意义,并被广泛用作Baseline. +本目录包含两个经典的机器翻译模型一个base model(不带attention机制),一个带attention机制的翻译模型 .在现阶段,其表现已被很多新模型(如[Transformer](https://arxiv.org/abs/1706.03762))超越。但除机器翻译外,该模型是许多序列到序列(sequence to sequence, 以下简称Seq2Seq)类模型的基础,很多解决其他NLP问题的模型均以此模型为基础;因此其在NLP领域具有重要意义,并被广泛用作Baseline. 本目录下此范例模型的实现,旨在展示如何用Paddle Fluid实现一个带有注意力机制(Attention)的RNN模型来解决Seq2Seq类问题,以及如何使用带有Beam Search算法的解码器。如果您仅仅只是需要在机器翻译方面有着较好翻译效果的模型,则建议您参考[Transformer的Paddle Fluid实现](https://github.com/PaddlePaddle/models/tree/develop/fluid/neural_machine_translation/transformer)。 ## 模型概览 RNN Search模型使用了经典的编码器-解码器(Encoder-Decoder)的框架结构来解决Seq2Seq类问题。这种方法先用编码器将源序列编码成vector,再用解码器将该vector解码为目标序列。这其实模拟了人类在进行翻译类任务时的行为:先解析源语言,理解其含义,再根据该含义来写出目标语言的语句。编码器和解码器往往都使用RNN来实现。关于此方法的具体原理和数学表达式,可以参考[深度学习101](http://paddlepaddle.org/documentation/docs/zh/1.2/beginners_guide/basics/machine_translation/index.html). -本模型中,在编码器方面,我们的实现使用了双向循环神经网络(Bi-directional Recurrent Neural Network);在解码器方面,我们使用了带注意力(Attention)机制的RNN解码器,并同时提供了一个不带注意力机制的解码器实现作为对比;而在预测方面我们使用柱搜索(beam search)算法来生成翻译的目标语句。以下将分别介绍用到的这些方法。 - -### 双向循环神经网络 -这里介绍Bengio团队在论文\[[2](#参考文献),[4](#参考文献)\]中提出的一种双向循环网络结构。该结构的目的是输入一个序列,得到其在每个时刻的特征表示,即输出的每个时刻都用定长向量表示到该时刻的上下文语义信息。 -具体来说,该双向循环神经网络分别在时间维以顺序和逆序——即前向(forward)和后向(backward)——依次处理输入序列,并将每个时间步RNN的输出拼接成为最终的输出层。这样每个时间步的输出节点,都包含了输入序列中当前时刻完整的过去和未来的上下文信息。下图展示的是一个按时间步展开的双向循环神经网络。该网络包含一个前向和一个后向RNN,其中有六个权重矩阵:输入到前向隐层和后向隐层的权重矩阵($W_1, W_3$),隐层到隐层自己的权重矩阵($W_2,W_5$),前向隐层和后向隐层到输出层的权重矩阵($W_4, W_6$)。注意,该网络的前向隐层和后向隐层之间没有连接。 - -

-
-图1. 按时间步展开的双向循环神经网络 -

- -

-
-图2. 使用双向LSTM的编码器 -

- -### 注意力机制 -如果编码阶段的输出是一个固定维度的向量,会带来以下两个问题:1)不论源语言序列的长度是5个词还是50个词,如果都用固定维度的向量去编码其中的语义和句法结构信息,对模型来说是一个非常高的要求,特别是对长句子序列而言;2)直觉上,当人类翻译一句话时,会对与当前译文更相关的源语言片段上给予更多关注,且关注点会随着翻译的进行而改变。而固定维度的向量则相当于,任何时刻都对源语言所有信息给予了同等程度的关注,这是不合理的。因此,Bahdanau等人\[[4](#参考文献)\]引入注意力(attention)机制,可以对编码后的上下文片段进行解码,以此来解决长句子的特征学习问题。下面介绍在注意力机制下的解码器结构。 - -与简单的解码器不同,这里$z_i$的计算公式为 (由于Github原生不支持LaTeX公式,请您移步[这里](http://www.paddlepaddle.org/documentation/docs/zh/1.2/beginners_guide/basics/machine_translation/index.html)查看): - -$$z_{i+1}=\phi _{\theta '}\left ( c_i,u_i,z_i \right )$$ - -可见,源语言句子的编码向量表示为第$i$个词的上下文片段$c_i$,即针对每一个目标语言中的词$u_i$,都有一个特定的$c_i$与之对应。$c_i$的计算公式如下: - -$$c_i=\sum _{j=1}^{T}a_{ij}h_j, a_i=\left[ a_{i1},a_{i2},...,a_{iT}\right ]$$ +本模型中,在编码器方面,我们采用了基于LSTM的多层的encoder;在解码器方面,我们使用了带注意力(Attention)机制的RNN decoder,并同时提供了一个不带注意力机制的解码器实现作为对比;而在预测方面我们使用柱搜索(beam search)算法来生成翻译的目标语句。以下将分别介绍用到的这些方法。 -从公式中可以看出,注意力机制是通过对编码器中各时刻的RNN状态$h_j$进行加权平均实现的。权重$a_{ij}$表示目标语言中第$i$个词对源语言中第$j$个词的注意力大小,$a_{ij}$的计算公式如下: - -$$a_{ij} = {exp(e_{ij}) \over {\sum_{k=1}^T exp(e_{ik})}}$$ -$$e_{ij} = {align(z_i, h_j)}$$ - -其中,$align$可以看作是一个对齐模型,用来衡量目标语言中第$i$个词和源语言中第$j$个词的匹配程度。具体而言,这个程度是通过解码RNN的第$i$个隐层状态$z_i$和源语言句子的第$j$个上下文片段$h_j$计算得到的。传统的对齐模型中,目标语言的每个词明确对应源语言的一个或多个词(hard alignment);而在注意力模型中采用的是soft alignment,即任何两个目标语言和源语言词间均存在一定的关联,且这个关联强度是由模型计算得到的实数,因此可以融入整个NMT框架,并通过反向传播算法进行训练。 - -

-
-图3. 基于注意力机制的解码器 -

+## 数据介绍 -### 柱搜索算法 +本教程使用[IWSLT'15 English-Vietnamese data ](https://nlp.stanford.edu/projects/nmt/)数据集中的英语到越南语的数据作为训练语料,tst2012的数据作为开发集,tst2013的数据作为测试集 -柱搜索([beam search](http://en.wikipedia.org/wiki/Beam_search))是一种启发式图搜索算法,用于在图或树中搜索有限集合中的最优扩展节点,通常用在解空间非常大的系统(如机器翻译、语音识别)中,原因是内存无法装下图或树中所有展开的解。如在机器翻译任务中希望翻译“`你好`”,就算目标语言字典中只有3个词(``, ``, `hello`),也可能生成无限句话(`hello`循环出现的次数不定),为了找到其中较好的翻译结果,我们可采用柱搜索算法。 +### 数据获取 +```sh +cd data && sh download_en-vi.sh +``` -柱搜索算法使用广度优先策略建立搜索树,在树的每一层,按照启发代价(heuristic cost)(本教程中,为生成词的log概率之和)对节点进行排序,然后仅留下预先确定的个数(文献中通常称为beam width、beam size、柱宽度等)的节点。只有这些节点会在下一层继续扩展,其他节点就被剪掉了,也就是说保留了质量较高的节点,剪枝了质量较差的节点。因此,搜索所占用的空间和时间大幅减少,但缺点是无法保证一定获得最优解。 -使用柱搜索算法的解码阶段,目标是最大化生成序列的概率。思路是: +## 训练模型 -1. 每一个时刻,根据源语言句子的编码信息$c$、生成的第$i$个目标语言序列单词$u_i$和$i$时刻RNN的隐层状态$z_i$,计算出下一个隐层状态$z_{i+1}$。 -2. 将$z_{i+1}$通过`softmax`归一化,得到目标语言序列的第$i+1$个单词的概率分布$p_{i+1}$。 -3. 根据$p_{i+1}$采样出单词$u_{i+1}$。 -4. 重复步骤1~3,直到获得句子结束标记``或超过句子的最大生成长度为止。 +`run.sh`包含训练程序的主函数,要使用默认参数开始训练,只需要简单地执行: +```sh +python run.sh +``` -注意:$z_{i+1}$和$p_{i+1}$的计算公式同解码器中的一样。且由于生成时的每一步都是通过贪心法实现的,因此并不能保证得到全局最优解。 +```sh + python train.py \ + --src_lang en --tar_lang vi \ + --attention True \ + --num_layers 2 \ + --hidden_size 512 \ + --src_vocab_size 17191 \ + --tar_vocab_size 7709 \ + --batch_size 128 \ + --dropout 0.2 \ + --init_scale 0.1 \ + --max_grad_norm 5.0 \ + --train_data_prefix data/en-vi/train \ + --eval_data_prefix data/en-vi/tst2012 \ + --test_data_prefix data/en-vi/tst2013 \ + --vocab_prefix data/en-vi/vocab \ + --use_gpu True -## 数据介绍 +``` -本教程使用[WMT-14](http://www-lium.univ-lemans.fr/~schwenk/cslm_joint_paper/)数据集中的[bitexts(after selection)](http://www-lium.univ-lemans.fr/~schwenk/cslm_joint_paper/data/bitexts.tgz)作为训练集,[dev+test data](http://www-lium.univ-lemans.fr/~schwenk/cslm_joint_paper/data/dev+test.tgz)作为测试集和生成集。 -### 数据预处理 +训练程序会在每个epoch训练结束之后,save一次模型 -我们的预处理流程包括两步: -- 将每个源语言到目标语言的平行语料库文件合并为一个文件: - - 合并每个`XXX.src`和`XXX.trg`文件为`XXX`。 - - `XXX`中的第$i$行内容为`XXX.src`中的第$i$行和`XXX.trg`中的第$i$行连接,用'\t'分隔。 -- 创建训练数据的“源字典”和“目标字典”。每个字典都有**DICTSIZE**个单词,包括:语料中词频最高的(DICTSIZE - 3)个单词,和3个特殊符号``(序列的开始)、``(序列的结束)和``(未登录词)。 +当模型训练完成之后, 可以利用infer.py的脚本进行预测,默认使用beam search的方法进行预测,加载第10个epoch的模型进行预测,对test的数据集进行解码 +```sh +python infer.sh +``` +如果想预测别的数据文件,只需要将 --infer_file参数进行修改 -### 示例数据 +```sh + python infer.py \ + --src_lang en --tar_lang vi \ + --num_layers 2 \ + --hidden_size 512 \ + --src_vocab_size 17191 \ + --tar_vocab_size 7709 \ + --batch_size 128 \ + --dropout 0.2 \ + --init_scale 0.1 \ + --max_grad_norm 5.0 \ + --vocab_prefix data/en-vi/vocab \ + --infer_file data/en-vi/tst2013.en \ + --reload_model model_new/epoch_10/ \ + --use_gpu True -因为完整的数据集数据量较大,为了验证训练流程,PaddlePaddle接口paddle.dataset.wmt14中默认提供了一个经过预处理的[较小规模的数据集](http://paddlepaddle.bj.bcebos.com/demo/wmt_shrinked_data/wmt14.tgz)。 +``` -该数据集有193319条训练数据,6003条测试数据,词典长度为30000。因为数据规模限制,使用该数据集训练出来的模型效果无法保证。 +## 效果 -## 训练模型 +单个模型 beam_size = 10 -`train.py`包含训练程序的主函数,要使用默认参数开始训练,只需要简单地执行: ```sh -python train.py -``` -您可以使用命令行参数来设置模型训练时的参数。要显示所有可用的命令行参数,执行: -```sh -python train.py -h -``` -这样会显示所有的命令行参数的描述,以及其默认值。默认的模型是带有注意力机制的。您也可以尝试运行无注意力机制的模型,命令如下: -```sh -python train.py --no_attention -``` -训练好的模型默认会被保存到`./models`路径下。您可以用命令行参数`--save_dir`来指定模型的保存路径。默认每个pass结束时会保存一个模型。 +no attention -## 生成预测结果 +tst2012 BLEU: 11.58 +tst2013 BLEU: 12.20 -在模型训练好后,可以用`infer.py`来生成预测结果。同样的,使用默认参数,只需要执行: -```sh -python infer.py -``` -您也可以同样用命令行来指定各参数。注意,预测时的参数设置必须与训练时完全一致,否则载入模型会失败。您可以用`--pass_num`参数来选择读取哪个pass结束时保存的模型。同时您可以使用`--beam_width`参数来选择beam search宽度。 -## 参考文献 -1. Koehn P. [Statistical machine translation](https://books.google.com.hk/books?id=4v_Cx1wIMLkC&printsec=frontcover&hl=zh-CN&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false)[M]. Cambridge University Press, 2009. -2. Cho K, Van Merriënboer B, Gulcehre C, et al. [Learning phrase representations using RNN encoder-decoder for statistical machine translation](http://www.aclweb.org/anthology/D/D14/D14-1179.pdf)[C]//Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), 2014: 1724-1734. -3. Chung J, Gulcehre C, Cho K H, et al. [Empirical evaluation of gated recurrent neural networks on sequence modeling](https://arxiv.org/abs/1412.3555)[J]. arXiv preprint arXiv:1412.3555, 2014. -4. Bahdanau D, Cho K, Bengio Y. [Neural machine translation by jointly learning to align and translate](https://arxiv.org/abs/1409.0473)[C]//Proceedings of ICLR 2015, 2015. -5. Papineni K, Roukos S, Ward T, et al. [BLEU: a method for automatic evaluation of machine translation](http://dl.acm.org/citation.cfm?id=1073135)[C]//Proceedings of the 40th annual meeting on association for computational linguistics. Association for Computational Linguistics, 2002: 311-318. +with attention -
-知识共享许可协议
本教程PaddlePaddle 创作,采用 知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。 +tst2012 BLEU: 22.21 +tst2013 BLEU: 25.30 +``` diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/_ce.py b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/_ce.py deleted file mode 100644 index e00ac492..00000000 --- a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/_ce.py +++ /dev/null @@ -1,63 +0,0 @@ -####this file is only used for continuous evaluation test! - -import os -import sys -sys.path.append(os.environ['ceroot']) -from kpi import CostKpi, DurationKpi, AccKpi - -#### NOTE kpi.py should shared in models in some way!!!! - -train_cost_kpi = CostKpi('train_cost', 0.02, 0, actived=False) -test_cost_kpi = CostKpi('test_cost', 0.005, 0, actived=False) -train_duration_kpi = DurationKpi('train_duration', 0.06, 0, actived=False) - -tracking_kpis = [ - train_cost_kpi, - test_cost_kpi, - train_duration_kpi, -] - - -def parse_log(log): - ''' - This method should be implemented by model developers. - - The suggestion: - - each line in the log should be key, value, for example: - - " - train_cost\t1.0 - test_cost\t1.0 - train_cost\t1.0 - train_cost\t1.0 - train_acc\t1.2 - " - ''' - for line in log.split('\n'): - fs = line.strip().split('\t') - print(fs) - if len(fs) == 3 and fs[0] == 'kpis': - print("-----%s" % fs) - kpi_name = fs[1] - kpi_value = float(fs[2]) - yield kpi_name, kpi_value - - -def log_to_ce(log): - kpi_tracker = {} - for kpi in tracking_kpis: - kpi_tracker[kpi.name] = kpi - - for (kpi_name, kpi_value) in parse_log(log): - print(kpi_name, kpi_value) - kpi_tracker[kpi_name].add_record(kpi_value) - kpi_tracker[kpi_name].persist() - - -if __name__ == '__main__': - log = sys.stdin.read() - print("*****") - print(log) - print("****") - log_to_ce(log) diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/args.py b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/args.py index 16f97488..494289a7 100644 --- a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/args.py +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/args.py @@ -23,76 +23,95 @@ import distutils.util def parse_args(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( - "--embedding_dim", - type=int, - default=512, - help="The dimension of embedding table. (default: %(default)d)") + "--train_data_prefix", type=str, help="file prefix for train data") parser.add_argument( - "--encoder_size", - type=int, - default=512, - help="The size of encoder bi-rnn unit. (default: %(default)d)") + "--eval_data_prefix", type=str, help="file prefix for eval data") parser.add_argument( - "--decoder_size", - type=int, - default=512, - help="The size of decoder rnn unit. (default: %(default)d)") + "--test_data_prefix", type=str, help="file prefix for test data") parser.add_argument( - "--batch_size", - type=int, - default=32, - help="The sequence number of a mini-batch data. (default: %(default)d)") + "--vocab_prefix", type=str, help="file prefix for vocab") + parser.add_argument("--src_lang", type=str, help="source language suffix") + parser.add_argument("--tar_lang", type=str, help="target language suffix") + parser.add_argument( - "--dict_size", - type=int, - default=30000, - help="The dictionary capacity. Dictionaries of source sequence and " - "target dictionary have same capacity. (default: %(default)d)") + "--attention", + type=bool, + default=False, + help="Whether use attention model") + parser.add_argument( - "--pass_num", - type=int, - default=5, - help="The pass number to train. In inference mode, load the saved model" - " at the end of given pass.(default: %(default)d)") + "--optimizer", + type=str, + default='adam', + help="optimizer to use, only supprt[sgd|adam]") + parser.add_argument( "--learning_rate", type=float, - default=0.01, - help="Learning rate used to train the model. (default: %(default)f)") + default=0.001, + help="learning rate for optimizer") + parser.add_argument( - "--no_attention", - action='store_true', - help="If set, run no attention model instead of attention model.") + "--num_layers", + type=int, + default=1, + help="layers number of encoder and decoder") parser.add_argument( - "--beam_size", + "--hidden_size", type=int, - default=3, - help="The width for beam search. (default: %(default)d)") + default=100, + help="hidden size of encoder and decoder") + parser.add_argument("--src_vocab_size", type=int, help="source vocab size") + parser.add_argument("--tar_vocab_size", type=int, help="target vocab size") + + parser.add_argument( + "--batch_size", type=int, help="batch size of each step") + parser.add_argument( - "--use_gpu", - type=distutils.util.strtobool, - default=True, - help="Whether to use gpu or not. (default: %(default)d)") + "--max_epoch", type=int, default=12, help="max epoch for the training") + parser.add_argument( - "--max_length", + "--max_len", type=int, default=50, - help="The maximum sequence length for translation result." - "(default: %(default)d)") + help="max length for source and target sentence") parser.add_argument( - "--save_dir", + "--dropout", type=float, default=0.0, help="drop probability") + parser.add_argument( + "--init_scale", + type=float, + default=0.0, + help="init scale for parameter") + parser.add_argument( + "--max_grad_norm", + type=float, + default=5.0, + help="max grad norm for global norm clip") + + parser.add_argument( + "--model_path", type=str, - default="model", - help="Specify the path to save trained models.") + default='./model', + help="model path for model to save") + parser.add_argument( - "--save_interval", - type=int, - default=1, - help="Save the trained model every n passes." - "(default: %(default)d)") + "--reload_model", type=str, help="reload model to inference") + + parser.add_argument( + "--infer_file", type=str, help="file name for inference") + parser.add_argument( + "--infer_output_file", + type=str, + default='./infer_output', + help="file name for inference output") + parser.add_argument( + "--beam_size", type=int, default=10, help="file name for inference") + parser.add_argument( - "--enable_ce", - action='store_true', - help="If set, run the task with continuous evaluation logs.") + '--use_gpu', + type=bool, + default=False, + help='Whether using gpu [True|False]') + args = parser.parse_args() return args diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/attention_model.py b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/attention_model.py index 0c726977..eba1d5f3 100644 --- a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/attention_model.py +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/attention_model.py @@ -1,220 +1,471 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - from __future__ import absolute_import from __future__ import division from __future__ import print_function +import paddle.fluid.layers as layers import paddle.fluid as fluid -from paddle.fluid.contrib.decoder.beam_search_decoder import * - - -def lstm_step(x_t, hidden_t_prev, cell_t_prev, size): - def linear(inputs): - return fluid.layers.fc(input=inputs, size=size, bias_attr=True) - - forget_gate = fluid.layers.sigmoid(x=linear([hidden_t_prev, x_t])) - input_gate = fluid.layers.sigmoid(x=linear([hidden_t_prev, x_t])) - output_gate = fluid.layers.sigmoid(x=linear([hidden_t_prev, x_t])) - cell_tilde = fluid.layers.tanh(x=linear([hidden_t_prev, x_t])) - - cell_t = fluid.layers.sums(input=[ - fluid.layers.elementwise_mul( - x=forget_gate, y=cell_t_prev), fluid.layers.elementwise_mul( - x=input_gate, y=cell_tilde) - ]) - - hidden_t = fluid.layers.elementwise_mul( - x=output_gate, y=fluid.layers.tanh(x=cell_t)) - - return hidden_t, cell_t - - -def seq_to_seq_net(embedding_dim, encoder_size, decoder_size, source_dict_dim, - target_dict_dim, is_generating, beam_size, max_length): - """Construct a seq2seq network.""" - - def bi_lstm_encoder(input_seq, gate_size): - # A bi-directional lstm encoder implementation. - # Linear transformation part for input gate, output gate, forget gate - # and cell activation vectors need be done outside of dynamic_lstm. - # So the output size is 4 times of gate_size. - input_forward_proj = fluid.layers.fc(input=input_seq, - size=gate_size * 4, - act='tanh', - bias_attr=False) - forward, _ = fluid.layers.dynamic_lstm( - input=input_forward_proj, size=gate_size * 4, use_peepholes=False) - input_reversed_proj = fluid.layers.fc(input=input_seq, - size=gate_size * 4, - act='tanh', - bias_attr=False) - reversed, _ = fluid.layers.dynamic_lstm( - input=input_reversed_proj, - size=gate_size * 4, - is_reverse=True, - use_peepholes=False) - return forward, reversed - - # The encoding process. Encodes the input words into tensors. - src_word_idx = fluid.layers.data( - name='source_sequence', shape=[1], dtype='int64', lod_level=1) - - src_embedding = fluid.layers.embedding( - input=src_word_idx, - size=[source_dict_dim, embedding_dim], - dtype='float32') - - src_forward, src_reversed = bi_lstm_encoder( - input_seq=src_embedding, gate_size=encoder_size) - - encoded_vector = fluid.layers.concat( - input=[src_forward, src_reversed], axis=1) - - encoded_proj = fluid.layers.fc(input=encoded_vector, - size=decoder_size, - bias_attr=False) - - backward_first = fluid.layers.sequence_pool( - input=src_reversed, pool_type='first') - - decoder_boot = fluid.layers.fc(input=backward_first, - size=decoder_size, - bias_attr=False, - act='tanh') - - cell_init = fluid.layers.fill_constant_batch_size_like( - input=decoder_boot, - value=0.0, - shape=[-1, decoder_size], - dtype='float32') - cell_init.stop_gradient = False - - # Create a RNN state cell by providing the input and hidden states, and - # specifies the hidden state as output. - h = InitState(init=decoder_boot, need_reorder=True) - c = InitState(init=cell_init) - - state_cell = StateCell( - inputs={'x': None, - 'encoder_vec': None, - 'encoder_proj': None}, - states={'h': h, - 'c': c}, - out_state='h') - - def simple_attention(encoder_vec, encoder_proj, decoder_state): - # The implementation of simple attention model - decoder_state_proj = fluid.layers.fc(input=decoder_state, - size=decoder_size, - bias_attr=False) - decoder_state_expand = fluid.layers.sequence_expand( - x=decoder_state_proj, y=encoder_proj) - # concated lod should inherit from encoder_proj - mixed_state = encoder_proj + decoder_state_expand - attention_weights = fluid.layers.fc(input=mixed_state, - size=1, - bias_attr=False) - attention_weights = fluid.layers.sequence_softmax( - input=attention_weights) - weigths_reshape = fluid.layers.reshape(x=attention_weights, shape=[-1]) - scaled = fluid.layers.elementwise_mul( - x=encoder_vec, y=weigths_reshape, axis=0) - context = fluid.layers.sequence_pool(input=scaled, pool_type='sum') - return context - - @state_cell.state_updater - def state_updater(state_cell): - # Define the updater of RNN state cell - current_word = state_cell.get_input('x') - encoder_vec = state_cell.get_input('encoder_vec') - encoder_proj = state_cell.get_input('encoder_proj') - prev_h = state_cell.get_state('h') - prev_c = state_cell.get_state('c') - context = simple_attention(encoder_vec, encoder_proj, prev_h) - decoder_inputs = fluid.layers.concat( - input=[context, current_word], axis=1) - h, c = lstm_step(decoder_inputs, prev_h, prev_c, decoder_size) - state_cell.set_state('h', h) - state_cell.set_state('c', c) - - # Define the decoding process - if not is_generating: - # Training process - trg_word_idx = fluid.layers.data( - name='target_sequence', shape=[1], dtype='int64', lod_level=1) - - trg_embedding = fluid.layers.embedding( - input=trg_word_idx, - size=[target_dict_dim, embedding_dim], - dtype='float32') - - # A decoder for training - decoder = TrainingDecoder(state_cell) - - with decoder.block(): - current_word = decoder.step_input(trg_embedding) - encoder_vec = decoder.static_input(encoded_vector) - encoder_proj = decoder.static_input(encoded_proj) - decoder.state_cell.compute_state(inputs={ - 'x': current_word, - 'encoder_vec': encoder_vec, - 'encoder_proj': encoder_proj - }) - h = decoder.state_cell.get_state('h') - decoder.state_cell.update_states() - out = fluid.layers.fc(input=h, - size=target_dict_dim, - bias_attr=True, - act='softmax') - decoder.output(out) - - label = fluid.layers.data( - name='label_sequence', shape=[1], dtype='int64', lod_level=1) - cost = fluid.layers.cross_entropy(input=decoder(), label=label) - avg_cost = fluid.layers.mean(x=cost) - feeding_list = ["source_sequence", "target_sequence", "label_sequence"] - return avg_cost, feeding_list - - else: - # Inference - init_ids = fluid.layers.data( - name="init_ids", shape=[1], dtype="int64", lod_level=2) - init_scores = fluid.layers.data( - name="init_scores", shape=[1], dtype="float32", lod_level=2) - - # A beam search decoder - decoder = BeamSearchDecoder( - state_cell=state_cell, - init_ids=init_ids, - init_scores=init_scores, - target_dict_dim=target_dict_dim, - word_dim=embedding_dim, - input_var_dict={ - 'encoder_vec': encoded_vector, - 'encoder_proj': encoded_proj - }, - topk_size=50, - sparse_emb=True, - max_len=max_length, - beam_size=beam_size, - end_id=1, - name=None) - - decoder.decode() - - translation_ids, translation_scores = decoder() - feeding_list = ["source_sequence"] - - return translation_ids, translation_scores, feeding_list +from paddle.fluid.layers.control_flow import StaticRNN +import numpy as np +from paddle.fluid import ParamAttr +from paddle.fluid.contrib.layers import basic_lstm, BasicLSTMUnit +from base_model import BaseModel + +INF = 1. * 1e5 +alpha = 0.6 + + +class AttentionModel(BaseModel): + def __init__(self, + hidden_size, + src_vocab_size, + tar_vocab_size, + batch_size, + num_layers=1, + init_scale=0.1, + dropout=None, + batch_first=True): + super(AttentionModel, self).__init__( + hidden_size, + src_vocab_size, + tar_vocab_size, + batch_size, + num_layers=num_layers, + init_scale=init_scale, + dropout=dropout, + batch_first=batch_first) + + def _build_decoder(self, + enc_last_hidden, + enc_last_cell, + mode='train', + beam_size=10): + + dec_input = layers.transpose(self.tar_emb, [1, 0, 2]) + dec_unit_list = [] + for i in range(self.num_layers): + new_name = "dec_layers_" + str(i) + dec_unit_list.append( + BasicLSTMUnit( + new_name, + self.hidden_size, + ParamAttr(initializer=fluid.initializer.UniformInitializer( + low=-self.init_scale, high=self.init_scale)), + ParamAttr(initializer=fluid.initializer.Constant(0.0)), )) + + + attention_weight = layers.create_parameter([self.hidden_size * 2, self.hidden_size], dtype="float32", name="attention_weight", \ + default_initializer=fluid.initializer.UniformInitializer(low=-self.init_scale, high=self.init_scale)) + + memory_weight = layers.create_parameter([self.hidden_size, self.hidden_size], dtype="float32", name="memory_weight", \ + default_initializer=fluid.initializer.UniformInitializer(low=-self.init_scale, high=self.init_scale)) + + def dot_attention(query, memory, mask=None): + attn = layers.matmul(query, memory, transpose_y=True) + + if mask: + attn = layers.transpose(attn, [1, 0, 2]) + attn = layers.elementwise_add(attn, mask * 1000000000, -1) + attn = layers.transpose(attn, [1, 0, 2]) + weight = layers.softmax(attn) + weight_memory = layers.matmul(weight, memory) + + return weight_memory, weight + + max_src_seq_len = layers.shape(self.src)[1] + src_mask = layers.sequence_mask( + self.src_sequence_length, maxlen=max_src_seq_len, dtype='float32') + + softmax_weight = layers.create_parameter([self.hidden_size, self.tar_vocab_size], dtype="float32", name="softmax_weight", \ + default_initializer=fluid.initializer.UniformInitializer(low=-self.init_scale, high=self.init_scale)) + + def decoder_step(currrent_in, pre_feed, pre_hidden_array, + pre_cell_array, enc_memory): + new_hidden_array = [] + new_cell_array = [] + + step_input = layers.concat([currrent_in, pre_feed], 1) + + for i in range(self.num_layers): + pre_hidden = pre_hidden_array[i] + pre_cell = pre_cell_array[i] + + new_hidden, new_cell = dec_unit_list[i](step_input, pre_hidden, + pre_cell) + + new_hidden_array.append(new_hidden) + new_cell_array.append(new_cell) + + step_input = new_hidden + + memory_mask = src_mask - 1.0 + enc_memory = layers.matmul(enc_memory, memory_weight) + att_in = layers.unsqueeze(step_input, [1]) + dec_att, _ = dot_attention(att_in, enc_memory) + dec_att = layers.squeeze(dec_att, [1]) + concat_att_out = layers.concat([dec_att, step_input], 1) + concat_att_out = layers.matmul(concat_att_out, attention_weight) + + return concat_att_out, new_hidden_array, new_cell_array + + if mode == "train": + dec_rnn = StaticRNN() + with dec_rnn.step(): + step_input = dec_rnn.step_input(dec_input) + input_feed = dec_rnn.memory( + batch_ref=dec_input, shape=[-1, self.hidden_size]) + step_input = layers.concat([step_input, input_feed], 1) + + for i in range(self.num_layers): + pre_hidden = dec_rnn.memory(init=enc_last_hidden[i]) + pre_cell = dec_rnn.memory(init=enc_last_cell[i]) + + new_hidden, new_cell = dec_unit_list[i]( + step_input, pre_hidden, pre_cell) + + dec_rnn.update_memory(pre_hidden, new_hidden) + dec_rnn.update_memory(pre_cell, new_cell) + + step_input = new_hidden + + if self.dropout != None and self.dropout > 0.0: + print("using dropout", self.dropout) + step_input = fluid.layers.dropout( + step_input, + dropout_prob=self.dropout, + dropout_implementation='upscale_in_train') + memory_mask = src_mask - 1.0 + enc_memory = layers.matmul(self.enc_output, memory_weight) + att_in = layers.unsqueeze(step_input, [1]) + dec_att, _ = dot_attention(att_in, enc_memory, memory_mask) + dec_att = layers.squeeze(dec_att, [1]) + concat_att_out = layers.concat([dec_att, step_input], 1) + concat_att_out = layers.matmul(concat_att_out, attention_weight) + #concat_att_out = layers.tanh( concat_att_out ) + + dec_rnn.update_memory(input_feed, concat_att_out) + + dec_rnn.step_output(concat_att_out) + + dec_rnn_out = dec_rnn() + dec_output = layers.transpose(dec_rnn_out, [1, 0, 2]) + + dec_output = layers.matmul(dec_output, softmax_weight) + + return dec_output + elif mode == 'beam_search': + + max_length = max_src_seq_len * 2 + #max_length = layers.fill_constant( [1], dtype='int32', value = 10) + pre_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + full_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + + score = layers.fill_constant([1], dtype='float32', value=0.0) + + #eos_ids = layers.fill_constant( [1, 1], dtype='int64', value=2) + + pre_hidden_array = [] + pre_cell_array = [] + pre_feed = layers.fill_constant( + [beam_size, self.hidden_size], dtype='float32', value=0) + for i in range(self.num_layers): + pre_hidden_array.append( + layers.expand(enc_last_hidden[i], [beam_size, 1])) + pre_cell_array.append( + layers.expand(enc_last_cell[i], [beam_size, 1])) + + eos_ids = layers.fill_constant([beam_size], dtype='int64', value=2) + init_score = np.zeros((beam_size)).astype('float32') + init_score[1:] = -INF + pre_score = layers.assign(init_score) + #pre_score = layers.fill_constant( [1,], dtype='float32', value= 0.0) + tokens = layers.fill_constant( + [beam_size, 1], dtype='int64', value=1) + + enc_memory = layers.expand(self.enc_output, [beam_size, 1, 1]) + + pre_tokens = layers.fill_constant( + [beam_size, 1], dtype='int64', value=1) + + finished_seq = layers.fill_constant( + [beam_size, 1], dtype='int64', value=0) + finished_scores = layers.fill_constant( + [beam_size], dtype='float32', value=-INF) + finished_flag = layers.fill_constant( + [beam_size], dtype='float32', value=0.0) + + step_idx = layers.fill_constant(shape=[1], dtype='int32', value=0) + cond = layers.less_than( + x=step_idx, y=max_length) # default force_cpu=True + + parent_idx = layers.fill_constant([1], dtype='int32', value=0) + while_op = layers.While(cond) + + def compute_topk_scores_and_seq(sequences, + scores, + scores_to_gather, + flags, + beam_size, + select_beam=None, + generate_id=None): + scores = layers.reshape(scores, shape=[1, -1]) + _, topk_indexs = layers.topk(scores, k=beam_size) + + topk_indexs = layers.reshape(topk_indexs, shape=[-1]) + + # gather result + + top_seq = layers.gather(sequences, topk_indexs) + topk_flags = layers.gather(flags, topk_indexs) + topk_gather_scores = layers.gather(scores_to_gather, + topk_indexs) + + if select_beam: + topk_beam = layers.gather(select_beam, topk_indexs) + else: + topk_beam = select_beam + + if generate_id: + topk_id = layers.gather(generate_id, topk_indexs) + else: + topk_id = generate_id + return top_seq, topk_gather_scores, topk_flags, topk_beam, topk_id + + def grow_alive(curr_seq, curr_scores, curr_log_probs, curr_finished, + select_beam, generate_id): + curr_scores += curr_finished * -INF + return compute_topk_scores_and_seq( + curr_seq, + curr_scores, + curr_log_probs, + curr_finished, + beam_size, + select_beam, + generate_id=generate_id) + + def grow_finished(finished_seq, finished_scores, finished_flag, + curr_seq, curr_scores, curr_finished): + finished_seq = layers.concat( + [ + finished_seq, layers.fill_constant( + [beam_size, 1], dtype='int64', value=1) + ], + axis=1) + curr_scores += (1.0 - curr_finished) * -INF + #layers.Print( curr_scores, message="curr scores") + curr_finished_seq = layers.concat( + [finished_seq, curr_seq], axis=0) + curr_finished_scores = layers.concat( + [finished_scores, curr_scores], axis=0) + curr_finished_flags = layers.concat( + [finished_flag, curr_finished], axis=0) + + return compute_topk_scores_and_seq( + curr_finished_seq, curr_finished_scores, + curr_finished_scores, curr_finished_flags, beam_size) + + def is_finished(alive_log_prob, finished_scores, + finished_in_finished): + + max_out_len = 200 + max_length_penalty = layers.pow(layers.fill_constant( + [1], dtype='float32', value=((5.0 + max_out_len) / 6.0)), + alpha) + + lower_bound_alive_score = layers.slice( + alive_log_prob, starts=[0], ends=[1], + axes=[0]) / max_length_penalty + + lowest_score_of_fininshed_in_finished = finished_scores * finished_in_finished + lowest_score_of_fininshed_in_finished += ( + 1.0 - finished_in_finished) * -INF + lowest_score_of_fininshed_in_finished = layers.reduce_min( + lowest_score_of_fininshed_in_finished) + + met = layers.less_than(lower_bound_alive_score, + lowest_score_of_fininshed_in_finished) + met = layers.cast(met, 'float32') + bound_is_met = layers.reduce_sum(met) + + finished_eos_num = layers.reduce_sum(finished_in_finished) + + finish_cond = layers.less_than( + finished_eos_num, + layers.fill_constant( + [1], dtype='float32', value=beam_size)) + + return finish_cond + + def grow_top_k(step_idx, alive_seq, alive_log_prob, parant_idx): + pre_ids = alive_seq + + dec_step_emb = layers.embedding( + input=pre_ids, + size=[self.tar_vocab_size, self.hidden_size], + dtype='float32', + is_sparse=False, + param_attr=fluid.ParamAttr( + name='target_embedding', + initializer=fluid.initializer.UniformInitializer( + low=-self.init_scale, high=self.init_scale))) + + dec_att_out, new_hidden_array, new_cell_array = decoder_step( + dec_step_emb, pre_feed, pre_hidden_array, pre_cell_array, + enc_memory) + + projection = layers.matmul(dec_att_out, softmax_weight) + + logits = layers.softmax(projection) + current_log = layers.elementwise_add( + x=layers.log(logits), y=alive_log_prob, axis=0) + base_1 = layers.cast(step_idx, 'float32') + 6.0 + base_1 /= 6.0 + length_penalty = layers.pow(base_1, alpha) + + len_pen = layers.pow(( + (5. + layers.cast(step_idx + 1, 'float32')) / 6.), alpha) + + current_log = layers.reshape(current_log, shape=[1, -1]) + + current_log = current_log / length_penalty + topk_scores, topk_indices = layers.topk( + input=current_log, k=beam_size) + + topk_scores = layers.reshape(topk_scores, shape=[-1]) + + topk_log_probs = topk_scores * length_penalty + + generate_id = layers.reshape( + topk_indices, shape=[-1]) % self.tar_vocab_size + + selected_beam = layers.reshape( + topk_indices, shape=[-1]) // self.tar_vocab_size + + topk_finished = layers.equal(generate_id, eos_ids) + + topk_finished = layers.cast(topk_finished, 'float32') + + generate_id = layers.reshape(generate_id, shape=[-1, 1]) + + pre_tokens_list = layers.gather(tokens, selected_beam) + + full_tokens_list = layers.concat( + [pre_tokens_list, generate_id], axis=1) + + + return full_tokens_list, topk_log_probs, topk_scores, topk_finished, selected_beam, generate_id, \ + dec_att_out, new_hidden_array, new_cell_array + + with while_op.block(): + topk_seq, topk_log_probs, topk_scores, topk_finished, topk_beam, topk_generate_id, attention_out, new_hidden_array, new_cell_array = \ + grow_top_k( step_idx, pre_tokens, pre_score, parent_idx) + alive_seq, alive_log_prob, _, alive_beam, alive_id = grow_alive( + topk_seq, topk_scores, topk_log_probs, topk_finished, + topk_beam, topk_generate_id) + + finished_seq_2, finished_scores_2, finished_flags_2, _, _ = grow_finished( + finished_seq, finished_scores, finished_flag, topk_seq, + topk_scores, topk_finished) + + finished_cond = is_finished(alive_log_prob, finished_scores_2, + finished_flags_2) + + layers.increment(x=step_idx, value=1.0, in_place=True) + + layers.assign(alive_beam, parent_idx) + layers.assign(alive_id, pre_tokens) + layers.assign(alive_log_prob, pre_score) + layers.assign(alive_seq, tokens) + layers.assign(finished_seq_2, finished_seq) + layers.assign(finished_scores_2, finished_scores) + layers.assign(finished_flags_2, finished_flag) + + # update init_hidden, init_cell, input_feed + new_feed = layers.gather(attention_out, parent_idx) + layers.assign(new_feed, pre_feed) + for i in range(self.num_layers): + new_hidden_var = layers.gather(new_hidden_array[i], + parent_idx) + layers.assign(new_hidden_var, pre_hidden_array[i]) + new_cell_var = layers.gather(new_cell_array[i], parent_idx) + layers.assign(new_cell_var, pre_cell_array[i]) + + length_cond = layers.less_than(x=step_idx, y=max_length) + layers.logical_and(x=length_cond, y=finished_cond, out=cond) + + tokens_with_eos = tokens + + all_seq = layers.concat([tokens_with_eos, finished_seq], axis=0) + all_score = layers.concat([pre_score, finished_scores], axis=0) + _, topk_index = layers.topk(all_score, k=beam_size) + topk_index = layers.reshape(topk_index, shape=[-1]) + final_seq = layers.gather(all_seq, topk_index) + final_score = layers.gather(all_score, topk_index) + + return final_seq + elif mode == 'greedy_search': + max_length = max_src_seq_len * 2 + #max_length = layers.fill_constant( [1], dtype='int32', value = 10) + pre_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + full_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + + score = layers.fill_constant([1], dtype='float32', value=0.0) + + eos_ids = layers.fill_constant([1, 1], dtype='int64', value=2) + + pre_hidden_array = [] + pre_cell_array = [] + pre_feed = layers.fill_constant( + [1, self.hidden_size], dtype='float32', value=0) + for i in range(self.num_layers): + pre_hidden_array.append(enc_last_hidden[i]) + pre_cell_array.append(enc_last_cell[i]) + #pre_hidden_array.append( layers.fill_constant( [1, hidden_size], dtype='float32', value=0) ) + #pre_cell_array.append( layers.fill_constant( [1, hidden_size], dtype='float32', value=0) ) + + step_idx = layers.fill_constant(shape=[1], dtype='int32', value=0) + cond = layers.less_than( + x=step_idx, y=max_length) # default force_cpu=True + while_op = layers.While(cond) + + with while_op.block(): + + dec_step_emb = layers.embedding( + input=pre_ids, + size=[self.tar_vocab_size, self.hidden_size], + dtype='float32', + is_sparse=False, + param_attr=fluid.ParamAttr( + name='target_embedding', + initializer=fluid.initializer.UniformInitializer( + low=-self.init_scale, high=self.init_scale))) + + dec_att_out, new_hidden_array, new_cell_array = decoder_step( + dec_step_emb, pre_feed, pre_hidden_array, pre_cell_array, + self.enc_output) + + projection = layers.matmul(dec_att_out, softmax_weight) + + logits = layers.softmax(projection) + logits = layers.log(logits) + + current_log = layers.elementwise_add(logits, score, axis=0) + + topk_score, topk_indices = layers.topk(input=current_log, k=1) + + new_ids = layers.concat([full_ids, topk_indices]) + layers.assign(new_ids, full_ids) + #layers.Print( full_ids, message="ful ids") + layers.assign(topk_score, score) + layers.assign(topk_indices, pre_ids) + layers.assign(dec_att_out, pre_feed) + for i in range(self.num_layers): + layers.assign(new_hidden_array[i], pre_hidden_array[i]) + layers.assign(new_cell_array[i], pre_cell_array[i]) + + layers.increment(x=step_idx, value=1.0, in_place=True) + + eos_met = layers.not_equal(topk_indices, eos_ids) + length_cond = layers.less_than(x=step_idx, y=max_length) + layers.logical_and(x=length_cond, y=eos_met, out=cond) + + return full_ids diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/base_model.py b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/base_model.py new file mode 100644 index 00000000..bebfc2f8 --- /dev/null +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/base_model.py @@ -0,0 +1,502 @@ +# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import paddle.fluid.layers as layers +import paddle.fluid as fluid +from paddle.fluid.layers.control_flow import StaticRNN as PaddingRNN +import numpy as np +from paddle.fluid import ParamAttr +from paddle.fluid.contrib.layers import basic_lstm, BasicLSTMUnit + +INF = 1. * 1e5 +alpha = 0.6 + + +class BaseModel(object): + def __init__(self, + hidden_size, + src_vocab_size, + tar_vocab_size, + batch_size, + num_layers=1, + init_scale=0.1, + dropout=None, + batch_first=True): + + self.hidden_size = hidden_size + self.src_vocab_size = src_vocab_size + self.tar_vocab_size = tar_vocab_size + self.batch_size = batch_size + self.num_layers = num_layers + self.init_scale = init_scale + self.dropout = dropout + self.batch_first = batch_first + + def _build_data(self): + self.src = layers.data(name="src", shape=[-1, 1, 1], dtype='int64') + self.src_sequence_length = layers.data( + name="src_sequence_length", shape=[-1], dtype='int32') + + self.tar = layers.data(name="tar", shape=[-1, 1, 1], dtype='int64') + self.tar_sequence_length = layers.data( + name="tar_sequence_length", shape=[-1], dtype='int32') + self.label = layers.data(name="label", shape=[-1, 1, 1], dtype='int64') + + def _emebdding(self): + self.src_emb = layers.embedding( + input=self.src, + size=[self.src_vocab_size, self.hidden_size], + dtype='float32', + is_sparse=False, + param_attr=fluid.ParamAttr( + name='source_embedding', + initializer=fluid.initializer.UniformInitializer( + low=-self.init_scale, high=self.init_scale))) + self.tar_emb = layers.embedding( + input=self.tar, + size=[self.tar_vocab_size, self.hidden_size], + dtype='float32', + is_sparse=False, + param_attr=fluid.ParamAttr( + name='target_embedding', + initializer=fluid.initializer.UniformInitializer( + low=-self.init_scale, high=self.init_scale))) + + def _build_encoder(self): + self.enc_output, enc_last_hidden, enc_last_cell = basic_lstm( self.src_emb, None, None, self.hidden_size, num_layers=self.num_layers, batch_first=self.batch_first, \ + dropout_prob=self.dropout, \ + param_attr = ParamAttr( initializer=fluid.initializer.UniformInitializer(low=-self.init_scale, high=self.init_scale) ), \ + bias_attr = ParamAttr( initializer = fluid.initializer.Constant(0.0) ), \ + sequence_length=self.src_sequence_length) + + return self.enc_output, enc_last_hidden, enc_last_cell + + def _build_decoder(self, + enc_last_hidden, + enc_last_cell, + mode='train', + beam_size=10): + softmax_weight = layers.create_parameter([self.hidden_size, self.tar_vocab_size], dtype="float32", name="softmax_weight", \ + default_initializer=fluid.initializer.UniformInitializer(low=-self.init_scale, high=self.init_scale)) + if mode == 'train': + dec_output, dec_last_hidden, dec_last_cell = basic_lstm( self.tar_emb, enc_last_hidden, enc_last_cell, \ + self.hidden_size, num_layers=self.num_layers, \ + batch_first=self.batch_first, \ + dropout_prob=self.dropout, \ + param_attr = ParamAttr( initializer=fluid.initializer.UniformInitializer(low=-self.init_scale, high=self.init_scale) ), \ + bias_attr = ParamAttr( initializer = fluid.initializer.Constant(0.0) )) + + dec_output = layers.matmul(dec_output, softmax_weight) + + return dec_output + elif mode == 'beam_search' or mode == 'greedy_search': + dec_unit_list = [] + name = 'basic_lstm' + for i in range(self.num_layers): + new_name = name + "_layers_" + str(i) + dec_unit_list.append( + BasicLSTMUnit( + new_name, self.hidden_size, dtype='float32')) + + def decoder_step(current_in, pre_hidden_array, pre_cell_array): + new_hidden_array = [] + new_cell_array = [] + + step_in = current_in + for i in range(self.num_layers): + pre_hidden = pre_hidden_array[i] + pre_cell = pre_cell_array[i] + + new_hidden, new_cell = dec_unit_list[i](step_in, pre_hidden, + pre_cell) + + new_hidden_array.append(new_hidden) + new_cell_array.append(new_cell) + + step_in = new_hidden + + return step_in, new_hidden_array, new_cell_array + + if mode == 'beam_search': + max_src_seq_len = layers.shape(self.src)[1] + max_length = max_src_seq_len * 2 + #max_length = layers.fill_constant( [1], dtype='int32', value = 10) + pre_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + full_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + + score = layers.fill_constant([1], dtype='float32', value=0.0) + + #eos_ids = layers.fill_constant( [1, 1], dtype='int64', value=2) + + pre_hidden_array = [] + pre_cell_array = [] + pre_feed = layers.fill_constant( + [beam_size, self.hidden_size], dtype='float32', value=0) + for i in range(self.num_layers): + pre_hidden_array.append( + layers.expand(enc_last_hidden[i], [beam_size, 1])) + pre_cell_array.append( + layers.expand(enc_last_cell[i], [beam_size, 1])) + + eos_ids = layers.fill_constant( + [beam_size], dtype='int64', value=2) + init_score = np.zeros((beam_size)).astype('float32') + init_score[1:] = -INF + pre_score = layers.assign(init_score) + #pre_score = layers.fill_constant( [1,], dtype='float32', value= 0.0) + tokens = layers.fill_constant( + [beam_size, 1], dtype='int64', value=1) + + enc_memory = layers.expand(self.enc_output, [beam_size, 1, 1]) + + pre_tokens = layers.fill_constant( + [beam_size, 1], dtype='int64', value=1) + + finished_seq = layers.fill_constant( + [beam_size, 1], dtype='int64', value=0) + finished_scores = layers.fill_constant( + [beam_size], dtype='float32', value=-INF) + finished_flag = layers.fill_constant( + [beam_size], dtype='float32', value=0.0) + + step_idx = layers.fill_constant( + shape=[1], dtype='int32', value=0) + cond = layers.less_than( + x=step_idx, y=max_length) # default force_cpu=True + + parent_idx = layers.fill_constant([1], dtype='int32', value=0) + while_op = layers.While(cond) + + def compute_topk_scores_and_seq(sequences, + scores, + scores_to_gather, + flags, + beam_size, + select_beam=None, + generate_id=None): + scores = layers.reshape(scores, shape=[1, -1]) + _, topk_indexs = layers.topk(scores, k=beam_size) + + topk_indexs = layers.reshape(topk_indexs, shape=[-1]) + + # gather result + + top_seq = layers.gather(sequences, topk_indexs) + topk_flags = layers.gather(flags, topk_indexs) + topk_gather_scores = layers.gather(scores_to_gather, + topk_indexs) + + if select_beam: + topk_beam = layers.gather(select_beam, topk_indexs) + else: + topk_beam = select_beam + + if generate_id: + topk_id = layers.gather(generate_id, topk_indexs) + else: + topk_id = generate_id + return top_seq, topk_gather_scores, topk_flags, topk_beam, topk_id + + def grow_alive(curr_seq, curr_scores, curr_log_probs, + curr_finished, select_beam, generate_id): + curr_scores += curr_finished * -INF + return compute_topk_scores_and_seq( + curr_seq, + curr_scores, + curr_log_probs, + curr_finished, + beam_size, + select_beam, + generate_id=generate_id) + + def grow_finished(finished_seq, finished_scores, finished_flag, + curr_seq, curr_scores, curr_finished): + finished_seq = layers.concat( + [ + finished_seq, layers.fill_constant( + [beam_size, 1], dtype='int64', value=1) + ], + axis=1) + curr_scores += (1.0 - curr_finished) * -INF + #layers.Print( curr_scores, message="curr scores") + curr_finished_seq = layers.concat( + [finished_seq, curr_seq], axis=0) + curr_finished_scores = layers.concat( + [finished_scores, curr_scores], axis=0) + curr_finished_flags = layers.concat( + [finished_flag, curr_finished], axis=0) + + return compute_topk_scores_and_seq( + curr_finished_seq, curr_finished_scores, + curr_finished_scores, curr_finished_flags, beam_size) + + def is_finished(alive_log_prob, finished_scores, + finished_in_finished): + + max_out_len = 200 + max_length_penalty = layers.pow(layers.fill_constant( + [1], dtype='float32', value=( + (5.0 + max_out_len) / 6.0)), + alpha) + + lower_bound_alive_score = layers.slice( + alive_log_prob, starts=[0], ends=[1], + axes=[0]) / max_length_penalty + + lowest_score_of_fininshed_in_finished = finished_scores * finished_in_finished + lowest_score_of_fininshed_in_finished += ( + 1.0 - finished_in_finished) * -INF + lowest_score_of_fininshed_in_finished = layers.reduce_min( + lowest_score_of_fininshed_in_finished) + + met = layers.less_than( + lower_bound_alive_score, + lowest_score_of_fininshed_in_finished) + met = layers.cast(met, 'float32') + bound_is_met = layers.reduce_sum(met) + + finished_eos_num = layers.reduce_sum(finished_in_finished) + + finish_cond = layers.less_than( + finished_eos_num, + layers.fill_constant( + [1], dtype='float32', value=beam_size)) + + return finish_cond + + def grow_top_k(step_idx, alive_seq, alive_log_prob, parant_idx): + pre_ids = alive_seq + + dec_step_emb = layers.embedding( + input=pre_ids, + size=[self.tar_vocab_size, self.hidden_size], + dtype='float32', + is_sparse=False, + param_attr=fluid.ParamAttr( + name='target_embedding', + initializer=fluid.initializer.UniformInitializer( + low=-self.init_scale, high=self.init_scale))) + + dec_att_out, new_hidden_array, new_cell_array = decoder_step( + dec_step_emb, pre_hidden_array, pre_cell_array) + + projection = layers.matmul(dec_att_out, softmax_weight) + + logits = layers.softmax(projection) + current_log = layers.elementwise_add( + x=layers.log(logits), y=alive_log_prob, axis=0) + base_1 = layers.cast(step_idx, 'float32') + 6.0 + base_1 /= 6.0 + length_penalty = layers.pow(base_1, alpha) + + len_pen = layers.pow((( + 5. + layers.cast(step_idx + 1, 'float32')) / 6.), alpha) + + current_log = layers.reshape(current_log, shape=[1, -1]) + + current_log = current_log / length_penalty + topk_scores, topk_indices = layers.topk( + input=current_log, k=beam_size) + + topk_scores = layers.reshape(topk_scores, shape=[-1]) + + topk_log_probs = topk_scores * length_penalty + + generate_id = layers.reshape( + topk_indices, shape=[-1]) % self.tar_vocab_size + + selected_beam = layers.reshape( + topk_indices, shape=[-1]) // self.tar_vocab_size + + topk_finished = layers.equal(generate_id, eos_ids) + + topk_finished = layers.cast(topk_finished, 'float32') + + generate_id = layers.reshape(generate_id, shape=[-1, 1]) + + pre_tokens_list = layers.gather(tokens, selected_beam) + + full_tokens_list = layers.concat( + [pre_tokens_list, generate_id], axis=1) + + + return full_tokens_list, topk_log_probs, topk_scores, topk_finished, selected_beam, generate_id, \ + dec_att_out, new_hidden_array, new_cell_array + + with while_op.block(): + topk_seq, topk_log_probs, topk_scores, topk_finished, topk_beam, topk_generate_id, attention_out, new_hidden_array, new_cell_array = \ + grow_top_k( step_idx, pre_tokens, pre_score, parent_idx) + alive_seq, alive_log_prob, _, alive_beam, alive_id = grow_alive( + topk_seq, topk_scores, topk_log_probs, topk_finished, + topk_beam, topk_generate_id) + + finished_seq_2, finished_scores_2, finished_flags_2, _, _ = grow_finished( + finished_seq, finished_scores, finished_flag, topk_seq, + topk_scores, topk_finished) + + finished_cond = is_finished( + alive_log_prob, finished_scores_2, finished_flags_2) + + layers.increment(x=step_idx, value=1.0, in_place=True) + + layers.assign(alive_beam, parent_idx) + layers.assign(alive_id, pre_tokens) + layers.assign(alive_log_prob, pre_score) + layers.assign(alive_seq, tokens) + layers.assign(finished_seq_2, finished_seq) + layers.assign(finished_scores_2, finished_scores) + layers.assign(finished_flags_2, finished_flag) + + # update init_hidden, init_cell, input_feed + new_feed = layers.gather(attention_out, parent_idx) + layers.assign(new_feed, pre_feed) + for i in range(self.num_layers): + new_hidden_var = layers.gather(new_hidden_array[i], + parent_idx) + layers.assign(new_hidden_var, pre_hidden_array[i]) + new_cell_var = layers.gather(new_cell_array[i], + parent_idx) + layers.assign(new_cell_var, pre_cell_array[i]) + + length_cond = layers.less_than(x=step_idx, y=max_length) + layers.logical_and(x=length_cond, y=finished_cond, out=cond) + + tokens_with_eos = tokens + + all_seq = layers.concat([tokens_with_eos, finished_seq], axis=0) + all_score = layers.concat([pre_score, finished_scores], axis=0) + _, topk_index = layers.topk(all_score, k=beam_size) + topk_index = layers.reshape(topk_index, shape=[-1]) + final_seq = layers.gather(all_seq, topk_index) + final_score = layers.gather(all_score, topk_index) + + return final_seq + elif mode == 'greedy_search': + max_src_seq_len = layers.shape(self.src)[1] + max_length = max_src_seq_len * 2 + #max_length = layers.fill_constant( [1], dtype='int32', value = 10) + pre_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + full_ids = layers.fill_constant([1, 1], dtype='int64', value=1) + + score = layers.fill_constant([1], dtype='float32', value=0.0) + + eos_ids = layers.fill_constant([1, 1], dtype='int64', value=2) + + pre_hidden_array = [] + pre_cell_array = [] + pre_feed = layers.fill_constant( + [1, self.hidden_size], dtype='float32', value=0) + for i in range(self.num_layers): + pre_hidden_array.append(enc_last_hidden[i]) + pre_cell_array.append(enc_last_cell[i]) + #pre_hidden_array.append( layers.fill_constant( [1, hidden_size], dtype='float32', value=0) ) + #pre_cell_array.append( layers.fill_constant( [1, hidden_size], dtype='float32', value=0) ) + + step_idx = layers.fill_constant( + shape=[1], dtype='int32', value=0) + cond = layers.less_than( + x=step_idx, y=max_length) # default force_cpu=True + while_op = layers.While(cond) + + with while_op.block(): + + dec_step_emb = layers.embedding( + input=pre_ids, + size=[self.tar_vocab_size, self.hidden_size], + dtype='float32', + is_sparse=False, + param_attr=fluid.ParamAttr( + name='target_embedding', + initializer=fluid.initializer.UniformInitializer( + low=-self.init_scale, high=self.init_scale))) + + dec_att_out, new_hidden_array, new_cell_array = decoder_step( + dec_step_emb, pre_hidden_array, pre_cell_array) + + projection = layers.matmul(dec_att_out, softmax_weight) + + logits = layers.softmax(projection) + logits = layers.log(logits) + + current_log = layers.elementwise_add(logits, score, axis=0) + + topk_score, topk_indices = layers.topk( + input=current_log, k=1) + + new_ids = layers.concat([full_ids, topk_indices]) + layers.assign(new_ids, full_ids) + #layers.Print( full_ids, message="ful ids") + layers.assign(topk_score, score) + layers.assign(topk_indices, pre_ids) + layers.assign(dec_att_out, pre_feed) + for i in range(self.num_layers): + layers.assign(new_hidden_array[i], pre_hidden_array[i]) + layers.assign(new_cell_array[i], pre_cell_array[i]) + + layers.increment(x=step_idx, value=1.0, in_place=True) + + eos_met = layers.not_equal(topk_indices, eos_ids) + length_cond = layers.less_than(x=step_idx, y=max_length) + layers.logical_and(x=length_cond, y=eos_met, out=cond) + + return full_ids + + raise Exception("error") + else: + print("mode not supprt", mode) + + def _compute_loss(self, dec_output): + loss = layers.softmax_with_cross_entropy( + logits=dec_output, label=self.label, soft_label=False) + + loss = layers.reshape(loss, shape=[self.batch_size, -1]) + + max_tar_seq_len = layers.shape(self.tar)[1] + tar_mask = layers.sequence_mask( + self.tar_sequence_length, maxlen=max_tar_seq_len, dtype='float32') + loss = loss * tar_mask + loss = layers.reduce_mean(loss, dim=[0]) + loss = layers.reduce_sum(loss) + + loss.permissions = True + + return loss + + def _beam_search(self, enc_last_hidden, enc_last_cell): + pass + + def build_graph(self, mode='train', beam_size=10): + if mode == 'train' or mode == 'eval': + self._build_data() + self._emebdding() + enc_output, enc_last_hidden, enc_last_cell = self._build_encoder() + dec_output = self._build_decoder(enc_last_hidden, enc_last_cell) + + loss = self._compute_loss(dec_output) + return loss + elif mode == "beam_search" or mode == 'greedy_search': + self._build_data() + self._emebdding() + enc_output, enc_last_hidden, enc_last_cell = self._build_encoder() + dec_output = self._build_decoder( + enc_last_hidden, enc_last_cell, mode=mode, beam_size=beam_size) + + return dec_output + else: + print("not support mode ", mode) + raise Exception("not support mode: " + mode) diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/data/download_en-vi.sh b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/data/download_en-vi.sh new file mode 100755 index 00000000..ae61044b --- /dev/null +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/data/download_en-vi.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# IWSLT15 Vietnames to English is a small dataset contain 133k parallel data +# this script download the data from stanford website +# +# Usage: +# ./download_en-vi.sh output_path +# +# If output_path is not specified, a dir nameed "./en_vi" will be created and used as +# output path + +set -ex +OUTPUT_PATH="${1:-en-vi}" +SITE_PATH="https://nlp.stanford.edu/projects/nmt/data" + +mkdir -v -p $OUTPUT_PATH + +# Download iwslt15 small dataset from standford website. +echo "Begin to download training dataset train.en and train.vi." +wget "$SITE_PATH/iwslt15.en-vi/train.en" -O "$OUTPUT_PATH/train.en" +wget "$SITE_PATH/iwslt15.en-vi/train.vi" -O "$OUTPUT_PATH/train.vi" + +echo "Begin to download dev dataset tst2012.en and tst2012.vi." +wget "$SITE_PATH/iwslt15.en-vi/tst2012.en" -O "$OUTPUT_PATH/tst2012.en" +wget "$SITE_PATH/iwslt15.en-vi/tst2012.vi" -O "$OUTPUT_PATH/tst2012.vi" + +echo "Begin to download test dataset tst2013.en and tst2013.vi." +wget "$SITE_PATH/iwslt15.en-vi/tst2013.en" -O "$OUTPUT_PATH/tst2013.en" +wget "$SITE_PATH/iwslt15.en-vi/tst2013.vi" -O "$OUTPUT_PATH/tst2013.vi" + +echo "Begin to ownload vocab file vocab.en and vocab.vi." +wget "$SITE_PATH/iwslt15.en-vi/vocab.en" -O "$OUTPUT_PATH/vocab.en" +wget "$SITE_PATH/iwslt15.en-vi/vocab.vi" -O "$OUTPUT_PATH/vocab.vi" + diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/images/bi_rnn.png b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/images/bi_rnn.png deleted file mode 100644 index 9d8efd50a49d0305586f550344472ab94c93bed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171455 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

c)BTHo&a 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 z zS1Bk8FlF_1RKtk6fGTm+&qsi-GoO)d^)HP-^30Kb!cA+qGmP>AYwES+tVX4jO2u)vx_`>ZFE?=Ryk}^N@FT*GBT4R) zYHoUG{&$!mZiKHzP)SM2fFFAl5+6uNNU(6n_}U?XnPeC3iRLq=M51pK4N%wuxon(dOj9^_RUxqg zoG`6#KaXY<7dRE@>FOp|fA&~xP`q)GLn#-3ZNQ;C{l?z;b%eym(^ZAR?alJnWj#c{ z7Md$SD_UzlNQcnF_t_e6Y-xcCdERmV)u*I&9#Iczw+;qG8I^SeAr~L1ee`KcLvd zGY9C!)?>jj95J~`n|A&4^{v|L^|sI0pr}bK=&2O4NyK}HhmEw2LP9y5+yKTn{XZa zq1&jpBn@!dzHCtCq~F3DTj8*c$%Ss zdWP!{9Ew=;5!RcMx=_)BmK8RIfaSnH6RjO|H^kBv2J@tdwns}P)Q8?-PqG<}8Op4vmbAUu0`jCm`cAeVv&^h&Kq z9NWC^iLBj#qyPm>Nx@)Sb9l5Cm&GZoh)_KprNHd$b86npr!`kVp)HW~La{^(1aOaTi^UMYuq8K;E3~-ZiZhnt$Zw6T|Z7mR^_UMJeOhUv2n?=3h z!^t!zooe`6xJlWFw{OYQZz>SfA)k=eL2}RdDKSsNhLDYo<4fIxxy3$O105~&aIPo+ zeU0>vP9}hiy^6k(^rp9OsV6YrK+^&2z41&ei)a|*QO|XfSTG1^1?Ck(H2joS;{IdR zSaoq=#rC#(K3hyE_{2uacAk};)vEL937AkMQ8srB+TRrx7M8c2$6p1;@!SD;4w4+} zYU>=YJk*|AohHdY>nRL*as@ebi3q8_(pbzyf8ovJIGkC^JZTeIN$j?AC()yRPE4dC zHqfboQ2_9L-+K^>1#XDMgoGsqalFxyfe}vYg|2`H{Zfyuw_oZXrFuXoMno-u&iCsq zu?J;;Hk_|zo>4sGGr~A64*Am~+`@9{J@OV9I z4@_Fg4C?_FWD{aaer+K&vtpDG6G4wK9K`2)*EBV%&&%y~FwVsrH`AYdksH?d-HST^!H+5L0VQk~Ww!Kn+=aAN$e>+mFBj2dNIz zjx!6CSSez^}%_A&aK zH8Z%OzcZAu1rq8e`WMJuOJc%y(sv>|I%Zp1g83g*>z77lWZX7EA&CRdBPcHHKKJHF zWIUyc0FOY{H&)FP%2^6~B^Np?f}Za~Ll~222#QsADFp)ApQroZ%Oq|E5c1MaFo&gQ zS`*8SRWKM-vUV7Qwv5xawZX}91Sj`Z<}aL2yeY1c5`z-tQS4DsQ7<6i6tZg%DuH=h zg0`w3?N1}4qyIskz|J;=!a#Rl+4Wehcqpfe#f%6D8(8Vx>hVZ!^txt91pNJbvLT1g zJ!Er}{Gc?RIo>m0Tu4PGNfHdA63Z`89YTe;)+PRfU^@q}TQnRSdojpS2p=lU60 z>~!F0U}y+e#kiC--5pr`{(24EiU_=V>}(g|-#`cwEvvda$@HU2|GY+V!#eN~-5!O# zxY}_%o0yDD#W_k-8uN4m z$qpu-HptElVZOp{*#mvaRIj(GEY^)R7lJ3HJIvU-_rC3_vqCPYPZs8eF^{~SdI!Mt z@XqZ=-@Zv=T%4{t79Jj&dR|UWomI2+ma|(xK(3Q~3RxjLxMkT2hz(@;1-Jt^zo{|_ zd~0|RBkSdb9g7Y3tTeDBFfN*MLh6M+EYlKh^F`Hfup@_XGFZOXmP(4SFQ#Q@8<`H2w=<*J<5EFFAuP$MQj208Sc*Zj}71 z^mO0j9sM&2K&g=nsd948!#X=1d>s(8*u5AdScvomNtynF znVlQsV)n<62fDf*khlqF`gpy8Igw%fhufTbb#=JUfx5xf=QV3WBRM!Yc<7_KS=Ere zHuU)p$l7bon%iw`AOy{2s*;$6Ug!Ca1KvVNC}=CXLpekbJmaO z(+3&N(HGY2TX?^M z?yZMoNu>Xj!0mh4BaMoCg%^+_U8D!buD>5S3MKE{F>QfqYh|qB6S?%bffc(ZUzNFQsu`5i^V?Ho{EbPQR*n?eBP?6uN zBgW+Pp^^Xye;k1V)0q8y;hZ(F51{Qs(oQa zVH7cr{``peX3%^A?qZmDkA@}>MhfKTKoksQXnuD4S?>A0%3y;f3wIuMGb26Uck4I@ zzyV}G&;X0WCIkN+=Py$3($hzyoLL;6>gs8)GJ^i~260Y7p-sjUg7j^f+g9lkx(Akxkm{9NI^3VzEepSAT8ROkqBBhoP1yCFbf*NpRqpZqM z{smB_`)6|!5+dR2W8d_%KPt`h4^lG=#M590Fj{89mh$`C+n>M#dFp)wZ&RIx#8us7 zR(s~3Cq(1t6QV{%_xU+rs-!TRG^T0umy@TQZmJ&#=)1Y?!FqCaeVr2)ft;xK@cW;*{Er9fq_~Z_gCRTBQ;uxTZxj*0lTd4CZ59@^RskM1 zKQlk6O>rp}Z6T@Po4`AA`|@LJy!p3p2b%fPNS{z=C{bO z=+tT)Zy6dH%>sP4`WM*koQv$v&TF9kSN>ulYy3&T@Q!Tp@Ne_aS;%RV$`6ZAj_+?4 zcU#QP%EF8Y|Dl6UyHN0_$+Ri%UBg-no(W>8AC=*aW!p@vm)(O;p9Gh2kAX{+m+uDs z?Q=j=7G(^kC;fB&d+Ed$^z7a9LTY{)8QRHB$lV4S42lG?2vL(F8)IW5+uBkYg%b2M znFa3p>Yb%Io#LsJl93&67X|~aC@LpMUqDN%**XdCLkbEC^d=N#RQDzVkHovp>FT-K zxLT~Yp9_N|VG3lLNQ9Le;#l|p1M_UCET4IcUOjGv$lfSnjDFcIWlPa!w(NP90H?tpcW4VK=PYZei4%+|l$5`gM!3_{xb^4*qUdc+B zF!fE`Gj$COXSgZSg_nqbmm7}QAUuC9O0E0_y<8eA1W3vaTccXyFWCSjHyIh(ah-`1{9|Xh zfN?sCwbCy{N#-GSE>$JccYBhquK-@wnN+x9l_DVzbL8`9L!ZZ&afx^;p*6j8UnVEU z!m(+o$lG50xDa#w3RD)aX#-L~8%%zh72h=Lj>*5=7Kz`2a~vEM5RzcnkolFoP!9!~ zX<+2RSOoPHtn|5kEu$n)*}Prn@ASo^R0GKScn_XIwPYX%#9s)n+o3t}Yssd>TM`Yj z<~5MJFSa%UtpmylWnaK*Vdvck=hOx2UxPq$Z$lA7nbc1*?nN=zBtsqItbC6&jy;Ht z=0Ok>Dp4!(p}qant2>mM6|;G&NAcA?gP;*pQ=^yn4?M1%o-%y%=8eTWHyb8AhfhSK zE*f&DH1E}N+EDOg{~v0&RN-| z*$)?*_ev7P2IKUh&hnrohC>$=k@HOsT9W((U+5nCuar*-mB2qRjK_FZhtxu?TOSsI zGfg6y9Am0Vc?HyONy-AeVDF#>TawZX-Ohj$%|{xYD~*_F>y$6P0Q6BT1o}>(cRmxd zsOh1go39fGV6X{i;;y?}%l?C*?iQlm^O7M;{`{*XX=*SwF>xQd&%j36ZPC%{ox#of zCzy-A!j~E!C;0rR9DY!IeEe^}=(>IQB$DvJALE08;pnv(Jv$bOzJ`A4t0!kow`Q{j8Rxtg^gMAS3sk@F7{ z$`6v(ldmj(^sXM~i0lT&8lO^>6NET64*IvX!Hx{>v`WhbcbNO2g(f+Onud~LxQVxB zl&?(mB#lu?x>NkU|5;PG|3%mjRLq_~ttiepW1G6muxY5(Af!NneOP)?c$qXxhertb>*taLk=5gGHh(k&tbeaX9Yf??5(FNCjNx z009hmmH$d&&%IYw+6>inRMscB&%SD+1QJ)`(F(%Ijxp!4SoA8H&Ad-PcjewBM^gBA z8(X&-(B;8v2FdKh14HbG7I%#IYsh~@l*_WASoT_=%=8pj8C4m80vYnX{G~W|oEHtR zOkzZxck#wqLm(}IIhGqu@h7mew^cFXf#Q@@)*Th_z6xfVeL$Xg@(ikRk9Xk@fQx$R zwGOy}`)`L{Ow4%3G8IkB2x$cr^GNfqK>vj&mFmsbt)BlMx2qfQq$XIyW6%$JlyV`D zI;X9z{drJPA0S_=1VbFG_Kx-&JgfwI`D&!)K9eIOl0g^8APET-h1e}ezf z-5f9}aB_3wq!7N3MIF1MWPYS|8_&f0vJ!>(coq^>A@^1maU>r2fXOrJK2u9d@W zp8pLznu;RqW4L;EApxdEqMv%Y8wiix4SU4hoLp-QYx86y2= zpFtGk@j3vzAS4U50zTaSN&T0KGNW*5=%R&~_K-#>ml0kr@l|vvt6xo1Yz8DvhKr3Y z@0k~wmOzaX^=b~pOz*&y>-W6fx_h1D9xE&BlzrBW1389YAEx3vu#bW!#}d|YrgQeh zyz!eraZjEj4c5BPtOLUpugj5VBTX~}S#EcnPNwviFPngP13;q59Gi`s7V~l5%UqN+ z8D8GK3O0GjU`3h|gKZqJIbjp!YneO)q_gACy1g2(o)}GZJO6sM@^iaczTT{63wpRk zghe9TO5!^+Cqf{vY6k)|qU=|eA%=(nq6U&;6N66oaw@fRQm~?TjvxTAr$?b99U}Xn ztL8Qom5EL+5V1miDViBbEsBPAvu1oe6PRgGB9T{CS47h3oSvTE0y+{vcpx7wH}0>K zm1L5p_4cOsfe#2(fajKjeq`u@0ou;f$0v=;o|=49_4SW*?=E}XS4jV=V5&c0f^8l7 z)2_oR#l)##({Ly(4fEZ>|B~e{u*{c0Ga{g5VW#^2Wp}Pg)V_D5brXR0ov3nHxQUu!x%=V+PX&g6a*MwMT1@|Gr7#_|g5GElJb_!?(sZlMZ zb5l5PzrJ0ekB1DDl=|R;FZu~dOS&{GVqCO$^ZY8UylrjQAi@L6G1~!O6Dl3n&XtJ` zxvNtm-d40oOBX641TqT_4vsTjqYoDSqE1R3$P`_FChtJwlEP<~FV)E6^SafH(XT=X z+n@f*|FfCZ8aTSa1+;S2<_225PIjuHRl1mQwmH6a{c@|<#=$BmJD@#>W(L*!+1~8* z@OR8YY)e2RCeCxw<5oDz<0U-48)O>Ms{>a_u#nX2OyL*9cP1&Mv zY@L5EU0__m{Vshr*PHG1tFR#@cSel+r71j7+7lB@JZF!9O^hy8uKHwaXA2VeFA;?r zhL1=zNL@)ZSmP5C7JENKbn9+RcsMHgZ@Bd{W+MJUb_8S?pKT?Pn< zg9(UBDr^ml`KJ~Ch~E%NePmQr-w)#J>LH46a+uSCE@C2?;k1?$-hG*4CasfB#M{Y|Rmc6aqVzt(itm%$@@1{ez-yr(3U{`;VrU zroH)MyMM^ndFNuN-=?u!7iVYFT{bv_o;jatGvCez%tDIq`7K+g#>V3DBOp2sa4`J& zqFI?}segM5B8amCKj@6Z>+e=eqy{Ba$+?8TzM0eDgTy@o-osqMuL_AgjEiSYaO1U) zW&mZEoteuWN3EB87fBGCA@V32CL`VAXG*JYSqC^mEIt%-GUEUY-aKXGxkx6k7 z4F~UV3J+5&|=HTkH zsUpQ~f&Ashpu1pY6ZKXe8|YJ;f$epBe?JIvzu@-AM+hRhl+rTd@4F49Y{B^kd#^kI zL7<*r?hf{N^k}a0E+M@BJh-^V#&6wXd6^ZIW90ioNq&vGZluuQQOY$8MQUM>fJi2k z0e;zgG@*tCu$#c3zA-eQzyn$ID%G_bg?E)k;kl+CCC+9)5${ zXkmSTs<)xLE93&DkJBljT_tH6?$c zK7^cTHewvC_zo>C75F8;eJiGnmH%mEyp=vM2mpRC!JK^t2)D6E4R5=z)_o$< zFRoY@@BO;>_JI`-MBrMBZNZ8bfF3n>>k4CI2^MAnmXk8eoc=a4-4oS-biN5Zm$(;% zTsQr^*A45tSmCo_;4>Y-9d$FF&f3Lgh%UIH0j)DCNF{1vX$8g@2)D`R7y&e0==f^1D#mVNOoX!0-pqJ761(ClKtm3{}V3cHu=kCyb#eBZI!r8Y%?niO7h-DQWeaHzDvDnWUe(L2z4MvwJ%ZKW})wt0WrZ_fr^OLaQC( z4UkDA{P`yA%l!x!2|OotH8mt1>KU*)C{Z{KlFn1b;3Es!fHr6bqVp(f)@?k$(T{Fm z;o?HyD#pK@AU}6o5 zq-yY}fbI^}1V!c_#6g>8nHrVq0+`XUQ{4i%LUL95e7{pA%&_EMqw6B9@KVQBx23e@ z!6HET8e@~|Ez=0KGtvq$c{O{SeZI?-Np|xM`8UpZ zB+I>^R#-!Zz9C`@V@TOh{9p{5$@zc3 zeMDTFepe^}?TLvA=%HVc;x$uHrKYFj=nsw!-8M{r9)t9f@!1u6cJ2r1PHTi5#pH>( zgT1+)wd;rOnp6gxU*W-ph>GL)4_kbSUt>;yVPc)-v}mX(yy)6rj%3q;HE326nseSFJ{ zZCD1LswYpbLQeynENmsP{rkbQZT(QN^z{Vj;+Qf&0{L%^>g7~g@2%k$u1s!JqSsivl5ps`xXSCFj{0Jj`L&o}nj6n6B0+!gZ!vUP%!7erkE{I9KFU3wHT9Hc}i z?tgY@?|Lh~sHmtwC?K7ck1&mkcN1gc3Y#Przm~G=OJJW{vK9d<)z>$qrltC~kpi4L z`K9Hp1lJk_q$B9|Pq%)+#x=BPjzQ)|&_x@a7au=A00E^iD;uQ#Yx5Svz?~PHu0ZOb z&mO#L^sV{*TDb7^H~W6Cra}ohjwkwOSOVGXXiT8Rm0wzV0yPINE7Jx?w}sjePA^55 zfM>ryp_IaWe)&*RQ10I$_9ea_VlK56IEzuKbV^Q7ubDKRuY`GiA5x{9!o#47wY0Xz zVj>~BQAr0u4Je~n^wbev0{Xwm0HpR|R1OH;))-=HDQR!`19vV1x#Ie57jOjpxFm<% z&tJgeY6FA8kpaX>zPHLZTvS-l1`DUmO`bFd2fL~K$ARW;u79rUR8|#LU0XMjLVuE9 z^{}c>#%Zz;n+aXYVIOaF5D5EllQ2IbF|Os>SYtf)fc)o^aj@an25p?a80S!g>;{oI za+JlInU8scgHFrW0#f}bl`%;{>Y zn8KRD(B}?B0EKn=>z+JqDs}Tim~?4Sp7RLo9-N$X__?cGQJmuJAnUdJoV`ku%JR8Ek&-?+9W0yO0 z`{1_!1OqoFfL4qjz+lB1YqTMH1`weDlVRuu-ll_8-=@bhl#O09_@?|7J0@I&FP^MV$8`-ifE4^$k!d_@BsQs#KVL;oLuB)^Nv)^7GG6014UhS$;kX?17F+YDF)Th2xmc&P2qV85}zB3d=Y!J|miv3E>U_n6Bh zdIQ;KnNrRh*|QH|CmK|bJ88?WJ>ich9ho#RwTQxThjq&A>IqmMS^)CFv>XoV+VA%E zcKT<)Sl<%nPOwSx0VM|a4*ykpaTjAhzf)M6iK+t3p?>{9A4RPgeM*CszX1EWa_hdo zq+K+WGBH_;0zQG^DGVLu0#0_9%4$Gh2AxO^E^dan=#wkV&sc@XEDB-j_MAbk5-1l? zen4zH?azen2*RkGppYDCZ=4AVGBU(v2iV0=15l*3j*vrv3WJ*^^wAoFkHq%P+5LF} zYMy~tP%)Yx|IB5pBu^50h~-oe)YsoXJqU2~*U!~FB$2)cG~#E8GoEMZ%_K5RLJcsD zhZo=8-Z7*fe%rpOAuUTw1%7dH85xF8ROUE0mOI@3PH|{geY}kx&)I(+qN?kwN=ARI zs2pI*Hn21M`_b1DqnHy^?o&7mTH(%gYOyM&9#CJl$1-^D2lUiMgqH-w|5K_1?lSe0OO>wPzx>8vB@XKsB`Sa4HCq?5CAXZQpM0Y3hj|MEDD zg*?5zF~6+8kTJjLZGUr#VWM6}A*Y_r-KmuOCGTML(rEME+Fg+BO@?maTbXwdx3QM{ z!SR945d`$P@=pm0`8rB(Wr?f_yUyN$7fq>}dyud72FT7pZYU-x>CUMEq)TU;eTZ9N zLKGVMU}r#Y4^B`Azyc6EyZQFuJ1g-sC3D#Eq4!EAA`+(}O{)ZiPzbtw!UTW~yCR@l zgH<&!MwxC$QN(7!g15_qvOJl`dsqX~ym$ivkQ@jg5AT_|g@vb}qXOK19^7R3FYp@V z+ju&J(Yv^SYe0$u*`%$Zfq0Jdz!~`JfPg=s;|GJ5Vl$LU7Ith=RaI5#o6@QxMn=XZ zxMt!)XkYEgAf11JW^el%W^mt(R zz!C$?M4#nB4^%3n8S($`25w%HmImN|RE7;{#+{P(4<2ZnjsP~srxUo}x+|wn!@mgc z7mN}lob)dT*4a0oUC{r&U1^N}u36l7son7%Ox@mA&3}8a^v-$O0c1TT$G;Mpr1W;_us&L11O zGjZF30&e!@MUlWREm0w%iIo*JhXkVTvs@hvIOZ18WOiE0Zej8kQ>Z zBzSK5!{f_=N%p7<+0;{s$&whtOtM-61Uq>z_ccyV47`|s2s}7RN>82kNBjCB-?6}D z4%qlRI0kG(=}!+pQYR-Tr-;`{6en@*CL1}09@x-^Ikl zS2;LKOH09Z=m#YYx~=-Ehw$DipbR;xwA^i0h^~mJYMU`SZGHJ74f)6UBoDC`iift^ z$;wMZhsR#Yy@PWDy2Uke7Ciuq5M*uZB6JUWD9mrHCzyEEck9@wI8QK(w?>B|R7hwA zEaM1(YthPF9xx z`@TycZ8Sn>T>t()gi~PHuDycP+rp|U-jkiiXD?{H9E!`_e;vJ)d-BN6ZVN!hpOfzo z9zIO?0QlPJ>uz~v`2>GYID#7dUA^|;T<&@PB`eF+G;2s}sIszBObbUmmgV7b3Oy|qrZFQf8Ah-UAWG8e%a;8cQe>P8Y>jpZIa_a8zd-Zpf@c6 zZHZ~U-5`kmJbprt4?(U)#nr_X1^90O-EuxUz@j6Y$OqGStAv}30|x zT%t_k_4W1Mm`n=|GsuN2gn2K&s0h5(?kxV1ABx4!hW6Ckpr}Y< zwpu^1?Qghdy83JP%%bML&ZlK#tZnBd$&-%Q_X(lW*x1TTP!k{kRrXoE**R&PCvVHdXSW<~~S&zAeg*3``uP=yfNALO>%$P_=i}@7+Y*yS z5J5K~@@gxUioRfQ=o$UVq4FB`s!qpvt^({|1XcDA=qpN$o6e+=b@JsXXeKHC!iLfS zsKWS9_RUIf(Lc08zsP4bgr~?H_LsRKgpf^7(1|8SoRb~o*(BrpGKv3O@CI4pYwBt- zi`Z#EK0DmXYa5-eik>~!G)EZe1VdmUSWkDiEo>A)Fzd5*5ve`mC>3!Im4zwSLajAi zJHX@=j!0f*{8ETvfLXuaG&3_2PXsHwL6-nA{q6^!Fy=x(Kl(OP2dPL9DPcp*;jeQt zK%JYE1beX+zkP-W!uM@-cJ?id>X-M?FZ1Em6mWdh!uGaPzvE7r)+gaSJqpcWC;4IX z5VocifshZsgJ$`)<8MgOL~pZ9d*I}RaG#l(=~>noGmX>4-`|0w0e}-$_Y|fT_$wzc z?IC1?>7kD9uC(9a`UsEuK)*#VGuCD%>K~;LeotXmF6?`N4tTF;kP^@o;ZyRxjSUeH zz`~&s`L~@Ef4bOjcw1dv{qNtulz;t!JL5P-o^N$uY55=#5F zLM4T<3D&78#A3nn2-5O=GI5^U<~!G`$Tc2G+=1DkJ{55XGHT(0*LqTS#PA10_zwVO z@3g3EGAGI1ymo!I3$`AAELgJD`gnEap7;aUP_QyNX`p`Rj!rbW{+&B_$ZszV^d@pE zlN^0Sixg5gv|&Jdzh>n!ZNzbjQ94cWHn4vbur3c+3{?XgY$^jK+3Ttd0}cTQS#ItM zL+2)ami!GprQo@-u`!@p;MeZ1(xlp`JPLd-yA7kDH93^C2a5;a9x{4b40;Ioobv(z zb3x5(H7yEjVOWHzT<2f|dXq+jlm_Ni*Qf!71G@1Klo+_$8ettYAep$dD^}D!=JrU%OBB6jATBhC-H$*$pHC%o|#d zWn0@$4L*uTt$!F95v!mYAf5^%47Mv@LMI`^f`?Y$FH_hN@RVOxDl=tSc&rta!G7Rc zH3hB~(>D`+G5?hg-$4+{EFRx7H_vHlk?tf4?|Ku<=SA{Ln6dd6h{i9#r!Mwu>iuIu zOciz(Of`k7%F5WH`NQ8IHcWG14P5-0=LkUTPuWBLH))w@JrRC>&_4pe0Sx;d-Ui4h z&{p*py84`(jJi1I?|8LqQZ5mKbT>hDff#A-2rWr}0yAOImHTj@k(jtXUzXLN3&H)> zAYzhga+tHrqmjreC6&2A8bIW9Bl|QYns({G*CK<)^vy+sBfj(fHa~0F_{FTEVT49) z8RMwP(*DI=n$~kT?ihryf9LC`_rIZ-t`Q$x2jIL$Y{A~|ei%d+_q zYJH%>CZQs8-zujIlpKQXh**1kfXpVO;9!O3C#bSgBsLTBbC#&$)XQzuH&9Zn-f#23 zU+_M#VR6Zace*?lAnxb3)N9(@W||}4dw!WF%_F-kTD&3_#sOZtxw$!S^aI%lJ@=9V znpc&7KcF*SUR4E(t)xN(xSq6K2<{~;PH=NrFYZ9ahF~dlD-I9$5;8SFaI-&<&yHZ! z>ObrJZG>3WqEpP31A+^HC7M1KccI#DvM#RFA2M=A;N+7i+JJ=q=R(U7%wPbDj5-=# z5BioIUHD1S$IviE>FG6Pvu}V zXSWuN1X56CFg}{9^G4jXL0IxNeDu|ep4v-!pautH5EXbUmLyNS=8lWY%G!hSc+x_* z?RhnGWuMi9((=`f#~lfN-=`L^&B6cLH)F@47LW-|Sf_0CKa>W{jkLZ+xe@mK4>Mm) z1LuK+To_4pMFqE6F(enAnO=P@6%vB!R|hVre?Y1P{P`0mCkw}{q@)BpbCP1q)*p*N zZO!SJ=)*9uzHNTOIpSO-lcgKYw!)7LCG^%t%O{IwjAv24@Uq@X(tH(atC!A#kZ`_t zuhfGH+F$3(hM+5djt)zP;e~_c^B~ufGjrB1F4ONM&!d{qZ`#G(tFzc4c-xkN?vPiT zQLOb}vOsOynFf~DiM=dPAUvHL>51JLMRCf@KZEZV#ESY>pihK5bQ%bDI;4J5p&I6A z70+Nd06t+4z_7u-ABnMYXc}j<@a{#4k+v?d3Bu+I!OP?0i6>vk%f9ist{+ZYU=^~+ zDbrx$S+Feet}jfsKRGGXLLz`o!TeItDCxh$%&(g!g6yF98$w4>M-3dtGq24u`bKkJy>foO{y9C7|82-a$oZqc@yJzGHT?bizd#aN+1q22mcs>J zRi&-shMgBO{()j){}Xhc2v;a2yyb{7gx8@at5M@)ES%z!QVaanP)UqrusnI2$ zTD+syKEp|K(#k&d^!4RGWaCGVbyGm~(Vj0%*on_h4RyuXar+Q<|u zq>_phy$5UUpcbqnqevO&3hlLd`|;faOK9+M`WoL`OwPTaQPszX1HpM3LZWzuArSMDSH5Kn{h4X01IOVa z+ZlZs5D>5?94-d?mHsX(9ty9js+h$3V*wn2kdF?hNj4Dl!LB)o=o?a=6ce)}$H>ke zIhaHx7bg*l9<|+N>W>dXX9WX!`}gE$L&IAmli|gg7P~7~*~w0y{{C^LO#$TqCH+Iq zJ#p9Fi9i=UrZxTDoq^ZF_h!RIMW)y__Wl~93=9p?Yy!-5PeJ2f!NnWq=TF4^ZFg6L zW5BJ=Vxznp%Oyu4D0l5MG}2(gD#%ZxFx4M{`yykUZC^`~Hk5vi_+pU88Cc2R-h!E@ z#RWTAjhrGPUU0af&`U~4^r87>q(t*Abu&hfBIEdqgv2jJ&EC5}y#8nNcn2I5K9#!3 zLnCob;n1O;L|gj}Noi^Na9hfir+xAE+UfDka`%{q^-*$*vHH}mt5+6rJS!^n*=}f; z-nFyqi6Eq%LqogOAoSo0g$hAC5+y}n1k%|Z*lS4h|3RL^1g_R%XJmBrOmYmq1O-75 zb}0DnQR$5L^!LwKn#6^U0#&9JnCzewaBybll>WYVe4O-{jfcl&BvTmXa*{PpZwjlG zC&%k$FXgvnV1~3s5hp4u$PBX34xx9jMWleyewZThs zG${Hp=3lLuBE}L!?g;E@`c%D;u|__e0A;u13|`~%S}+19@f4a?bhXL6Cmbrrf1*n} z*U%uN~a=x1Rd@{S{!NNltq;XhR{ux>>^mD4;xMGOYYi9p6m^7)0u z#k!QDC)n z8^RWdY%{+wQXc*T#v*uz`gJyHp!0~ z{j!9tEa^|%Fmw^j!Z~2&C|sB?Vs;J;YYtSC&GnAs%&nZ<+|I|lllDWY zotj<=aKZ{-LcSEZq;5C4n({8X-G)jA{w)4%kz3D!-pH?oF4z>3z$kghK=W{7F`oM; zK-xN_nDrCHe!T}q7kKG})F^r20XW5XLv5O9+lK+s8`L|0nbNN=WP!vTe@0qb*iuWw zyaF0>E-M!o!&V<><4vH07N$YkYu02gZJv0dj311}^MU|3o2Ko}-QL2<$zv|E8Y0_Z zO_Y!ovk*llfeHBx3R~z}Cgmqxv(J+j6SzCL>~<2U5>?f-updFmOFY~hoSb91a*X}Z znJfRMEDi3s-YdLGN8&TF)~Oj2bGkNJCLtu`0TD9_#wsdBvCl^pNfX~49H^>$aB%#y zZy&Zf$&N`5x#uuZW&?N0BCc|++DxeCTI)>f^_}+GgZ9SC^j%C$_)ulXyf8X3MlKB+3 z349AixQCp-UTL5w&h!=zMW-?1`iJvF!XzOJo?aE5Telj0eP_kRDOcP7f+`o+p9mv< z*X1i61AQ9#2{#KUe@=3Ro&`oKIvNY(A!qUQDINYSD-n^o^nD@b-4C|?By`pd4x=4*feKgeZXUX6d3hbeYp}+i zE$N=%Zl+ z*Qy+3nAWbR)~L!g1y8Q7UIHLO2a}mpQVp4yB#+`(R8&rR=xb>WLAit_k=XK}h;ngs zR6o|{Nt=?&Bq~Y0#^ADdPkBm06Iu9^Y8GXt_#8g^aoO~H4}7G z0?CC_pNU~dQm@^Ow}Ik&llvqDN(SpStjYSE7vIg2YQ-v2sc^&~f`OEoCVK)0*W*24 zN*Lo(QP^lvu5hkB%HRB(`g?yEERqmbqEyiL)~OaRfhOm`~kWek? zjlwy~$#jTyEaWWSIXq->G{!K&Ym?qPfs+fGTI^diL8_3ZS@6-Ixf;yj_zxw*r$Mb z@r7J!T-??6Cz4!TPT<0Zp{>$~@x?`HSy}Tpjo>btd1G;dlQXhqk}asvmF+XHL84N= zYjTn6yPad#$#%GmtAX;8*@SVw0;tn~AqQ@C3^wP2J^;8JpYrRsG7+?Vx$!Llzbawr zJN(GqTSyC@FQ^l}qU4*mIqwr&g}HS8gbTj2PoG~OCxN+<$fdcZ1%`L}@%Nz}pPrt+ z0RiJ-IUACTmq^27J+cUR=`ryp34nf5`==;r48x{4*yM{C2XUfxjY{Z;?3XVu!G?hy z#dMHL;et8(ynoOF6V540!-_|UE|XX+1iv%MO1E4tlZNP)Ip>I=<2xA==|F)fZDBPv zvI8P55T*kTxZF4+%+ry7ZPs|(z+{lD&zgvc2+iI#p{3~n`!?c09(>~*kFkGZW(uvs z>C6j?3&75sDe%YEihUu zOe*%aWi8#FUPmV8v4XOPKNWa(JJ%nq!c_g~i+x(4q`D+qAnYRH`;D##DD1T*Q8BR| zLA4Fgd7J}r1Sz?@Get*Z%SMnGwLPCg^+f#YQGjJ)fH4WeVW&FFn2!LhrCsfK3gmeM z2!eoL9Oiu9*cgxPMx>RNLhSa%2`2Fqjzy#aU*SHr`Ki{evt{CpakK5=@e4|7ecOcJ zISUJS4cYnm-3F3acVAzX4y1eKlcV&Oj)9JjK$)4+D&7T)3Yi7YJG>J+t>QB6>Edv^ z-uNr|t-VGF_r_N2?B!PNGZ+|lIko`%0-g_XPjO`mqA@Vt10=BUx5-g_g!w{#`%>yOz2?#0)`re&I@nP2imu=0ady^cyo}0i z+$(31Nuq?mzVqhQ`<0HT+Oy~^C7~GUm6f?PUf!y5I>urBL^jU-I35vU38lB-`1Bh; zAi>8s{qRigQ>H)~XIXLigMooLxDW;hY5c98`>3$ic?!oD<;VK?`T{$|_JEV0Uo7ca zg`teGT5IbBv7?764D!IXOFV-QT5&G~qTDRBFVvBljX9pPwCQG%C}yy5ex)^?5a|p~ zZrq`@L^<0o=XB2k-aAyIm6ebv9V0d2Q5bpsuUlwtkUPCrJjNrC@oAtrpsu}-RM)|! zv?!xQ6U^(4)#Xo13t2F&r)Ou7aQ}i4?TUofX%amcLHTPQgw8FrTgC*qvhrwPwvi_M zTy8l66q&#zT@TKd-O6q^Zo(F#1u1Hh=rKyyt_rSztjR%}g8O;yzcn4wUcnAqI0iLfW{tK{*hD5oh4@LhWM;2mUPA;NAE z6UM>Y)g?#@VH0oC>jv4x<}MeDT@?i#w>hITE~PJ#m^hhts>@3%)XbEHVl}Jy45Z81 z>{$=8foSnQcB%%x4i@b-n4qv-*~J91>4=|GOzaw42w~<#0l3Rdt}W@DxhsWPr2M@T zW#u3w(N}lZ{3?1(6w9%n>#F(}8r{TP*)KCCgz~alINdm%3IjEKu9i5YaX-%h|Ll5h z+TFdo02>}A=);He`3_Q2G}JF!W_eQwp6`RSf9BvjJZKD_bGql(57m2da z1hlrkdhZhx8>{TL7N77&fW-sOGz|N2P7U5t6*%;?PD-&}0g(gF^9X{BZJpUEsv4D) zE!|7Jx}PoxWqfuNfM4b>m(XrSO02%*o7*-t5<7?s8nbYc{?6VOgx+ zuOsBo&t0{yS+vR*RNz3by@#(6EDVzmz=uaG`wf74EUB~~!7>f;d?3j$0;xY4o0+L; zihTQ*Fv<3FkqSr+6LIbx?3b7?kQWI|hvv;P=pVKNm??h11=L9md$4T}i#6eS<8UhF zogcZzehtU*H!P_D{W2F>KUdD&_CSS_phgddK8t}tU0q#>cCW>57q}&ubz5M(4-6K} z=j>(;K}*z1c#*Av|2h(yt-1>H7T2@Gy~0MB*w;6;<0kIH3oHNVm`;NR!D;Szh zn@wVQA^UBp72WQI4fF>x1Wy$StcOzELR0!Bxd)%8geD3JOH5AAg)G^`jKTHt9=gcW z>C5*mDZ`o(HrnRx%HL19&F-_Ob(H}0C*(@W$yshOy59UV@w;O8ZT2YzgFzsoe!Q~$t=ctKolE&^EiwC4_;)34W+HL)?%!ADx05fc3bcmPxHHoDwW$rn2n#Ap zO*taXc3pyFFx+{}?nG+pGg;(5=WsoL(Xhn5N7)xCh=H~-E71({hkB#gFDioxab_Va z#MAQK2VgJUX)SYIUm70&i@IUwVBhp$iN$3KIBhg|zQ@7ee9V=EA{I5;?|sv>3s7%6$T zyDXhAbx>iku_AkD-W&L$F{*P{`M;w=T!s`}><|t9vJ#uG?Dy|>H=d<|q+9t^YP*vS z>S1_=JN7y+_(4f`wDc}UYlvs#02N4}^u*rLA*6_^jIpG!lAzuf7Q^npgl#Q3U+3Cy z5N$&h(&q~*On(xRl7wQTo{igi2v+lC?H>Z@s~4%D%S^d4QJG@mWq1g3e6UkT{J78D zGH^G+ktr%FqPM@dg}^j~QPQOm#>XH8`g?ZvoL;mPw6ZYT6ZvVbT#k9&@3QmXc)@*% z?@n1ii`GNx!^40tlbPHV|9?HHm2T?pE$N#39=8Q3)=uqrwT->2cSE!L zh7h$W-PZu@u9&z<(hx@LzzkVnRb*>xasjLUbw07i?ALC&OETxHc?3kQ`5*>9WQ56NaAyfDpLY2D9MNmTr5XE(I*a{ZvdOv})a`>9;t z$)R!L!?vKyj_g($jhI)juIx3zS}G@Tb=;`XdZv&z41LhbXeP5mPG6@s(h^SQGguaz ziPd_=Rl7j;_e+)&^o_F~myf_@sNDVmBZ`a-0<$lXKVQe{P=mb|>|R=*bM?lJHBBGk z=ql-`U?TEg7frVqmEpqr`pAx+UjPM-<|pXnT&P~(!697+?6TDb*$_q#uC?Y@6$F1XK5`((v7qUO~% zKf*-%{y=LVM!&C*FX4)y(vj<8E42=h)8xd2kJ}WMPEEyYV$on>)HRp+3YDGYGR|8n zP8hafg9h(z>6-m_+@_|cb|5AIhG=Nx6F$W`lZjWuQLV) zX1BJ&t%@lxrej2tXm_XmV{_dm4C2<=ZpCQFGBozl_-m9HmNFCYdHy1hm(jD>1a=Wa z8YZ>`>6k&Wx?-*Ckb$A-?8Tkcdv6^&CcO4hpg~-b#=)cqH~jj z7sk)G%RM*jP-nqV)`8SFuB!uu`mfyfC!c~&3t-|gF@_s-%A~Elm9*Pu<}POdXi+_#Ac^|D1lH_(c~RJPl>? zIyX1|kN2QxrsUK;1zX0Q>btCG9@jDIZttfdTA4l3GmmaE23D5alH%BU2V%5$iI*m0$&bE)JHVIS#24q*B8KtC%i;F4w zAhuZK8YxQ3i}LFGIoh=`YVAwQ3Y1}jwqFf;S-WF*zcH1LA)qSv0O_SaM+IIOBH=%x-T_xpm1A(wlfj zTXmRV*5F2V&JW0g_~|R`Vn+uG@5g{1*;a)hzGfn|8|3DXe=ffTR(^4(bH-$3#K+Uk z=HWvJSJzuH1F70vU7s5&?|7WsVyc5(N!t4T;-b#W=Fn$4St7j?6J!IdKVn3muI+#h z@Slhn)d1F2t@%`bqtc+ui${+hi7AcV*Vj~2OQ`|#)p7HpvKpbb_S&e^K)Jziy5Kwo zMI84EIztsYbg(}*0`@=tvHSB05rgq;Q)N?v#C?LExTY!YdlL*1C9v-f@kCU_{*5d< zdjqg3aEs9^Jd<5X%?F%8JDvwFbw_*0brE<0r;sxz&??s$S5PeVv<8b2ro}8xPC)P6 zZeOD16i{hG*9}HieS^8%X^LS~M+^fSV@5_Wb|jI)r46q$;5X2H_=8L9uAjs7Whsgk ze(O#X1DX}62f#7H{PsNvyLWqQ?!Ddn={P=7p-xL06aW|tyeXjJY4r8+AeL!3HA+u< zCZ)rp14=63wx0&YwM4KDGo1r6J$-}p;pkj|-ZsMZoId6!1v?u%eAi`_r5{l(ouG@E zG}F`7jr<&n)~4VxeA)XVGv|B!`?sEkMlc2!!PqOYPC+9TVM^~@P5W|(bUstVqJZac zxlC!ACS)z#O~R)%nueiP(LI>ll3?fKTu?DE?0x}I zjgMT)-N`n^j4Z@bN@fykL@R%Ee8l#UB<&D5pfAG4hM^b!(8}2_0tDd5>o9Bc1j_cb z+3zEJ@S)`O>m2R0U7dt!M=u3R_j-0B%8zG3o06qW8jj=;H!+dQtWMD;PN95qk~Pcg$4Nb<&XZPe5<4`c zmCcatT;crhFKKOKy?J|p_%7`($udo*J`5ZD?$Y5!JyG}#`F0F1vkjfZhc#d+_86Ef z^N#U#!dHze#Lk|I*h;gI>5mK!I{yaEhot+>x51x5l9H8~iQ4?&cYx9H4w?v%3#2{g za&Y__e1(8C0;4!`t9z}rkT`s*J>QbWJ6>giCMTaH--o3XJ!BCQLR_rN)_#Upy}Sw% zE`IG!Vs_j&Rm&R97?^Y2!D*sWx;i7Yr+PCW{MB7eO6PmoRaIYCT~s6=t2F(_@Nzs@2uZmz`?-_uQYS?FBM?9xkB0p6Hn&&X zi}I^MYlt>!&V66PcVA_oXFwOYs@wdKXr6}kv!&fk_gv$KimhnrR&KYKg zV{(UvTFL1A;G%#xa@tGnV>iy9VnWJKYc$}l3p!w+RcZFCSJ;)<5APUJ zIvO7=FE5Ie-V~M;98dxweeJ%-LoCqHDZFPvW=r|P z_2UB;NxzUC<6zBl#~HJNLfM6t*;pOY)>NWRO`YBkmhFN5z|vh$yxQN}pCKYt?&fX@ zY0WT9S&r+Qnw>VHd8pb;A^H{0V1;2xbN^b>Q4P6YIMfqZ3rP2=yhgohX2$ql#2Zj- z5jG4WCo|(+=`3X5v+(JKT%D&;Jr~}51Liw)7YS;(Q=6C}ixXWX?0{vPP>b%1g;n zHT7Od2hZ0l6ff0|(7wW5*X%Fq@$|#xV}aoP53uWDy6^eFt*(PW^1$WUkkFL#2=R751>Rl~7*pVI8CFW9zKg~O9Tj7^pdeQ-zyl}kX3n38v} zG4c#m)uSEi)UCgWcYTOzT1&})2A?G>DUn&LD4)W5veEBHlD2RJY4uY9KocWC+d!lT zNL=opd&5#w%ULYu7G=|V>q*y2R~1nm9ftD|+`$10FVeD_NK!o$6H~hCr09Sl3hT~( z=;Z!@Htn(HIWv)eRE?J0&{_1<7ETYsYqwxp7t7huxwMwNo*=a|XivnzCj({};K>86 zSa440XEEElv1|s0;>hKF7Pq@eI63KB&a~Q#B5WomenIz+csY~FSXSZUWqjX^@QQ6& zRMpkhGfu9o+{j}=Suh}q+e7hI_6a<;owR!AaUFu+)LD;o@r3E(cQiu)7>3uis}9jg zN;Q!;d7>+lcm@0Y07yhMQ#84g#m%so-=SpX0w%(;=B}Ap2EW-Ou(chJgDf}DWN#7+ z6C7E?#b-ELO#_cq3=D7I{^K#pq|JQm!>K&?`a{j9S-{xvNprp=Fg%tQK^Yl^-6;C< zAiX+XSmHpL%}>VE!{T90Td;-SK_rQnOLWGXlkB)U?WB8M-(8Ea()ALZF{-DL;rZ#| zeKzm6VA*Xt+ijA{mQ+;Pt8oxm`9UU#ars6l7Hescpe6b0TS#JU5zWVQ@@jd}n+mf$ zUWeoEK@3A0^B4l|(@pTt!N^e{ZjQPKrj}JMe#ac2M_+!HBZYLHVkfY@>vz_5 zvqI~uDJk@O)E{@h8YCV|Ki(Mu6tmz^WTQe+BT|rCzue*CbzvNNYfG=d-#U<9E9}Zx z){6$-a=Lpx;zc>U{`Xbbd=47Qbz{4|dbEpRS}*32q`o_Rha!UG-^QCTzZEX+aK#M+ z)h1pi@;Selmw$_Hvj)qNJ4v@CN7qZBpqhwz3~g)I=HOFu1{Z=kg`xcy#5!(yZv!wy z56_{tf)#i@5A7D#)g8N}nd>`^1w#_-CH43VDv8}|AQOXk+~(bHj1uo)Uvr)j+n1|N;I?z;>*1_@Oy!)4z84PwHD_rvy%rwiVTkp``VeCn{I^fx^LU=SgF|E(pq=MT(o?gu)Rrt3 znuD?keDI@SO@SBv5Wofe-!we@8V}*I?(aKiR6ZQRcY|?J@!-e;puR6n9^c#F51Y6P z^>DXToEu@a%9tW@gKS?5cq0ew4H{I~!-t`qwE|3{yN0Ro&u!AmU~=Qr%~hLX(otF- z!7_^T!aVI(;m#tcy%%*U$U^Yb^(x8FpR+4_w|x94b7>iyIgdx=&E++w{KjYz5{0yR zd7o2c+l>Cow2TXIjgE{QqtXmx${c(mDN)RxifJ2`YENwtT)RZO3Rc`cvS0wa)r^FV#pOV*b&!q0B-z@RrhMca@4of*`uPtfUr z)WVspzSbqb;K{S!7HZz!y=ld9jX5}DYgGJU`8}xBlz?h>K0XYc zjH5IgDZ4**+hdf`ms)xdbFl$^L7IuNmzNWbpRZh8vI?!7D7(>*r`}zC;g)p_#c5JL znPWwlpT&JEMXZ^RM|cYFP=AmRmCU*CB z9`3+`Sz0&Nk#LDr>R~8Q2e1dD0p8!ZO9G0UYdz6; zxnnHEKiLGX9%BotaWw~BKEvQ|aoPdchD=hdM99YDQ>y~FP{sv67dh!$q&PAQ`|6*+ zOreRIRPEXP%qCWOGW;)b{l0$vDmumT!_48UPZrY5 z1GHkCK07dlrD~TLf@vt7Bf@$L*BVdRqn3g{nfq3|MmTlFAopOFX%ea1R~OoK$uPVjzF7d>(AiO0fQ-`?&; zXv+Rn=68b)b$lT&N)(8%%IA!}NBzactA`4pH~@b6gEFASc*mwl871QDKo$DN5|&gi zi~EsX8F(Hu+3_R(I?|oah2kkIj!Ktb3LPur4fyQ$fBnK10FHn{Od!u%MtY4JMesk^+YGU4Qy&+<)<-)U$d)-E^KCLr$MZRaU59i7p7`=KV-o(sV{z~N^^ zON17GUCcD`binS={k71_L`zF6_f*P6uJ8H+5mFv^*L$M}Uy+3cIY!k-q@uh^INzYG z!7+4n5=6!A_X;ne)}T8QxcQrrH)Gp<5xI$pq#f!$lMo2K{?>qT7pTqx7xMm#3W7o@ zy1T{XA9LuQ-+pa24+2Inp}4xNjo|&xu9E!k^&$;EKEC^J3k4UzoIEs)axmf=lIG#5 z1ll^5dy_!qT;s1MZ*G}i2$;Lvmzxj3laOqX?3WbTiqkO)bXE8D36>~72_RMy5_EO< zlrtg{tJ89RpEV=gJ&>*uLXq@UMA_7Aeb;1EY#%hor*U^Mhbl}Ot@SS&9qLW0 z%*W+%Jl+&i>UoC{|8h+rOv{Hbmy4Y97qhRJ#~-=$P77~k2YC-p&o4zaSty_;4^4I@<1x^v+CI;|zc42~#FB_VlW*qqy+=b$3tnBZZhI*)W-GldZ*W~XoZcu*q^VAX z6>8?qSNVCk3O~Mo{|9?pHq+2x7SOnUEQm5U1p;g$YyIG9szc_d5rl7d&JGv}duG2) z{r!{s>no`T<`9_OnzBoipCJK)eV9BJ#Fpy3`q<=VW}FNJXMmNLi4V*Sf#3jRwNWf? zFQ3bq83_Z!&xD)fV^^|DY&;Q1!O19NDQnL2Az#uBjFD_g-1x;v5fc< zG`*8w=oSCMT0z|zQW_IVPQs*C!L!i3kh^Lvg{6K=*YsAd{3E&dH;D|6_0_D&l$ZVu z6>rJ*5CE&;+ngM1@oJ9q+>9CJlXL)M&` zsM;gx#S;Y{tXa0(m}O-;FC%He?xIkM?UK(fI1^iaPf-xTk5D^L`%$=x2)Y!pAIfjA z3>+A|j?cZf3?UH{6COZptR1h1+K`7n3tkBh4hDU!(h<-vF@&-ZBn_@3(4g_@9^E6e z-<{pp7n5YLaMg9XL5GtYaU?{Yb+9EtlVIR3#Df+!EdMcHQmcYl^R2I%4GdmiZ5O!c ziA!T}OM42;&&IQ+kNaTz-2?}D7;&K7NF#8OT>gLv#9amscQ%5F<0g?zl8m2}4ZO-R zMQysDUh|7JXZZ!qh5i7vaX=qkO9-2oo9io@Ji{;!KAj#RCO$Qkr*7+j*bkXnunCHJ zrIgjubG8xY>ZbMCEKo)9a+`%PMg0w&N$;ay*dq?SV^nqvZH?X0dHM0J+h2L{G>MIp zLC1;|ihzk-zQ+_;?H>TYRPG4;Dmy6TV~wxOl%DHJ?!Qb8@G={V#*KCgKtu#Pq8!!| zfd;g;sGyKJ_4q2?vKIbj7ZhWE{`@I4Qg9fdJ6#4iYQV}@R<`W(=Q`)-h?foCxJ13~ z!XVWae=z@J=^g2529Gfz|CcgCt9K9);W}G63+dUAz(8=KQe;A(RbP^yRT#X(HnJLR z%aw0v3{F^8JCmi#R0*85D4x*yNb4}ybw%RViYneoys{KS2-!hMz`l3&Rr#lr3YhdZ z)_7aT3KGt#iJF8V-dU-F!H{}_)%o#5kb+oRwO%&lGYK6-KPs7=U3zmL9Q>CjTqg5_g*nOB!wxRj$MbV2M zuS}8Sd0E_zo_W+S(IK|m)P5>hgm!8Ny)kr?yla`q1ut9|o*$ISM$A$(_pD?X@a}z% z#opc=5}cb4exD<3i-StLz@K+^wG#{K#5n$2$i}vR|BLb-)gFfS^z^#jq-R20oEe0O zK|b>T)peFpQATasCI_TTV(4xO>27K1P9=trlJ4%379@vM8kCYQ0fC`Gk#0~zKqTbd zJkOu^{nq;YufBKXyGVFlH@Cf|ps*&4mZ!KU zE?fo_2>4JEpg^hLzY}q1F#8L3gpyLQgL?ZFUCsxAF--R`tUyK zB{sjamk%0n(u6=HP!_C!uRsDXNpXKonV6jDE4!+d1TSw6MS#GAtl9h%Jv)tP`}Sp^ zLv7xR9?&uY#8-_R*?e~hz28c5)`wF5pFL56U$A~2#Os@H${lHfZ*(LUwa8rIRNX0?X|qm zqrr{vKySA`Qv`DRTW3YW2&zFFG@$05JhQC+fV_&9@){Uru6JF#?+oVVKY{zchfWEl z+%#0w&%E|;+@_Q3Vh3B%JLKO^^VLfLgch$_jz@PLCy+HLmS>Dk+LpuxmZzPywa|l3 zu!;fI-$*=|?*gl25s5;5m0O?7RkngwSl1%O2QZn*|*m)lgsXSKupi z*gN{{G3ZJ%z%^#fo=6Eo)>7mwZg}g+2aE=r0X|(8pM6CZ9ao(_8iJc_X>zA3SDx5{U15MD>vFJaM@EG@= za{KYzC`%J!4#KP{wkP&s!uFylu<58rr}(Em=H0<}p*CA^_I4bk*LT-m=LTP#Hpzw+ zeT8*!^dQL=RPoVLWK_s&HEnbvZazL_F(c+(fyQU+CMCevCjZ(51FMwX^b^-FIr>N$ zKdf!)qAN-7G&-t397-ne4}+=uYG^9%;;aWV_i5r{w-Utj_w-m>IRMt z?0o@Q#m4ULaSDrn6xDQ_bjnmueE#iD6elF5gIbUlgs;5v7B|ndqpOf}C;;BNaeIud zOh7aI`2*Jtw%TR3)YusKy{{n0V@}QwUR(-1JHV9TcYCFxtc*Ef*j!I8>|On_2=XC4 zP++7fe$Ri;dwVn!D7)Mi&1{_F3H+PDo{o2c03L2=Le^Gh0K^`4rva2Yq!l{1=H5^3 z^#KC^{RA7F+RC*_E*W4ju&w1s>sUj0AvtI`sDsl(a6g4#SUsqy5pNrcjA51ZTiV+q zr(jX^$CR5{+Z#iy;V&~!fY~5;C(qlJTm&BN4n{bu#}YMY^9yY$-a-~r?|Yz}$ihTU zBd@KJXlg_}6vbxbjeE!+WAgM&)brI!ScWOx?>%`>s%T9tiX_qIWB55CiYbuaqz(;e z5JMmvwW9`3+E~6yhPg_Vjclmdm1=4j&I6D_zQ8O{|K4Sm&#NhLHsclLCL&K@7U3D* z;J?qVka`(%Ju)@L$H5V=DE!6ieo0HeotL}e#h~i>_cck|5Ta;-r`WXC$d%+`o@^k} z!x?h6^=L1-t?jR9$o(HV<;MY)zTMj1O1W9yKM&@x?CicrH3+`*E4-HCY(hh6(0a5N ziR{7Dr$Y|X9e}9>+T6&Ba`N)*6;zZLI1MA2wA=tX z>DultMu_Uz(t7ftcEj>%8JbGL^GNa{L~*#QJD2`^mz73owm2sEmw0qsK6J_5BI% zL})j>0~rJNDawhm#|)O%Fx4lN6tgNF=AABwIVMCbz`4p&sj*C0^rJKbQ{L%wA;EA^ zzZXcx;WvDtg6R1QBrp@>A3m_S`gV)jM5;BPWZ?ZXe`1AGOIt}yNGNN2eRDGtOMxJn zOjBcu4{*0gTWHs2@tatxU!tZH2nIxM*6)wq;mB!vwAKC_3qb~K`O zp6Ois2~75HTZo#Y06d#Yi@-3>ISVx>NCMCc0E%$!%lGEtaO3?z zY>f8R2FXph*v7&5oC`j3jr_QZi6wXJ&^VmG{OEWZ`;kYuo`vQwA--U&{KOemf|ZYU zYxc6`?{4ZKs9C#b?4_md`4;m zH~Z#ZF$0TH+If&R8JraC?d-aME*=>fSz2nd%H6e>q@<`=oQ}Ql`_qY>Pj4G|#sPjW zL8L4yY7k6)LTmyH*LK|`m{W>KmvIot&9oI_7Z*Nbb7ZUi0RggK! z6Ih)gghDI_OASHN?-Xd6+BTuCx)Sy?KMz z9g0t+c>r5K zYt>}&iNps6DliqwRlwj>9)zl|FF})XNdMzUNjESfm5c`rgl&{oS7D{eX1vh)0@f9o zRt*3F{5pCB9Eb!#K$c@eehBI0KDE~@Pem6j`~;U?HxHGBQDZ!d(WDmd?fcI@tMJj$ z+izM{^u1~vy_JVE1*zKA(DrYt+Naa8tbhj zB|!q7sz|`xV_ELWZs3lZ7Rj-)c;~V zCL$)%+66dP$AvCQj^WA4Nl*bWTn{XA37_}^6CMa20ms_VmoIEj8Bu>mEg-j|^v~a) zV&o#(a=4&mux=sDlDR$^n8w&eSUnUm3gC{w9EENeZ$7Pir!wVGBqnv~lH<#o3r!vw zdz5_rutrPf2?4rCAfT=BL<=hnvZ&`gWI#+t_}tcd0D2TW)5;#%rehcX78jB&?g2yr zf=}UWW%Y$+Yw5zdE=+FAY;^px@XgzOJ{SUYCh{o-T76G9!1L**qpNm<{o#*F5E4xh z6f_>CLEcxPxiH*!)850{%@4T8o(l2pf2*Oi{r#2bm6ht@2{Y|NjHs^2FEGuk_0OTt z;ZPE|X~jm!yv-Q6(DOet6=T`l>02&3sdwwO$T$U{(}gpce8_$-ZQ6|LY5iTzj6Xiw zp!?sYDX{3H@R*SU+lVq`4N>w!F;xzzFTl~(_Etz#VDK2^?89_`yk2@R$nzfhIQc*8 z1iy#w&DK-G9urwJFJ7b^;&swp<4;sH64xfxTS z&?<6L)*TUqjfvU%dKa$^|2%u0$EFQ0w z^m5178+YE4Cp0!jmzQ@H6v$Qqtf)5VX_E=@TumPY>CnDAp4q**zBmZLxs>T|SaLn} zUhv$hC=3RN_xtLHsj=02Qvg-Fr>a|Ibs3W~_Kes>#KGB_3Rw5Z$(2nRHmivXb4RH)(?Z6-V{D~b-FSQwg`nzlN` zzk`&@J`a6YP(V{jbDr^`1XQ6wtfb6~Ga0f3pTx_7J?brT z54jZ)FHR0dB3e|!Dp}2=*WsX#`S2AqdyZXU70fG_!{9?^DHa$y*1~#4VjI-5T>b1s z)s5Iq9ZXUILK5)5$XV6_PuiXtd=hij6AZQ_CQb*K^7f7nC(JbB#oWv};LFUl(s0?&3$Yf>cEitP~LrXJEqO-Cb=0~5IoFlxr%ktW5{W^X) zRoQYMb06BhHJ>utq5Mel25npbB`_N8j6cj5$J}0z>DXri|NEx3?>J8EMF{9SfL_|B zbU@+np!@sdpi3}un&FE%zx+hEUw|J7UTn(k{iGUePgy0WQr0AzHj-l4oAurc)qOB} z0VJQ&U%Ken#6%Fc8n9#@9E?dz2O%)+2+9}2kx|jsWkElimHaykqJK17MLRpE`~Ye* z$2AnGm4Yh&9V}4a7YSsIKnU9BhZk8hfmn80ng?i4092<@tZFGC#y4$+vPw^g53Q9E zx&u?7AC7VfZhgu*KcpD(*gv7fEAoZU$;x1~;^0xRo^rhqiy*GpXv%#GRdMh0G~}sSQac z=(BgK4)aG#T5!;0D9Hd#Gw?qvDq0hLZGnSNxiVsr%atq^hfptSy>lZzt1c3nICyQJ zC~YSM;7<<$eIR+H#K-I0nVRXC1=ZyGlH%7NQTZ_V;6E?22yU9@QZc?CdI$UE!nhM> zEW3^g7=lF20E}0>jO4RS2OuQ@z9d<WZ8Wz zdV{{Er1gC7lKPv^Yr~Ys6tuJ;#;u2YuOcIyXjl z%kf*RpAF7HVs5fqGx&VV%FEL#t?mFU;<;|UjMa&ui3#*VJwgQ}8fDkY-t-Il{s99< zhb*?Yx4}RoV?d<hrKn@1ryw`(1AJ&MFNOsN?hC$Ii;Fhf`1?w za|3q56o!(wU=r2p^U{>xU8h5on4y&w|HA+N26|r1A|^ew79|Sg&BIW?v9o-4iDzC6 z0xkVkVFKHYBSbfFdrTv-AyPo6ZaohRHw3iv@%}(?Pz1rxYir6F@Kd`kzu6 zn0L&NO}c`F{lLDj3xE+J*$u-nKLzc)wI4vUHMoxWx%FoFTZW$i`O}Z0U?-`u>@G<2 zT4Pk8d?2s*^?nAM*;=Up22}97a@tFKpT}s|7YpBgj`nO^Q_KOGMzL|$ldNFcQqIZ> z|4AU&urosY__XN=@UiNrgRj;TT1B8NR0~p8JxFO(vFCuZVkHrehk-mdjm!<>=gV6t zVZ-Vj1>#eCTSr15fbNQDMl$pXrAS^HSy>g46GMftr8if=U$?d@H)wl(G+n4g{`U{+ zR|@T5xfyt2Crw2WpZV@xqDkl?AnK=W0qQ(JqHI?jIV*_ip`LiY7vOPQM~|qM$-AawY;#hchNWDkyO`cKntq z)2OLQG&x!~K*_;bmi%pQuG{=xW4EZ^|0MXwsSKr%yfRA{Ave8CQP!(^Cf{_Hu{RU? z+S=?sSQY2FHpS`0S@fc8eB{r$Z}HC5rC-<~CpguVyKN;$>EV@+Wta8Ve0VS55fQJP zzs|E5*yde8qlfVViV+ZiwN`Io_U0U=4*rt0O}~6UjNP1HHS{1B=e3qPOu;9r;WFAC zu`ecGd`VSyT3BnQ6wA1yUlO2l4nr9IkQ=cYv0l#N_v`c)vxh=VzpBgY7RNG?cecCLmyt=YMb_Q$G{-5zRJYXFv}?ToAYx2!%N6^)U|f z)g4RpIIJv8kQ?LRjMFZm%1J4x|Jal_++!@$=UMd<97atV(pgEfA!;i zGTk5G&;qkG9HGeVbExQZdO7cTE4v#0)Vw{JQnegssV!KFK(IY}wS`Bxy?mlSOXjg| zf&+=jS%~SUOZFg7BpoP*qZ7&pG*bsm*k$?$c+ZQ%T-zvq)rtul#wZzLIVVq2xmB1J zuDCRBkI<^IDxx0}>wwQ>3_@9h_rE~j(tVF38Y`y)vj@I-#oN!BdOW!B& zixv;Vl9zkMgpIyHU{6vsp9a1^ zGwECYm`fCAwvyHpwQ`Qr8QACO-*~ip{Lg)eClM6)XOkqhZEv}skHyFKruDbJLL$ov zw2tFf*SDX{wB4nYXg`49pA!tsicLthLI$8MHxf)0rC*h|wvY5)>-5*@k5Fu{X{1rT z_>fBHbNweI`@KPM)}yq}etA~B*bntXH1A;h*mu_WDtHq)y1ou)5mM*J4d-cB85=EI zwumQL`u2t!y9|uVAv;?f*nLu&D@d3wq;(?k=xhQtaahL?qL>w#m;pNxMyZX8E2rN9 ze`296LRtw4WDRq9QSt z+d1jU+BXiXV#Fn0d(c+D6Xw(+z^K+Iq*%n-Q0RKb(jsCE@gV6UTx?}UY6h|3({ z7P-4~r9P_KD`e}hI`|2Ge9FNt`1tNcb%4Nana#Z&a(jn(6>n>bTHn+QJ!IdvuzVZH zCtEv8(sA5g)r`mbWh9RjUqxA@eO!bD#C1Dk=bVndj#y)uZ3#;iV`gZElqUMFb;-G`7blA<`frBz(I?u| ztxdlO3{}q6TVCo_@%yKclC#_@$DwcqiFPJYEofj!{VA2%zqXm{j|#67I`U9OKZ__f zd6%BN*s-bei_bi+m7IcotFe}mAQ-knelx!RJ3Dug;7qqRY$D*+6Fshl|FIo1ot15- zp==Ry@Pvc?7=0KCTeT%Aq#Y-2QlYFmfKyKILs9U1gA?(5YH5eJ;icCmp}E+5?Ro~b zN?)3maHAnU!;CTiFyZOg3(`@ZPQZ}#|`tH(B8kn#&2NR9TW*xHqL zx8aOC=|%4o0>y8G27`TInSm)BaJks;j85|3{N0l^9j%tDk}Y|fz7J)>C~OT$Aq-h( z6(Q?u^4?^ZXt)d1?EW`x^<6Al1S&Y zC}V%BZA!VQCP1xyq?r7vD0mF1H}7v{$h;qF)Q z;F6ZwsOq%h(~@z!uYLdOgl!^7jC_KQfk`CV_w%cj#SY&=?RV6kGE_C^v6*8Wp$VB9 zC?vUy12oE98NTzg{}_e^T@C2Cb@M(iofpM=DEks%;ZV;0;765Nf{wFmG2IQI9LZ+9 z{!?ns79xThkbb6RtNK`*1!0AMT5a^SNOq(dr&L(ZByx0vMf=lukxpd(C?44fKEcSF z8N@OT?a3ppXABmGZL%Z*Kc9EWAb$`s*Z!-&ZRhrR%}QJ8*Kg|G!oq`9tj-%F5AyDi z9`xvx+ul{iuPg*7Ys|O89D;B*@zu}@k`%t%UZ1SU5AURou-C)jN$@B%^XB5M>VHh! zqVU@|4F4V{mgHnV@fvsPpko@|gcaGt!ygn>F_m;{8@LWqA{_X-RJEB->@P1zK-?3Wu_-;7M@@CN zg@l2z-E&%fO?eM#eK{b~L6$OOwhDU20HbA+MS z3*lgl-qqS0cvqX1n0__t@x_mitVOtB5f9&Vt`uIw!zXiadFh+GRiiru`PJ0O_t`}+ zEcHe2%pDsm>iSY6tN1$XG%`T4W@JJ)U7Yj@357Mj7Z&fW3A2t3BJFxQ0@@}`+0|Q* z$;rBWTydnbY(_^%e&ZZ|MbSYPHpWLXn;L9ho_MHXthJ6?}27bFa z8Xg<}R)gp&hFDFB`pm%2Qjc62gksWomOkUFsxOJKFuShFYx4dvs%(<(wNmuP@=8nU z!>k1MvEcr14Cn9jP^m4vz^=v2$7{Q{vy46*PlfD|7sw^hJA3~)@%*?uJ7g~m_QP9w zA_ALQPJK3{TFyc<(z0ki7$vWZ{ltPHV1i7qFQ@%S$l)0ew-&xwel2PS{>?!Rj7Fv? zVp=Mw_8j3OU6Ie7LcWZPJ~zC2;rgLV-u>ce%Gj8&eGrB!a=u)iPG>i4(&PRVe*2>3PPy;5qbI=+ZMSDdDN&b)+uQ*14<6Q^#bns<>v4@XK_R@k7}X0}y2z&iT1 zgG7HcWu9Ub$^W!AUtBKOpf20YTx&8^{D;Y3{mbi>poa2c=*3ZZqt3UdOj5+^xZ4r^ z$%5}$IH4cI{2M!)n5dl9ns0s$JG?B^kXeq#9NFQKe(#Sn|5K(CMP379v91J2 zxHNmn_CoZ`tGURodJ>v{X-CoHxCnydAvHb=1q3gdD`otIuv2rjGdynXQ$-{^Be^CW z1zL5k4=c?2f0fD++7ubFousX-ceee&o@C=dMbkx3+^XJ3tKev}~z(Pn&KD4Z7T zF$LDyP@Qm#cptkeEA4{TAz^8C!^?>lq}gK%{qpv?@%Z@0XM&(qpHl6c*%PX{HG*pB zBPeaVFp=kLBh9WRN*sK4;Q!oSRxt-I2T2mneEE3*WiZ=+HJ|!jnmJ<*_F1W*cbZJ# zf;qO58Q)C0l{v=Ofi4QOL6%;tUuS5^vg@umk_3u=cr?q`Gf5$bKGHmbsMSa`F>*CQ zmPixW6hboU;%1tc-Q$I8|10?yjEf_`um|C`zyGONJ^JevsBj<=y;i)r$OR=y;CFKH zbUj@7@44gQSn|KFtuuf>;6T*y9$o>qo&WWd|Nm?M_h0<)&;8$P|IfSp=fv}WuYu+Y hcr*B`je8UvB>zi>kGZ|$u1MgQilU}Mt(;Z({{UKAqd@=w diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/images/encoder_attention.png b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/images/encoder_attention.png deleted file mode 100644 index 28d7a15a3bd65262bde22a3f41b5aa78b46b368a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47539 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

@@9D#X^+{ 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": + break + new_res.append(ele) + + out_file.write(' '.join(new_res)) + out_file.write('\n') + + out_file.close() if __name__ == '__main__': - infer() + train() diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/infer.sh b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/infer.sh new file mode 100644 index 00000000..ffd48da6 --- /dev/null +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/infer.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -ex +export CUDA_VISIBLE_DEVICES=0 + +python infer.py \ + --src_lang en --tar_lang vi \ + --attention True \ + --num_layers 2 \ + --hidden_size 512 \ + --src_vocab_size 17191 \ + --tar_vocab_size 7709 \ + --batch_size 128 \ + --dropout 0.2 \ + --init_scale 0.1 \ + --max_grad_norm 5.0 \ + --vocab_prefix data/en-vi/vocab \ + --infer_file data/en-vi/tst2013.en \ + --reload_model ./model/epoch_10 \ + --use_gpu True + diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/no_attention_model.py b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/no_attention_model.py deleted file mode 100644 index 57e7dbe4..00000000 --- a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/no_attention_model.py +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import paddle.fluid.layers as layers -from paddle.fluid.contrib.decoder.beam_search_decoder import * - - -def seq_to_seq_net(embedding_dim, encoder_size, decoder_size, source_dict_dim, - target_dict_dim, is_generating, beam_size, max_length): - def encoder(): - # Encoder implementation of RNN translation - src_word = layers.data( - name="src_word", shape=[1], dtype='int64', lod_level=1) - src_embedding = layers.embedding( - input=src_word, - size=[source_dict_dim, embedding_dim], - dtype='float32', - is_sparse=True) - - fc1 = layers.fc(input=src_embedding, size=encoder_size * 4, act='tanh') - lstm_hidden0, lstm_0 = layers.dynamic_lstm( - input=fc1, size=encoder_size * 4) - encoder_out = layers.sequence_last_step(input=lstm_hidden0) - return encoder_out - - def decoder_state_cell(context): - # Decoder state cell, specifies the hidden state variable and its updater - h = InitState(init=context, need_reorder=True) - state_cell = StateCell( - inputs={'x': None}, states={'h': h}, out_state='h') - - @state_cell.state_updater - def updater(state_cell): - current_word = state_cell.get_input('x') - prev_h = state_cell.get_state('h') - # make sure lod of h heritted from prev_h - h = layers.fc(input=[prev_h, current_word], - size=decoder_size, - act='tanh') - state_cell.set_state('h', h) - - return state_cell - - def decoder_train(state_cell): - # Decoder for training implementation of RNN translation - trg_word = layers.data( - name="target_word", shape=[1], dtype='int64', lod_level=1) - trg_embedding = layers.embedding( - input=trg_word, - size=[target_dict_dim, embedding_dim], - dtype='float32', - is_sparse=True) - - # A training decoder - decoder = TrainingDecoder(state_cell) - - # Define the computation in each RNN step done by decoder - with decoder.block(): - current_word = decoder.step_input(trg_embedding) - decoder.state_cell.compute_state(inputs={'x': current_word}) - current_score = layers.fc(input=decoder.state_cell.get_state('h'), - size=target_dict_dim, - act='softmax') - decoder.state_cell.update_states() - decoder.output(current_score) - - return decoder() - - def decoder_infer(state_cell): - # Decoder for inference implementation - init_ids = layers.data( - name="init_ids", shape=[1], dtype="int64", lod_level=2) - init_scores = layers.data( - name="init_scores", shape=[1], dtype="float32", lod_level=2) - - # A beam search decoder for inference - decoder = BeamSearchDecoder( - state_cell=state_cell, - init_ids=init_ids, - init_scores=init_scores, - target_dict_dim=target_dict_dim, - word_dim=embedding_dim, - input_var_dict={}, - topk_size=50, - sparse_emb=True, - max_len=max_length, - beam_size=beam_size, - end_id=1, - name=None) - decoder.decode() - translation_ids, translation_scores = decoder() - - return translation_ids, translation_scores - - context = encoder() - state_cell = decoder_state_cell(context) - - if not is_generating: - label = layers.data( - name="target_next_word", shape=[1], dtype='int64', lod_level=1) - - rnn_out = decoder_train(state_cell) - - cost = layers.cross_entropy(input=rnn_out, label=label) - avg_cost = layers.mean(x=cost) - - feeding_list = ['src_word', 'target_word', 'target_next_word'] - return avg_cost, feeding_list - else: - translation_ids, translation_scores = decoder_infer(state_cell) - feeding_list = ['src_word'] - return translation_ids, translation_scores, feeding_list diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/reader.py b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/reader.py new file mode 100644 index 00000000..258d0420 --- /dev/null +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/reader.py @@ -0,0 +1,210 @@ +# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Utilities for parsing PTB text files.""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import collections +import os +import sys +import numpy as np + +Py3 = sys.version_info[0] == 3 + +UNK_ID = 0 + + +def _read_words(filename): + data = [] + with open(filename, "r") as f: + if Py3: + return f.read().replace("\n", "").split() + else: + return f.read().decode("utf-8").replace("\n", "").split() + + +def read_all_line(filenam): + data = [] + with open(filename, "r") as f: + for line in f.readlines(): + data.append(line.strip()) + + +def _build_vocab(filename): + + vocab_dict = {} + ids = 0 + with open(filename, "r") as f: + for line in f.readlines(): + vocab_dict[line.strip()] = ids + ids += 1 + + print("vocab word num", ids) + + return vocab_dict + + +def _para_file_to_ids(src_file, tar_file, src_vocab, tar_vocab): + + src_data = [] + with open(src_file, "r") as f_src: + for line in f_src.readlines(): + arra = line.strip().split() + ids = [src_vocab[w] if w in src_vocab else UNK_ID for w in arra] + ids = ids + + src_data.append(ids) + + tar_data = [] + with open(tar_file, "r") as f_tar: + for line in f_tar.readlines(): + arra = line.strip().split() + ids = [tar_vocab[w] if w in tar_vocab else UNK_ID for w in arra] + + ids = [1] + ids + [2] + + tar_data.append(ids) + + return src_data, tar_data + + +def filter_len(src, tar, max_sequence_len=50): + new_src = [] + new_tar = [] + + for id1, id2 in zip(src, tar): + if len(id1) > max_sequence_len: + id1 = id1[:max_sequence_len] + if len(id2) > max_sequence_len + 2: + id2 = id2[:max_sequence_len + 2] + + new_src.append(id1) + new_tar.append(id2) + + return new_src, new_tar + + +def raw_data(src_lang, + tar_lang, + vocab_prefix, + train_prefix, + eval_prefix, + test_prefix, + max_sequence_len=50): + + src_vocab_file = vocab_prefix + "." + src_lang + tar_vocab_file = vocab_prefix + "." + tar_lang + + src_train_file = train_prefix + "." + src_lang + tar_train_file = train_prefix + "." + tar_lang + + src_eval_file = eval_prefix + "." + src_lang + tar_eval_file = eval_prefix + "." + tar_lang + + src_test_file = test_prefix + "." + src_lang + tar_test_file = test_prefix + "." + tar_lang + + src_vocab = _build_vocab(src_vocab_file) + tar_vocab = _build_vocab(tar_vocab_file) + + train_src, train_tar = _para_file_to_ids( src_train_file, tar_train_file, \ + src_vocab, tar_vocab ) + train_src, train_tar = filter_len( + train_src, train_tar, max_sequence_len=max_sequence_len) + eval_src, eval_tar = _para_file_to_ids( src_eval_file, tar_eval_file, \ + src_vocab, tar_vocab ) + + test_src, test_tar = _para_file_to_ids( src_test_file, tar_test_file, \ + src_vocab, tar_vocab ) + + return ( train_src, train_tar), (eval_src, eval_tar), (test_src, test_tar),\ + (src_vocab, tar_vocab) + + +def raw_mono_data(vocab_file, file_path): + + src_vocab = _build_vocab(vocab_file) + + test_src, test_tar = _para_file_to_ids( file_path, file_path, \ + src_vocab, src_vocab ) + + return (test_src, test_tar) + + +def get_data_iter(raw_data, batch_size, mode='train'): + + src_data, tar_data = raw_data + + data_len = len(src_data) + + index = np.arange(data_len) + if mode == "train": + np.random.shuffle(index) + + def to_pad_np(data, source=False): + max_len = 0 + for ele in data: + if len(ele) > max_len: + max_len = len(ele) + + ids = np.ones((batch_size, max_len), dtype='int64') * 2 + mask = np.zeros((batch_size), dtype='int32') + + for i, ele in enumerate(data): + ids[i, :len(ele)] = ele + if not source: + mask[i] = len(ele) - 1 + else: + mask[i] = len(ele) + + return ids, mask + + b_src = [] + + cache_num = 20 + if mode != "train": + cache_num = 1 + for j in range(data_len): + if len(b_src) == batch_size * cache_num: + # build batch size + + # sort + new_cache = sorted(b_src, key=lambda k: len(k[0])) + + for i in range(cache_num): + batch_data = new_cache[i * batch_size:(i + 1) * batch_size] + src_cache = [w[0] for w in batch_data] + tar_cache = [w[1] for w in batch_data] + src_ids, src_mask = to_pad_np(src_cache, source=True) + tar_ids, tar_mask = to_pad_np(tar_cache) + + #print( "src ids", src_ids ) + yield (src_ids, src_mask, tar_ids, tar_mask) + + b_src = [] + + b_src.append((src_data[index[j]], tar_data[index[j]])) + if len(b_src) == batch_size * cache_num: + new_cache = sorted(b_src, key=lambda k: len(k[0])) + + for i in range(cache_num): + batch_data = new_cache[i * batch_size:(i + 1) * batch_size] + src_cache = [w[0] for w in batch_data] + tar_cache = [w[1] for w in batch_data] + src_ids, src_mask = to_pad_np(src_cache, source=True) + tar_ids, tar_mask = to_pad_np(tar_cache) + + #print( "src ids", src_ids ) + yield (src_ids, src_mask, tar_ids, tar_mask) diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/run.sh b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/run.sh new file mode 100644 index 00000000..cf48282d --- /dev/null +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/run.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -ex +export CUDA_VISIBLE_DEVICES=0 + +python train.py \ + --src_lang en --tar_lang vi \ + --attention True \ + --num_layers 2 \ + --hidden_size 512 \ + --src_vocab_size 17191 \ + --tar_vocab_size 7709 \ + --batch_size 128 \ + --dropout 0.2 \ + --init_scale 0.1 \ + --max_grad_norm 5.0 \ + --train_data_prefix data/en-vi/train \ + --eval_data_prefix data/en-vi/tst2012 \ + --test_data_prefix data/en-vi/tst2013 \ + --vocab_prefix data/en-vi/vocab \ + --use_gpu True + diff --git a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/train.py b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/train.py index fbb93eab..60053c4f 100644 --- a/PaddleNLP/unarchived/neural_machine_translation/rnn_search/train.py +++ b/PaddleNLP/unarchived/neural_machine_translation/rnn_search/train.py @@ -19,150 +19,175 @@ from __future__ import print_function import numpy as np import time import os +import random + +import math import paddle import paddle.fluid as fluid import paddle.fluid.framework as framework from paddle.fluid.executor import Executor -from paddle.fluid.contrib.decoder.beam_search_decoder import * + +import reader + +import sys +if sys.version[0] == '2': + reload(sys) + sys.setdefaultencoding("utf-8") +import os from args import * -import attention_model -import no_attention_model +from base_model import BaseModel +from attention_model import AttentionModel +import logging +import pickle + +SEED = 123 def train(): args = parse_args() - if args.enable_ce: - framework.default_startup_program().random_seed = 111 - + num_layers = args.num_layers + src_vocab_size = args.src_vocab_size + tar_vocab_size = args.tar_vocab_size + batch_size = args.batch_size + dropout = args.dropout + init_scale = args.init_scale + max_grad_norm = args.max_grad_norm + hidden_size = args.hidden_size # Training process - if args.no_attention: - avg_cost, feed_order = no_attention_model.seq_to_seq_net( - args.embedding_dim, - args.encoder_size, - args.decoder_size, - args.dict_size, - args.dict_size, - False, - beam_size=args.beam_size, - max_length=args.max_length) - else: - avg_cost, feed_order = attention_model.seq_to_seq_net( - args.embedding_dim, - args.encoder_size, - args.decoder_size, - args.dict_size, - args.dict_size, - False, - beam_size=args.beam_size, - max_length=args.max_length) + if args.attention: + model = AttentionModel( + hidden_size, + src_vocab_size, + tar_vocab_size, + batch_size, + num_layers=num_layers, + init_scale=init_scale, + dropout=dropout) + else: + model = BaseModel( + hidden_size, + src_vocab_size, + tar_vocab_size, + batch_size, + num_layers=num_layers, + init_scale=init_scale, + dropout=dropout) + + loss = model.build_graph() # clone from default main program and use it as the validation program main_program = fluid.default_main_program() - inference_program = fluid.default_main_program().clone() - - optimizer = fluid.optimizer.Adam( - learning_rate=args.learning_rate, - regularization=fluid.regularizer.L2DecayRegularizer( - regularization_coeff=1e-5)) - - optimizer.minimize(avg_cost) - - # Disable shuffle for Continuous Evaluation only - if not args.enable_ce: - train_batch_generator = paddle.batch( - paddle.reader.shuffle( - paddle.dataset.wmt14.train(args.dict_size), buf_size=1000), - batch_size=args.batch_size, - drop_last=False) - - test_batch_generator = paddle.batch( - paddle.reader.shuffle( - paddle.dataset.wmt14.test(args.dict_size), buf_size=1000), - batch_size=args.batch_size, - drop_last=False) + inference_program = fluid.default_main_program().clone(for_test=True) + + fluid.clip.set_gradient_clip(clip=fluid.clip.GradientClipByGlobalNorm( + clip_norm=max_grad_norm)) + + lr = args.learning_rate + opt_type = args.optimizer + if opt_type == "sgd": + optimizer = fluid.optimizer.SGD(lr) + elif opt_type == "adam": + optimizer = fluid.optimizer.Adam(lr) else: - train_batch_generator = paddle.batch( - paddle.dataset.wmt14.train(args.dict_size), - batch_size=args.batch_size, - drop_last=False) + print("only support [sgd|adam]") + raise Exception("opt type not support") - test_batch_generator = paddle.batch( - paddle.dataset.wmt14.test(args.dict_size), - batch_size=args.batch_size, - drop_last=False) + optimizer.minimize(loss) place = fluid.CUDAPlace(0) if args.use_gpu else fluid.CPUPlace() exe = Executor(place) exe.run(framework.default_startup_program()) - feed_list = [ - main_program.global_block().var(var_name) for var_name in feed_order - ] - feeder = fluid.DataFeeder(feed_list, place) - - def validation(): - # Use test set as validation each pass + train_data_prefix = args.train_data_prefix + eval_data_prefix = args.eval_data_prefix + test_data_prefix = args.test_data_prefix + vocab_prefix = args.vocab_prefix + src_lang = args.src_lang + tar_lang = args.tar_lang + print("begin to load data") + raw_data = reader.raw_data(src_lang, tar_lang, vocab_prefix, + train_data_prefix, eval_data_prefix, + test_data_prefix, args.max_len) + print("finished load data") + train_data, valid_data, test_data, _ = raw_data + + def prepare_input(batch, epoch_id=0, with_lr=True): + src_ids, src_mask, tar_ids, tar_mask = batch + res = {} + src_ids = src_ids.reshape((src_ids.shape[0], src_ids.shape[1], 1)) + in_tar = tar_ids[:, :-1] + label_tar = tar_ids[:, 1:] + + in_tar = in_tar.reshape((in_tar.shape[0], in_tar.shape[1], 1)) + label_tar = label_tar.reshape( + (label_tar.shape[0], label_tar.shape[1], 1)) + + res['src'] = src_ids + res['tar'] = in_tar + res['label'] = label_tar + res['src_sequence_length'] = src_mask + res['tar_sequence_length'] = tar_mask + + return res, np.sum(tar_mask) + + # get train epoch size + def eval(data, epoch_id=0): + eval_data_iter = reader.get_data_iter(data, batch_size, mode='eval') total_loss = 0.0 - count = 0 - val_feed_list = [ - inference_program.global_block().var(var_name) - for var_name in feed_order - ] - val_feeder = fluid.DataFeeder(val_feed_list, place) - - for batch_id, data in enumerate(test_batch_generator()): - val_fetch_outs = exe.run(inference_program, - feed=val_feeder.feed(data), - fetch_list=[avg_cost], - return_numpy=False) - - total_loss += np.array(val_fetch_outs[0])[0] - count += 1 - - return total_loss / count - - for pass_id in range(1, args.pass_num + 1): - pass_start_time = time.time() - words_seen = 0 - for batch_id, data in enumerate(train_batch_generator()): - words_seen += len(data) * 2 - - fetch_outs = exe.run(framework.default_main_program(), - feed=feeder.feed(data), - fetch_list=[avg_cost]) - - avg_cost_train = np.array(fetch_outs[0]) - print('pass_id=%d, batch_id=%d, train_loss: %f' % - (pass_id, batch_id, avg_cost_train)) - # This is for continuous evaluation only - if args.enable_ce and batch_id >= 100: - break - - pass_end_time = time.time() - test_loss = validation() - time_consumed = pass_end_time - pass_start_time - words_per_sec = words_seen / time_consumed - print("pass_id=%d, test_loss: %f, words/s: %f, sec/pass: %f" % - (pass_id, test_loss, words_per_sec, time_consumed)) - - # This log is for continuous evaluation only - if args.enable_ce: - print("kpis\ttrain_cost\t%f" % avg_cost_train) - print("kpis\ttest_cost\t%f" % test_loss) - print("kpis\ttrain_duration\t%f" % time_consumed) - - if pass_id % args.save_interval == 0: - model_path = os.path.join(args.save_dir, str(pass_id)) - if not os.path.isdir(model_path): - os.makedirs(model_path) - - fluid.io.save_persistables( - executor=exe, - dirname=model_path, - main_program=framework.default_main_program()) + word_count = 0.0 + for batch_id, batch in enumerate(eval_data_iter): + input_data_feed, word_num = prepare_input( + batch, epoch_id, with_lr=False) + fetch_outs = exe.run(inference_program, + feed=input_data_feed, + fetch_list=[loss.name], + use_program_cache=False) + + cost_train = np.array(fetch_outs[0]) + + total_loss += cost_train * batch_size + word_count += word_num + + ppl = np.exp(total_loss / word_count) + + return ppl + + max_epoch = args.max_epoch + for epoch_id in range(max_epoch): + start_time = time.time() + print("epoch id", epoch_id) + train_data_iter = reader.get_data_iter(train_data, batch_size) + + total_loss = 0 + word_count = 0.0 + for batch_id, batch in enumerate(train_data_iter): + + input_data_feed, word_num = prepare_input(batch, epoch_id=epoch_id) + fetch_outs = exe.run(feed=input_data_feed, + fetch_list=[loss.name], + use_program_cache=True) + + cost_train = np.array(fetch_outs[0]) + + total_loss += cost_train * batch_size + word_count += word_num + + if batch_id > 0 and batch_id % 100 == 0: + print("ppl", batch_id, np.exp(total_loss / word_count)) + total_loss = 0.0 + word_count = 0.0 + + dir_name = args.model_path + "/epoch_" + str(epoch_id) + print("begin to save", dir_name) + fluid.io.save_params(exe, dir_name) + print("save finished") + dev_ppl = eval(valid_data) + print("dev ppl", dev_ppl) + test_ppl = eval(test_data) + print("test ppl", test_ppl) if __name__ == '__main__': -- GitLab