From 69a9e2fa7788edef21bd559167f2433d7e6d15a9 Mon Sep 17 00:00:00 2001 From: tangjiji Date: Thu, 24 Sep 2020 15:00:38 +0800 Subject: [PATCH] fix paddle install (#574) * add ernie-vil * fix requirements.txt * Update README.md * Update requirements.txt * Update requirements.txt * Update requirements.txt * Update requirements.txt --- ernie-vil/.meta/ernie_vil_struct.png | Bin 0 -> 334726 bytes ernie-vil/README.md | 136 +++++ ernie-vil/README_zh.md | 132 +++++ ernie-vil/args/__init__.py | 0 ernie-vil/args/finetune_args.py | 79 +++ ernie-vil/batching/__init__.py | 0 ernie-vil/batching/finetune_batching.py | 97 ++++ ernie-vil/conf/vcr/model_conf_vcr | 12 + ernie-vil/conf/vcr/task_vcr.json | 42 ++ ernie-vil/conf/vcr/task_vcr_qa.json | 21 + ernie-vil/conf/vcr/task_vcr_qar.json | 22 + ernie-vil/finetune.py | 465 +++++++++++++++++ ernie-vil/model/__init__.py | 0 ernie-vil/model/ernie_vil.py | 288 +++++++++++ ernie-vil/model/vl_transformer_encoder.py | 561 +++++++++++++++++++++ ernie-vil/optim/__init__.py | 0 ernie-vil/optim/optimization.py | 167 ++++++ ernie-vil/preprocess/__init__.py | 0 ernie-vil/preprocess/preprocessor.py | 46 ++ ernie-vil/preprocess/tokenization.py | 467 +++++++++++++++++ ernie-vil/reader/__init__.py | 0 ernie-vil/reader/_image_features_reader.py | 79 +++ ernie-vil/reader/vcr_finetuning.py | 473 +++++++++++++++++ ernie-vil/requirements.txt | 8 + ernie-vil/run_finetuning.sh | 59 +++ ernie-vil/run_inference.sh | 48 ++ ernie-vil/utils/__init__.py | 0 ernie-vil/utils/args.py | 61 +++ ernie-vil/utils/init.py | 71 +++ requirements.txt | 1 + 30 files changed, 3335 insertions(+) create mode 100644 ernie-vil/.meta/ernie_vil_struct.png create mode 100644 ernie-vil/README.md create mode 100644 ernie-vil/README_zh.md create mode 100644 ernie-vil/args/__init__.py create mode 100644 ernie-vil/args/finetune_args.py create mode 100644 ernie-vil/batching/__init__.py create mode 100644 ernie-vil/batching/finetune_batching.py create mode 100644 ernie-vil/conf/vcr/model_conf_vcr create mode 100644 ernie-vil/conf/vcr/task_vcr.json create mode 100644 ernie-vil/conf/vcr/task_vcr_qa.json create mode 100644 ernie-vil/conf/vcr/task_vcr_qar.json create mode 100755 ernie-vil/finetune.py create mode 100644 ernie-vil/model/__init__.py create mode 100644 ernie-vil/model/ernie_vil.py create mode 100644 ernie-vil/model/vl_transformer_encoder.py create mode 100644 ernie-vil/optim/__init__.py create mode 100644 ernie-vil/optim/optimization.py create mode 100644 ernie-vil/preprocess/__init__.py create mode 100755 ernie-vil/preprocess/preprocessor.py create mode 100644 ernie-vil/preprocess/tokenization.py create mode 100644 ernie-vil/reader/__init__.py create mode 100644 ernie-vil/reader/_image_features_reader.py create mode 100644 ernie-vil/reader/vcr_finetuning.py create mode 100644 ernie-vil/requirements.txt create mode 100644 ernie-vil/run_finetuning.sh create mode 100644 ernie-vil/run_inference.sh create mode 100644 ernie-vil/utils/__init__.py create mode 100644 ernie-vil/utils/args.py create mode 100644 ernie-vil/utils/init.py diff --git a/ernie-vil/.meta/ernie_vil_struct.png b/ernie-vil/.meta/ernie_vil_struct.png new file mode 100644 index 0000000000000000000000000000000000000000..cfa72e6116a2d2393f2bf12f25c98a66545c0698 GIT binary patch literal 334726 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

vTFy!4e-L$UXy^!ehWPf&Q5^ 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 z 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[_**ERNIE-ViL:Knowledge Enhanced Vision-Language Representations Through Scene Graph**_](https://arxiv.org/abs/2006.16934) +> +>Fei Yu\*, Jiji Tang\*, Weichong Yin, Yu Sun, Hao Tian, Hua Wu, Haifeng Wang (\* : equal contribution) +> +>Preprint June 2020 +> + +![ERNIE-ViL](https://img.shields.io/badge/Pretraining-vision_and_language_joint_representions-green) +![VQA](https://img.shields.io/badge/VQA-Visual_Question_Answering-yellow) +![VCR](https://img.shields.io/badge/VCR-Visual_Commensense_Reasoning-blue) ![RefCOCO+](https://img.shields.io/badge/RefCOCO+-Region_to_Phrase_Grounding-green) +![IRTR](https://img.shields.io/badge/IR_&TR-Image_Retrieval&_Text_Retrieval-yellowgreen) + +**[ERNIE-ViL](https://arxiv.org/abs/2006.16934) is a knowledge-enhanced joint representations for vision-language tasks**, which is the first work that has **introduced structured knowledge to enhance vision-language pre-training**. Utilizing structured knowledge obtained +from scene graphs, ERNIE-ViL constructs three **Scene Graph Prediction tasks**, i.e., **Object Prediction**, **Attribute Prediction** and **Relationship Prediction** tasks. +Thus, ERNIE-ViL can learn the better joint vision-language representations characterizing the alignments of the detailed semantics across vision and language. + + + +## Framework + +Based on the scene graph parsed from the text using Scene Graph Parser, we construct Object Prediction, Attribute Prediction and Relationship Prediction tasks: +- **Object Prediction:** We randomly select a set of the objects in the scene graph, then mask and predict the corresponding words in the sentence. +- **Attribute Prediction:** For the object-attribute pairs in the scene graph, we randomly select a part of them to mask and predict the words related to the attribute nodes in the sentence. +- **Realtionship Prediction:** For the object-relationship-object triplets in the scene graph, we randomly select a part of realtionship nodes to mask and predict them. + +![ernie_vil_struct](.meta/ernie_vil_struct.png) +Model Architecture of ERNIE-ViL + + +## Pre-trained Models +ERNIE-ViL adopts large-scale image-text aligned datasets as the pre-training data. We provide ERNIE-ViL models of two scale settings which are pretrained on [**Conceptual Captions**](https://www.aclweb.org/anthology/P18-1238.pdf) and [**SBU Captions**](http://papers.nips.cc/paper/4470-im2text-describing-images-using-1-million-captio). + +- [**ERNIE-ViL _base_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-base-en.1.tar.gz) (_lowercased | 12-text-stream-layer, 6-visual-stream-layer_) +- [**ERNIE-ViL _large_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-large-en.1.tar.gz) (_lowercased | 24-text-stream-layer, 6-visual-stream-layer_) + +## Downstream tasks +We finetune ERNIE-ViL on five vision-langage downstream tasks, i.e., Visual Commensense Reasoning([**VCR**](https://openaccess.thecvf.com/content_CVPR_2019/papers/Zellers_From_Recognition_to_Cognition_Visual_Commonsense_Reasoning_CVPR_2019_paper.pdf)), +Visual Question Answering([**VQA**](https://openaccess.thecvf.com/content_iccv_2015/papers/Antol_VQA_Visual_Question_ICCV_2015_paper.pdf)), +Cross-modal Image Retrieval([**IR**](https://www.mitpressjournals.org/doi/abs/10.1162/tacl_a_00166)), +Cross-modal Text Retrieval([**TR**](https://www.mitpressjournals.org/doi/abs/10.1162/tacl_a_00166)) and +Region_to_Phrase_Grounding([**RefCOCO+**](https://www.aclweb.org/anthology/D14-1086.pdf)). + +_Code and pre-trained models related to VCR task are made public now, and those of more downstream tasks are planed to be public._ + +### VCR + * datasets + * The training, validation and testing data of VCR task are provided by [**VCR Website**](https://visualcommonsense.com/download/). + * Organization of visual features is modified from [**ViLBERT**](https://github.com/jiasenlu/vilbert_beta), we directly use the data from it. Data can be downloaded [here](https://github.com/jiasenlu/vilbert_beta/tree/master/data). + * Put all downloaded files under diretory "data/vcr". + + + * Task pre-training: We perform task-pretraining on VCR task, which is also known as task-specific-pretraining. The trained models are as follows: + * [**ERNIE-ViL-VCR-task-pretrain _base_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-base-VCR-task-pre-en.1.tar.gz) + * [**ERNIE-ViL-VCR-task-pretrain _large_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-large-VCR-task-pre-en.1.tar.gz) + * Performance: Results of VCR task for ERNIE-ViL model, compared with previous state-of-the-art pre-trained models([**VILLA**](https://arxiv.org/pdf/2006.06195.pdf)). + + | Models | Q->A | QA->R | Q->AR | + | :--------------------------------------| :---------------------------: | :----------------------------: | :-----------------------------: | + | VILLA (task-pretrain) _base_ | 75.54(76.4) | 78.78(79.1) | 59.75(60.6) | + | ERNIE-ViL (task-pretrain) _base_ | 76.37(77.0) | 79.65(80.3) | 61.24(62.1) | + | VILLA (task-pretrain) _large_ | 78.45(78.9) | 82.57(82.8) | 65.18(65.7) | + | ERNIE-ViL (task-pretrain) _large_ | 78.52(79.2) | 83.37(83.5) | 65.81(66.3) | + + _Numerical results outside and inside parentheses represent the dev and test performance of VCR task respectively. + Test results are obtained from the [**VCR leadborad**](https://visualcommonsense.com/leaderboard/)._ + + + +## Usage + +### Install PaddlePaddle + +This code has been tested with Paddle Fluid 1.8 with Python 2.7. Other dependencies of ERNIE-ViL are listed in `requirements.txt`, you can install them by + ```script + pip install -r requirements.txt + ``` + +### Fine-tuning on ERNIE-ViL +Please update LD_LIBRARY_PATH about CUDA, cuDNN, NCCL2 before fine-tuning. You can easily run fine-tuning through +configuration files. For example, you can finetune ERNIE-ViL model on VCR task by +```script + sh run_finetuning.sh vcr conf/vcr/model_conf_vcr $vocab_file $ernie_vil_config $pretrain_models +``` +Files which are needed by fine-tuning can be found in our given download links, incluing vocabulary dictionary, configuration +file and pre-trained parameters. Note that our fine-tuning experiments on VCR are carried on 4 NVIDIA V100 (32GB) GPUs. +If your GPU memory is not enough, you can reduce the batch size in the corresponding configuration file, e.g., "conf/vcr/model_conf_vcr". + + + +### Inference + + You can use the following command to infer fine-tuned models. For example, you can infer VCR models by the following commands for different sub-tasks: + + **Task Q->A** + + ```script + sh run_inference.sh vcr qa $split(val/test) conf/vcr/model_conf_vcr $vocab_file $ernie_vil_config $model_params $res_file + ``` + **Task QA->R** + + ```script + sh run_inference.sh vcr qar $split(val/test) conf/vcr/model_conf_vcr $vocab_file $ernie_vil_config $model_params $res_file + ``` + + + + +## Citation + +You can cite the paper as below: + +``` +@article{yu2020ernie, + title={ERNIE-ViL: Knowledge Enhanced Vision-Language Representations Through Scene Graph}, + author={Yu, Fei and Tang, Jiji and Yin, Weichong and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng}, + journal={arXiv preprint arXiv:2006.16934}, + year={2020} +} + +``` + diff --git a/ernie-vil/README_zh.md b/ernie-vil/README_zh.md new file mode 100644 index 0000000..149fc6a --- /dev/null +++ b/ernie-vil/README_zh.md @@ -0,0 +1,132 @@ + +[English](./README.md) | 简体中文 + +## _ERNIE-ViL_: Knowledge Enhanced Vision-Language Representations Through Scene Graph +- [模型框架](#模型框架) +- [预训练模型](#预训练模型) +- [下游任务](#下游任务) + * [视觉推理](#视觉推理) +- [使用说明](#使用说明) + * [安装飞桨](#安装飞桨) + * [运行微调](#运行微调) + * [预测](#预测) +- [引用](#引用) + +关于算法的详细描述,请参见我们的论文 + +>[_**ERNIE-ViL:Knowledge Enhanced Vision-Language Representations Through Scene Graph**_](https://arxiv.org/abs/2006.16934) +> +>Fei Yu\*, Jiji Tang\*, Weichong Yin, Yu Sun, Hao Tian, Hua Wu, Haifeng Wang (\* : equal contribution) +> +>Preprint June 2020 +> +![ERNIE-ViL](https://img.shields.io/badge/预训练-视觉语言联合表示-green)![VQA](https://img.shields.io/badge/视觉问答-VQA-yellow) ![VCR](https://img.shields.io/badge/视觉常识推理-VCR-blue) ![RefCOCO](https://img.shields.io/badge/引用表达式理解-RefCOCO+-green) ![IRTR](https://img.shields.io/badge/跨模态检索-IR&TR-yellowgreen) + + +--- +**ERNIE-ViL +是面向视觉-语言任务的知识增强预训练框架**,首次在视觉-语言预训练中引入了结构化的知识。ERNIE-ViL利用场景图中的结构化知识,构建了**物体预测,属性预测,关系预测**三种预训练任务,精细地刻画了视觉-语言模态之间细粒度语义的对齐,从而获得了更好的视觉-语言联合表示。 + +## 模型框架 + +基于文本中解析出的场景图,ERNIE-ViL提出了三个多模态场景图预测任务: +- **物体预测**:随机选取图中的一部分物体,然后对其在句子中对应的词进行掩码和预测; +- **属性预测**:对于场景图中的属性-物体组合,随机选取一部分词对其中属性词进行掩码和预测; +- **关系预测**:对于场景图中的物体-关系-物体三元组,对其中的关系词进行掩码和预测。 + +![ernie_vil_struct](.meta/ernie_vil_struct.png) + +ERNIE-ViL 场景图预训练任务结构 + +## 预训练模型 + + +ERNIE-ViL使用大规模图文对齐数据集作为预训练数据,基于[**Conceptual +Captions**](https://www.aclweb.org/anthology/P18-1238.pdf)和[**SBU +Captions**](http://papers.nips.cc/paper/4470-im2text-describing-images-using-1-million-captio)数据集,训练和发布了两种参数规模的模型: + +- [**ERNIE-ViL _base_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-base-en.1.tar.gz) (_lowercased | 12-text-stream-layer, 6-visual-stream-layer_) +- [**ERNIE-ViL _large_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-large-en.1.tar.gz) (_lowercased | 24-text-stream-layer, 6-visual-stream-layer_) + +## 下游任务 + +ERNIE-ViL在五个视觉语言下游任务进行了实验,包括[**视觉常识推理**](https://openaccess.thecvf.com/content_CVPR_2019/papers/Zellers_From_Recognition_to_Cognition_Visual_Commonsense_Reasoning_CVPR_2019_paper.pdf), +[**视觉问答**](https://openaccess.thecvf.com/content_iccv_2015/papers/Antol_VQA_Visual_Question_ICCV_2015_paper.pdf), +[**跨模态图片检索**](https://www.mitpressjournals.org/doi/abs/10.1162/tacl_a_00166), +[**跨模态文本检索**](https://www.mitpressjournals.org/doi/abs/10.1162/tacl_a_00166), +[**引用式理解**](https://www.aclweb.org/anthology/D14-1086.pdf)。 + +_当前仅开源视觉常识推理任务相关模型和代码,后续计划开源更多下游任务的模型和代码。_ + + +### **视觉常识推理** + * 数据集合 + * 训练、验证和测试集合相关数据由[**视觉常识推理官网**](http://visualcommonsense.com/download/)提供; + * 视觉端特征的组织方式借鉴[**ViLBERT**](https://github.com/jiasenlu/vilbert_beta), 因此项目直接使用**ViLBERT**中的数据,数据[下载地址](https://github.com/jiasenlu/vilbert_beta/tree/master/data); + * 将所有获取的文件放在 data/vcr 目录下; + + + * 任务预训练: 在视觉推理任务中进行了任务预训练,预训练获得模型如下 + * [**ERNIE-ViL-VCR-task-pretrain _base_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-base-VCR-task-pre-en.1.tar.gz) + * [**ERNIE-ViL-VCR-task-pretrain _large_**](https://ernie-github.cdn.bcebos.com/model-ernie-vil-large-VCR-task-pre-en.1.tar.gz) + * 效果: ERNIE-ViL与之前最优预训练模型[**VILLA**](https://arxiv.org/pdf/2006.06195.pdf)在视觉常识推理任务上的效果对比如下: + + | 模型 | Q->A | QA->R | Q->AR | + | :---------------------------------- | :---------------------------: | :----------------------------: | :---------------------------: | + | VILLA (task-pretrain) _base_ | 75.54(76.4) | 78.78(79.1) | 59.75(60.6) | + | ERNIE-ViL (task-pretrain) _base_ | 76.37(77.0) | 79.65(80.3) | 61.24(62.1) | + | VILLA (task-pretrain) _large_ | 78.45(78.9) | 82.57(82.8) | 65.18(65.7) | + | ERNIE-ViL (task-pretrain) _large_ | 78.52(79.2) | 83.37(83.5) | 65.81(66.3) | + + _注:括号外表示验证集效果,括号内表示测试集效果,测试集效果由[VCR榜单](https://visualcommonsense.com/leaderboard/)提供。_ + + +## 使用说明 + +### 安装飞桨 + +ERNIE-ViL代码基于Paddle Fluid 1.8 和 Python 2.7, 依赖的其他模块也列举在 requirements.txt,可以通过下面的指令安装: + ```script + pip install -r requirements.txt + ``` +### 运行微调 +在运行 ERNIE-ViL 前,需要将 CUDA 、cuDNN 、NCCL2 的动态库路径添加到 LD_LIBRARY_PATH 。 我们把下游任务的参数配置文件放到了 conf/ ,可以简单地通过配置文件运行。 例如,您可以通过下面的指令在VCR上任务上进行微调: +```script + sh run_finetuning.sh vcr conf/vcr/model_conf_vcr $vocab_file $ernie_vil_config $pretrain_models_params +``` +前面提供的模型链接中包含了所有需要的文件, 包含词表文件,配置文件和预训练参数。VCR任务的微调实验是在 4 张32 GB 的英伟达V100 GPU上运行,如果您的GPU显存不够,可以考虑八张卡运行或者减小配置中的batch_size。 +_我们目前开放了预训练模型和VCR的任务代码,其他的下游任务可以参考任务自主尝试。_ + +### 预测 +基于已经训练的模型,您可以通过下面的命令测试VCR的效果: + + **Task Q->A** + + ```script + sh run_inference.sh vcr qa $split(val/test) conf/vcr/model_conf_vcr $vocab_file $ernie_vil_config $model_params $res_file + ``` + **Task QA->R** + + ```script + sh run_inference.sh vcr qar $split(val/test) conf/vcr/model_conf_vcr $vocab_file $ernie_vil_config $model_params $res_file + ``` + + + VCR的测试可以在一张32GB的英伟达V100 GPU上运行,测试的结果包含Q->A 任务、QA->R任务和Q->AR任务,其中Q->AR任务由前两个任务结果合并所得。 + + + +## 引用 + +可以按下面的格式引用我们的论文: + +``` +@article{yu2020ernie, + title={ERNIE-ViL: Knowledge Enhanced Vision-Language Representations Through Scene Graph}, + author={Yu, Fei and Tang, Jiji and Yin, Weichong and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng}, + journal={arXiv preprint arXiv:2006.16934}, + year={2020} +} + +``` + diff --git a/ernie-vil/args/__init__.py b/ernie-vil/args/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ernie-vil/args/finetune_args.py b/ernie-vil/args/finetune_args.py new file mode 100644 index 0000000..dd034c6 --- /dev/null +++ b/ernie-vil/args/finetune_args.py @@ -0,0 +1,79 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# 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. + +""" args defination and default value """ + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import time +import argparse + +from utils.args import ArgumentGroup, print_arguments + +# yapf: disable +parser = argparse.ArgumentParser(__doc__) +model_g = ArgumentGroup(parser, "model", "model configuration and paths.") +model_g.add_arg("ernie_config_path", str, "./config/ernie_config.json", "json file path for ernie model config.") +model_g.add_arg("init_checkpoint", str, None, "Init checkpoint to resume training from.") +model_g.add_arg("checkpoints", str, "checkpoints", "Path to save checkpoints.") +model_g.add_arg("task_name", str, "vcr", "Task to finetune on ERNIE-ViL") + +train_g = ArgumentGroup(parser, "training", "training options.") +train_g.add_arg("epoch", int, 100, "Number of epoches for training.") +train_g.add_arg("learning_rate", float, 0.0001, "Learning rate used to train with warmup.") +train_g.add_arg("lr_scheduler", str, "linear_warmup_decay", + "scheduler of learning rate.", choices=['linear_warmup_decay', 'noam_decay', 'manual_warmup_decay']) +train_g.add_arg("decay_steps", str, "", "learning rate decay steps, list with ;") +train_g.add_arg("lr_decay_ratio", float, 0.1, "learning rate decay ratio, used with manual_warmup_decay") +train_g.add_arg("weight_decay", float, 0.01, "Weight decay rate for L2 regularizer.") +train_g.add_arg("num_train_steps", int, 1000000, "Total steps to perform pretraining.") +train_g.add_arg("warmup_steps", int, 0, "Total steps to perform warmup when pretraining.") +train_g.add_arg("save_steps", int, 100, "The steps interval to save checkpoints.") +train_g.add_arg("validation_steps", int, 6000, "The steps interval to evaluate model performance.") +train_g.add_arg("use_fuse", bool, False, "Whether to use fuse_allreduce_ops.") +train_g.add_arg("nccl_comm_num", int, 1, "NCCL comm num.") +train_g.add_arg("hierarchical_allreduce_inter_nranks", int, 8, "Hierarchical allreduce inter ranks.") +train_g.add_arg("use_hierarchical_allreduce", bool, False, "Use hierarchical allreduce or not.") +train_g.add_arg("use_gpu", bool, True, "Whether to gpu.") + +log_g = ArgumentGroup(parser, "logging", "logging related.") +log_g.add_arg("skip_steps", int, 10, "The steps interval to print loss.") +log_g.add_arg("verbose", bool, False, "Whether to output verbose log.") + +data_g = ArgumentGroup(parser, "data", "Data paths, vocab paths and data processing options") +data_g.add_arg("result_file", str, "./res_tmp", "file to storage results") +data_g.add_arg("lr_decay_dict_file", str, "", "learning rate decay files.") +data_g.add_arg("train_filelist", str, "", "Path to training filelist.") +data_g.add_arg("valid_filelist", str, "", "Path to valid filelist.") +data_g.add_arg("test_filelist", str, "", "Path to test filelist.") +data_g.add_arg("vocab_path", str, "./config/vocab.txt", "Vocabulary path.") +data_g.add_arg("test_split", str, "val", "test of sub tasks, val or test") +data_g.add_arg("max_seq_len", int, 128, "Number of words of the longest seqence.") +data_g.add_arg("max_img_len", int, 100, "Number of image rois of the longest seqence.") +data_g.add_arg("feature_size", int, 2048, "Number of roi feature size of image.") +data_g.add_arg("fusion_method", str, "sum", "Number of roi feature size of image.") +data_g.add_arg("batch_size", int, 16, "Total examples' number in batch for training. see also --in_tokens.") +data_g.add_arg("task_group_json", str, "", "Path to task json") + +run_type_g = ArgumentGroup(parser, "run_type", "running type options.") +run_type_g.add_arg("is_distributed", bool, False, "If set, then start distributed training.") +run_type_g.add_arg("use_cuda", bool, True, "If set, use GPU for training.") +run_type_g.add_arg("use_fast_executor", bool, False, "If set, use fast parallel executor (in experiment).") +run_type_g.add_arg("do_train", bool, False, "Whether to perform evaluation on test data set.") +run_type_g.add_arg("do_test", bool, False, "Whether to perform evaluation on test data set.") +run_type_g.add_arg("output_file", str, "", "The output file to save model output.") +# yapf: enable diff --git a/ernie-vil/batching/__init__.py b/ernie-vil/batching/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ernie-vil/batching/finetune_batching.py b/ernie-vil/batching/finetune_batching.py new file mode 100644 index 0000000..c9527bf --- /dev/null +++ b/ernie-vil/batching/finetune_batching.py @@ -0,0 +1,97 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# 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. + +""" prepare data format for finetuning tasks """ + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import numpy as np + +from six.moves import xrange + + +def prepare_batch_data(batch_records, num_choice, pad_id, task_index, task_num): + """ + prepare batch data for finetuning tasks + """ + batch_input_ids = [] + batch_input_pos = [] + batch_seg_ids = [] + batch_input_masks = [] + num_sample = len(batch_records) + batch_lens = [record["input_lens"] for record in batch_records] + batch_labels = [record["target"] for record in batch_records] + binary_labels = np.zeros([num_choice * num_sample, 1], dtype='float32') + for i, l in enumerate(batch_labels): + binary_labels[i * num_choice + l] = 1.0 + labels = np.array(batch_labels).astype("int64").reshape([-1, 1]) + image_features = [record["features"] for record in batch_records] + image_boxes = [record["boxes"] for record in batch_records] + batch_anno_ids = np.array([record["anno_id"] for record in batch_records]).astype("int64").reshape([-1, 1]) + max_len = max([max(lens) for lens in batch_lens]) + for i in range(len(batch_records)): + batch_input_ids.append([inst + list([pad_id] * (max_len - len(inst))) \ + for inst in batch_records[i]["input_ids"]]) + batch_input_pos.append([inst + list([pad_id] * (max_len - len(inst))) \ + for inst in batch_records[i]["input_pos"]]) + batch_seg_ids.append([inst + list([pad_id] * (max_len - len(inst))) \ + for inst in batch_records[i]["segment_ids"]]) + batch_input_masks.append([[1] * len(inst) + [0] * (max_len - len(inst)) \ + for inst in batch_records[i]["input_ids"]]) + + image_embedding, image_mask = pad_feature_data(image_features, return_mask=True) + image_loc = pad_feature_data(image_boxes) + src_ids = np.array(batch_input_ids).astype("int64").reshape([num_choice * num_sample, max_len, 1]) + src_pos = np.array(batch_input_pos).astype("int64").reshape([num_choice * num_sample, max_len, 1]) + src_seg = np.array(batch_seg_ids).astype("int64").reshape([num_choice * num_sample, max_len, 1]) + src_masks = np.array(batch_input_masks).astype("float32").reshape([num_choice * num_sample, max_len, 1]) + src_task = np.zeros(src_ids.shape, dtype="int64") + batch, seq_len, fea_len = image_embedding.shape + image_embedding = np.tile(np.expand_dims(image_embedding, axis=1), \ + (1, num_choice, 1, 1)).reshape([num_choice * batch, seq_len, fea_len]) + image_mask = np.tile(np.expand_dims(image_mask, axis=1), \ + (1, num_choice, 1, 1)).reshape([num_choice * batch, seq_len, 1]) + image_loc = np.tile(np.expand_dims(image_loc, axis=1), \ + (1, num_choice, 1, 1)).reshape([num_choice * batch, seq_len, 5]) + return_list = [src_ids, src_pos, src_seg, src_task, src_masks, \ + image_embedding, image_loc, image_mask, labels, batch_anno_ids] + return_list.append(np.array([task_index]).astype('int64')) + return_list.append(binary_labels) + for i in xrange(task_num): + if i == task_index: + return_list.append(np.array([1.0]).astype("float32")) + else: + return_list.append(np.array([0.0]).astype("float32")) + return return_list + + +def pad_feature_data(data, pad_value=0.0, dtype="float32", return_mask=False): + """ + pad visual features with given pad value + """ + max_lenth=max([len(item) for item in data]) + data_width = len(data[0][0]) + out_data = np.ones((len(data), max_lenth, data_width), dtype=dtype) * pad_value + out_mask = np.zeros((len(data), max_lenth, 1), dtype=dtype) + for i in range(len(data)): + out_data[i, 0: len(data[i]), :] = data[i] + if return_mask: + out_mask[i, 0:len(data[i]):] = 1.0 + if return_mask: + return out_data, out_mask + else: + return out_data + +if __name__ == "__main__": + pass diff --git a/ernie-vil/conf/vcr/model_conf_vcr b/ernie-vil/conf/vcr/model_conf_vcr new file mode 100644 index 0000000..d683cbf --- /dev/null +++ b/ernie-vil/conf/vcr/model_conf_vcr @@ -0,0 +1,12 @@ +output_model_path="output_vcr" +lr_scheduler="manual_warmup_decay" +decay_steps="13308;19962" +lr_decay_ratio=0.1 +num_train_steps=26640 +SAVE_STEPS=6660 +WARMUP_STEPS=6654 +BATCH_SIZE=64 +VALID_STEPS=20000 +LR_RATE=2e-5 +WEIGHT_DECAY=0.01 +MAX_LEN=80 diff --git a/ernie-vil/conf/vcr/task_vcr.json b/ernie-vil/conf/vcr/task_vcr.json new file mode 100644 index 0000000..9ac9d56 --- /dev/null +++ b/ernie-vil/conf/vcr/task_vcr.json @@ -0,0 +1,42 @@ +[ +{ +"task": "VCR_Q-A", +"num_choice": 4, +"annotations_jsonpath_train": "./data/vcr/train.jsonl", +"annotations_jsonpath_val": "./data/vcr/val.jsonl", +"annotations_jsonpath_test": "./data/vcr/test.jsonl", +"feature_lmdb_path": "./data/vcr/VCR_resnet101_faster_rcnn_genome_pickle2.lmdb", +"gt_feature_lmdb_path": "./data/vcr/VCR_gt_resnet101_faster_rcnn_genome_pickle2.lmdb", +"unisex_names_table" : "./data/vcr/unisex_names_table.csv", +"Proprocessor": "PreprocessorBasic", +"tokenizer_name" : "FullTokenizer", +"fusion_method" : "mul", +"dropout_rate" : 0.1, +"max_seq_len" : 60, +"use_gt_fea" : true, +"shufflekeep_across_task": true, +"shuffle_every_epoch": true, +"task_weight": 1.0, +"task_prefix": "vcr_qa" +}, +{ +"task": "VCR_QA-R", +"num_choice": 4, +"annotations_jsonpath_train": "./data/vcr/train.jsonl", +"annotations_jsonpath_val": "./data/vcr/val.jsonl", +"annotations_jsonpath_test": "./data/vcr/test.jsonl", +"feature_lmdb_path": "./data/vcr/VCR_resnet101_faster_rcnn_genome_pickle2.lmdb", +"gt_feature_lmdb_path": "./data/vcr/VCR_gt_resnet101_faster_rcnn_genome_pickle2.lmdb", +"unisex_names_table" : "./data/vcr/unisex_names_table.csv", +"Proprocessor": "PreprocessorBasic", +"tokenizer_name" : "FullTokenizer", +"fusion_method" : "mul", +"dropout_rate" : 0.1, +"max_seq_len" : 80, +"use_gt_fea" : true, +"shufflekeep_across_task": true, +"shuffle_every_epoch" : true, +"task_weight": 1.0, +"task_prefix": "vcr_qar" +} +] diff --git a/ernie-vil/conf/vcr/task_vcr_qa.json b/ernie-vil/conf/vcr/task_vcr_qa.json new file mode 100644 index 0000000..c2b4afa --- /dev/null +++ b/ernie-vil/conf/vcr/task_vcr_qa.json @@ -0,0 +1,21 @@ +[ +{ +"task": "VCR_Q-A", +"num_choice": 4, +"annotations_jsonpath_train": "./data/vcr/train.jsonl", +"annotations_jsonpath_val": "./data/vcr/val.jsonl", +"annotations_jsonpath_test": "./data/vcr/test.jsonl", +"feature_lmdb_path": "./data/vcr/VCR_resnet101_faster_rcnn_genome_pickle2.lmdb", +"gt_feature_lmdb_path": "./data/vcr/VCR_gt_resnet101_faster_rcnn_genome_pickle2.lmdb", +"unisex_names_table" : "./data/vcr/unisex_names_table.csv", +"Proprocessor": "PreprocessorBasic", +"tokenizer_name" : "FullTokenizer", +"tagger_path" : "./script/ntc.pickle", +"nltk_data_path" : "./nltk_data", +"fusion_method" : "mul", +"dropout_rate" : 0.1, +"max_seq_len" : 60, +"use_gt_fea" : true, +"task_prefix" : "vcr_qa" +} +] diff --git a/ernie-vil/conf/vcr/task_vcr_qar.json b/ernie-vil/conf/vcr/task_vcr_qar.json new file mode 100644 index 0000000..8f4c880 --- /dev/null +++ b/ernie-vil/conf/vcr/task_vcr_qar.json @@ -0,0 +1,22 @@ +[ +{ +"task": "VCR_QA-R", +"num_choice": 4, +"annotations_jsonpath_train": "./data/vcr/train.jsonl", +"annotations_jsonpath_val": "./data/vcr/val.jsonl", +"annotations_jsonpath_test": "./data/vcr/test.jsonl", +"feature_lmdb_path": "./data/vcr/VCR_resnet101_faster_rcnn_genome_pickle2.lmdb", +"gt_feature_lmdb_path": "./data/vcr/VCR_gt_resnet101_faster_rcnn_genome_pickle2.lmdb", +"unisex_names_table" : "./data/vcr/unisex_names_table.csv", +"Proprocessor": "PreprocessorBasic", +"tokenizer_name" : "FullTokenizer", +"vocab_path" : "./package/vocab.txt", +"tagger_path" : "./script/ntc.pickle", +"nltk_data_path" : "./nltk_data", +"fusion_method" : "mul", +"dropout_rate" : 0.1, +"max_seq_len" : 80, +"use_gt_fea" : true, +"task_prefix" : "vcr_qa" +} +] diff --git a/ernie-vil/finetune.py b/ernie-vil/finetune.py new file mode 100755 index 0000000..dbee99a --- /dev/null +++ b/ernie-vil/finetune.py @@ -0,0 +1,465 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# 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. +""" finetuning vison-language task """ + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import sys +import time +import datetime +import argparse +import numpy as np +import multiprocessing +import json + +from reader.vcr_finetuning import VCRDataJointReader +from model.ernie_vil import ErnieVilModel, ErnieVilConfig +from optim.optimization import optimization +from utils.args import print_arguments +from utils.init import init_checkpoint, init_pretraining_params +from args.finetune_args import parser + +import paddle.fluid as fluid + +args = parser.parse_args() + +# yapf: enable. + +#READERS = {"vcr": VCRDataJointReader, "vqa": VQADataReader, "refcoco+": RefcocoReader, "flickr": FlickrReader} +READERS = {"vcr": VCRDataJointReader} + +def format_result(res_arr, qids, pred, labels, scores): + """ + trans batch results into json format + """ + for i in range(len(qids)): + res="\t".join([str(qids[i]), str(pred[i]), str(labels[i]), " ".join(["%.5f" % s for s in scores[i]])]) + res_arr.append(res) + return res_arr + + +def create_vcr_model(pyreader_name, ernie_config, task_group, is_prediction=False): + """ + create model arc for vcr tasks + """ + shapes = [[-1, args.max_seq_len, 1], #src_id + [-1, args.max_seq_len, 1], #pos_id + [-1, args.max_seq_len, 1], #sent_id + [-1, args.max_seq_len, 1], #task_id + [-1, args.max_seq_len, 1], #input_mask + [-1, args.max_img_len, args.feature_size], #image_embedding + [-1, args.max_img_len, 5], #image_loc + [-1, args.max_img_len, 1], #image_mask + [-1, 1], #labels + [-1, 1], #qids + [], #task_index + [-1, 1], #binary_labels + ] + dtypes = ['int64', 'int64', 'int64', 'int64', 'float32', 'float32', 'float32', 'float32', + 'int64', 'int64', 'int64', 'float32'] + lod_levels = [0] * len(dtypes) + + for _ in task_group: + shapes.append([]) + dtypes.append('float') + lod_levels.append(0) + + pyreader = fluid.layers.py_reader( + capacity=30, + shapes=shapes, + dtypes=dtypes, + lod_levels=lod_levels, + name=pyreader_name, + use_double_buffer=False) + + inputs = fluid.layers.read_file(pyreader) + src_ids, pos_ids, sent_ids, task_ids, input_mask, image_embeddings, \ + image_loc, image_mask, labels, q_ids, task_index, binary_labels = inputs[: 12] + + ernie_vil = ErnieVilModel( + src_ids=src_ids, + position_ids=pos_ids, + sentence_ids=sent_ids, + task_ids=task_ids, + input_mask=input_mask, + image_embeddings=image_embeddings, + image_loc=image_loc, + input_image_mask=image_mask, + config=ernie_config + ) + + h_cls, h_img = ernie_vil.get_pooled_output() + task_conf = task_group[0] + fusion_method = task_conf["fusion_method"] + fusion_fea = ernie_vil.get_match_score(text=h_cls, image=h_img, \ + dropout_rate=task_conf["dropout_rate"], + mode=fusion_method) + if is_prediction: + num_choice = int(task_conf['num_choice']) + task_name = task_conf.get('task_prefix', 'vcr') + score = fluid.layers.fc(fusion_fea, 1, + param_attr = fluid.ParamAttr(name = task_name + "_fc.w_0", + initializer = fluid.initializer.TruncatedNormal(scale = 0.02)), + bias_attr = task_name + "_fc.b_0") + score = fluid.layers.reshape(score, shape = [-1, num_choice]) + _loss, _softmax = fluid.layers.softmax_with_cross_entropy(logits = score, + label = labels, return_softmax = True) + _acc = fluid.layers.accuracy(input = _softmax, label = labels) + pred = fluid.layers.argmax(score, axis = 1) + mean_loss = fluid.layers.mean(_loss) + task_vars = [mean_loss, _acc, pred, q_ids, labels, _softmax] + for var in task_vars: + var.persistable = True + return pyreader, task_vars + else: + start_ind = 12 + mean_loss = fluid.layers.zeros(shape = [1], dtype = 'float32') + mean_acc = fluid.layers.zeros(shape = [1], dtype = 'float32') + for task_conf in task_group: + task_weight = inputs[start_ind] + start_ind += 1 + num_choice = int(task_conf['num_choice']) + task_name = task_conf.get('task_prefix', 'vcr') + score = fluid.layers.fc(fusion_fea, 1, + param_attr = fluid.ParamAttr(name = task_name + "_fc.w_0", + initializer = fluid.initializer.TruncatedNormal(scale = 0.02)), + bias_attr = task_name + "_fc.b_0") + + _loss = fluid.layers.sigmoid_cross_entropy_with_logits(score, + binary_labels, name = "cross_entropy_loss") + tmp_score = fluid.layers.reshape(score, shape = [-1, num_choice]) + _softmax = fluid.layers.softmax(tmp_score) + _acc = fluid.layers.accuracy(input = _softmax, label = labels) + _mean_loss = fluid.layers.mean(_loss) + mean_loss += _mean_loss * task_weight + mean_acc += _acc * task_weight + task_vars = [fluid.layers.reduce_mean(mean_loss), mean_acc] + for var in task_vars: + var.persistable = True + + return pyreader, task_vars + + +#MODELS = {"vcr": create_vcr_model, "vqa": create_vqa_model, "refcoco+": create_refcoco_model} +MODELS = {"vcr": create_vcr_model} + +def predict_wrapper(args, + exe, + ernie_config, + task_group, + test_prog=None, + pyreader=None, + graph_vars=None): + """Context to do validation. + """ + reader_name = READERS[args.task_name] + data_reader = reader_name( + task_group, + split=args.test_split, + vocab_path=args.vocab_path, + is_test=True, + shuffle=False, + batch_size=args.batch_size, + epoch=args.epoch) + if args.do_test: + assert args.init_checkpoint is not None, "[FATAL] Please use --init_checkpoint '/path/to/checkpoints' \ + to specify you pretrained model checkpoints" + + init_pretraining_params(exe, args.init_checkpoint, test_prog) + print(("testing on %s %s split") % (args.task_name, args.test_split)) + + def predict(exe=exe, pyreader=pyreader): + """ + inference for downstream tasks + """ + pyreader.decorate_tensor_provider(data_reader.data_generator()) + pyreader.start() + + cost = 0 + appear_step = 0 + task_acc = {} + task_steps = {} + steps = 0 + case_f1 = 0 + appear_f1 = 0 + time_begin = time.time() + task_name_list = [v.name for v in graph_vars] + fetch_list = task_name_list + + print('task name list : ', task_name_list) + sum_acc = 0 + res_arr = [] + while True: + try: + outputs = exe.run(fetch_list=fetch_list, program=test_prog) + each_acc = outputs[1][0] + preds = np.reshape(outputs[2], [-1]) + qids = np.reshape(outputs[3], [-1]) + labels = np.reshape(outputs[4], [-1]) + scores = np.reshape(outputs[5], [-1, 4]) + sum_acc += each_acc + steps += 1 + if steps % 10 == 0: + print('cur_step:', steps, 'cur_acc:', sum_acc / steps) + format_result(res_arr, qids.tolist(), preds.tolist(), labels.tolist(), scores.tolist()) + except fluid.core.EOFException: + pyreader.reset() + break + + used_time = time.time() - time_begin + + with open(args.result_file, "w") as f: + for r in res_arr: + f.write(r + "\n") + + print("average_acc:", sum_acc / steps) + ret = {} + ret["acc"] = "acc: %f" % (sum_acc / steps) + for item in ret: + try: + ret[item] = ret[item].split(':')[-1] + except: + pass + return ret + return predict + + +def get_optimizer(total_loss, train_program, startup_prog, args): + """ + optimization func + """ + decay_steps_str=args.decay_steps + if decay_steps_str == "": + decay_steps = [] + else: + decay_steps = [int(s) for s in decay_steps_str.split(";")] + scheduled_lr = optimization( + loss=total_loss, + warmup_steps=args.warmup_steps, + num_train_steps=args.num_train_steps, + learning_rate=args.learning_rate, + train_program=train_program, + startup_prog=startup_prog, + weight_decay=args.weight_decay, + scheduler=args.lr_scheduler, + decay_steps=decay_steps, + lr_decay_ratio=args.lr_decay_ratio) + return scheduled_lr + + +def main(args): + """ + Main func for downstream tasks + """ + print("finetuning tasks start") + ernie_config = ErnieVilConfig(args.ernie_config_path) + ernie_config.print_config() + + with open(args.task_group_json) as f: + task_group = json.load(f) + print('task: ', task_group) + + startup_prog = fluid.Program() + if args.do_train and args.do_test: + print("can not set both do_train and do_test as True") + return + + model_name = MODELS[args.task_name] + if args.do_train: + train_program = fluid.Program() + with fluid.program_guard(train_program, startup_prog): + with fluid.unique_name.guard(): + train_pyreader, model_outputs = model_name( + pyreader_name='train_reader', ernie_config=ernie_config, task_group=task_group) + + total_loss = model_outputs[0] + scheduled_lr = get_optimizer(total_loss, train_program, startup_prog, args) + if args.do_test: + test_prog = fluid.Program() + with fluid.program_guard(test_prog, startup_prog): + with fluid.unique_name.guard(): + test_pyreader, model_outputs = model_name( + pyreader_name='test_reader', ernie_config=ernie_config, task_group=task_group, is_prediction=True) + total_loss = model_outputs[0] + + test_prog = test_prog.clone(for_test=True) + + if args.use_gpu: + gpu_id = 0 + if os.getenv("FLAGS_selected_gpus"): + gpu_id = int(os.getenv("FLAGS_selected_gpus")) + place = fluid.CUDAPlace(gpu_id) if args.use_gpu else fluid.CPUPlace() + + print("theoretical memory usage: ") + if args.do_train: + print(fluid.contrib.memory_usage( + program=train_program, batch_size=args.batch_size)) + if args.do_test: + print(fluid.contrib.memory_usage( + program=test_prog, batch_size=args.batch_size)) + + nccl2_num_trainers = 1 + nccl2_trainer_id = 0 + print("args.is_distributed:", args.is_distributed) + trainer_id = 0 + if args.is_distributed: + trainer_id = int(os.getenv("PADDLE_TRAINER_ID")) + worker_endpoints_env = os.getenv("PADDLE_TRAINER_ENDPOINTS") + current_endpoint = os.getenv("PADDLE_CURRENT_ENDPOINT") + worker_endpoints = worker_endpoints_env.split(",") + trainers_num = len(worker_endpoints) + + print("worker_endpoints:{} trainers_num:{} current_endpoint:{} \ + trainer_id:{}".format(worker_endpoints, trainers_num, + current_endpoint, trainer_id)) + + # prepare nccl2 env. + config = fluid.DistributeTranspilerConfig() + config.mode = "nccl2" + if args.nccl_comm_num > 1: + config.nccl_comm_num = args.nccl_comm_num + if args.use_hierarchical_allreduce and trainers_num > args.hierarchical_allreduce_inter_nranks: + config.use_hierarchical_allreduce=args.use_hierarchical_allreduce + config.hierarchical_allreduce_inter_nranks=args.hierarchical_allreduce_inter_nranks + + assert config.hierarchical_allreduce_inter_nranks > 1 + assert trainers_num % config.hierarchical_allreduce_inter_nranks == 0 + + config.hierarchical_allreduce_exter_nranks = \ + trainers_num / config.hierarchical_allreduce_inter_nranks + + t = fluid.DistributeTranspiler(config=config) + t.transpile( + trainer_id, + trainers=worker_endpoints_env, + current_endpoint=current_endpoint, + program=train_program, + startup_program=startup_prog) + + nccl2_num_trainers = trainers_num + nccl2_trainer_id = trainer_id + + exe = fluid.Executor(place) + exe.run(startup_prog) + + if args.do_train: + if args.init_checkpoint and args.init_checkpoint != "": + sys.stderr.write('############################WARNING############################') + sys.stderr.write('####### using init_pretraining_params, not init_checkpoint ####') + sys.stderr.write('## meaning hyper param e.g. lr won\'t inherit from checkpoint##') + sys.stderr.write('###############################################################') + init_pretraining_params(exe, args.init_checkpoint, train_program) + + reader_name=READERS[args.task_name] + data_reader = reader_name( + task_group, + split="train", + vocab_path=args.vocab_path, + batch_size=args.batch_size, + epoch=args.epoch,) + + exec_strategy = fluid.ExecutionStrategy() + if args.use_fast_executor: + exec_strategy.use_experimental_executor = True + exec_strategy.num_threads = 2 + + exec_strategy.num_iteration_per_drop_scope = min(10, args.skip_steps) + + build_strategy = fluid.compiler.BuildStrategy() + build_strategy.fuse_all_reduce_ops = False + + if args.use_fuse: + build_strategy.fuse_all_reduce_ops = True + + if args.do_train: + train_exe = fluid.ParallelExecutor( + use_cuda=args.use_cuda, + loss_name=total_loss.name, + build_strategy=build_strategy, + exec_strategy=exec_strategy, + main_program=train_program, + num_trainers=nccl2_num_trainers, + trainer_id=nccl2_trainer_id) + + if args.do_test: + predict = predict_wrapper( + args, + exe, + ernie_config, + task_group, + test_prog=test_prog, + pyreader=test_pyreader, + graph_vars=model_outputs) + result = predict() + + if args.do_train: + train_pyreader.decorate_tensor_provider(data_reader.data_generator()) + train_pyreader.start() + steps = 0 + time_begin = time.time() + node_nums = 1 #int(os.getenv("PADDLE_NODES_NUM")) + used_time_all = 0 + while steps < args.num_train_steps: + try: + steps += node_nums + skip_steps = args.skip_steps * node_nums + fetch_list = [] + if nccl2_trainer_id == 0 and steps % skip_steps == 0: + task_name_list = [v.name for v in model_outputs] + fetch_list = task_name_list + fetch_list.append(scheduled_lr.name) + + time_begin = time.time() + outputs = train_exe.run(fetch_list=fetch_list) + if outputs: + print("feed_queue size", train_pyreader.queue.size()) + progress_file = data_reader.get_progress() + epoch = progress_file["current_epoch"] + current_file_index = progress_file["current_file_index"] + total_file = progress_file["total_file"] + current_file = progress_file["current_file"] + print( + "epoch: %d, progress: %d/%d, step: %d, loss: %f, " + "acc: %f" + % (epoch, current_file_index, total_file, steps, + outputs[0][0], + outputs[1][0])) + print("steps:", steps) + print("save_steps:", args.save_steps) + + np_lr = outputs[-1:] + + date_str = datetime.datetime.now().strftime("%Y%m%d %H:%M:%S") + + np_lr = float(np.mean(np_lr[0])) + print("%s current learning_rate:%.8f" % (date_str, np_lr)) + + if steps % args.save_steps == 0: + save_path = os.path.join(args.checkpoints, "step_" + str(steps)) + print("save_path:", save_path) + fluid.io.save_persistables(exe, save_path, train_program) + time_end = time.time() + used_time = time_end - time_begin + time_end = time_begin + print("used_time:", used_time) + except fluid.core.EOFException: + train_pyreader.reset() + break + + +if __name__ == '__main__': + print_arguments(args) + main(args) + diff --git a/ernie-vil/model/__init__.py b/ernie-vil/model/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ernie-vil/model/ernie_vil.py b/ernie-vil/model/ernie_vil.py new file mode 100644 index 0000000..13b5309 --- /dev/null +++ b/ernie-vil/model/ernie_vil.py @@ -0,0 +1,288 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# 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. + +"""ERNIE-ViL model""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import json + +import six +import paddle.fluid as fluid + +from model.vl_transformer_encoder import encoder, pre_process_layer + + +class ErnieVilConfig(object): + """ + configuration for ernie-vil + """ + def __init__(self, config_path): + self._config_dict = self._parse(config_path) + + def _parse(self, config_path): + try: + with open(config_path) as json_file: + config_dict = json.load(json_file) + except Exception: + raise IOError("Error in parsing Ernie model config file '%s'" % + config_path) + else: + return config_dict + + def __getitem__(self, key): + return self._config_dict[key] + + def print_config(self): + """ + print configuration value + """ + for arg, value in sorted(six.iteritems(self._config_dict)): + print('%s: %s' % (arg, value)) + print('------------------------------------------------') + + +class ErnieVilModel(object): + """ + main class for ERNIE-ViL model + """ + def __init__(self, + src_ids, + position_ids, + sentence_ids, + task_ids, + input_mask, + image_embeddings, + image_loc, + input_image_mask, + config, + predict_feature=False, + predict_class=True, + use_attr=False, + use_soft_label=True): + + self._emb_size = config['hidden_size'] + self._n_layer = config['num_hidden_layers'] + self._n_head = config['num_attention_heads'] + + self._v_head = config['v_num_attention_heads'] + self._v_emb_size = config['v_hidden_size'] + self._v_inter_hid = config['v_intermediate_size'] + + self._co_head = config['co_num_attention_heads'] + self._co_emb_size = config['co_hidden_size'] + self._co_inter_hid = config['co_intermediate_size'] + + self._voc_size = config['vocab_size'] + self._class_size = config['class_size'] + self._class_attr_size = config['class_attr_size'] + self._max_position_seq_len = config['max_position_embeddings'] + self._sent_types = config['sent_type_vocab_size'] + self._task_types = config['task_type_vocab_size'] + self._hidden_act = config['hidden_act'] + self._prepostprocess_dropout = config['hidden_dropout_prob'] + self._attention_dropout = config['attention_probs_dropout_prob'] + self._v_biattention_id = config['v_biattention_id'] + self._t_biattention_id = config['t_biattention_id'] + + self._predict_feature = predict_feature + self._predict_class = predict_class + self._use_attr = use_attr + self._use_soft_label = use_soft_label + self._word_emb_name = "word_embedding" + self._pos_emb_name = "pos_embedding" + self._sent_emb_name = "sent_embedding" + self._image_emb_name = "image_embedding" + self._loc_emb_name = "loc_embedding" + self._dtype = "float32" + self._emb_dtype = "float32" + + # Initialize all weigths by truncated normal initializer, and all biases + # will be initialized by constant zero by default. + self._param_initializer = fluid.initializer.TruncatedNormal( + scale=config['initializer_range']) + + self._build_model(src_ids, position_ids, sentence_ids, task_ids, input_mask, \ + image_embeddings, image_loc, input_image_mask) + + def _build_model(self, src_ids, position_ids, sentence_ids, task_ids, input_mask, \ + image_embeddings, image_loc, input_image_mask): + # padding id in vocabulary must be set to 0 + emb_out = fluid.layers.embedding( + input=src_ids, + size=[self._voc_size, self._emb_size], + dtype=self._emb_dtype, + param_attr=fluid.ParamAttr( + name=self._word_emb_name, initializer=self._param_initializer), + is_sparse=False) + + position_emb_out = fluid.layers.embedding( + input=position_ids, + size=[self._max_position_seq_len, self._emb_size], + dtype=self._emb_dtype, + param_attr=fluid.ParamAttr( + name=self._pos_emb_name, initializer=self._param_initializer)) + + sent_emb_out = fluid.layers.embedding( + sentence_ids, + size=[self._sent_types, self._emb_size], + dtype=self._emb_dtype, + param_attr=fluid.ParamAttr( + name=self._sent_emb_name, initializer=self._param_initializer)) + + emb_out = emb_out + position_emb_out + emb_out = emb_out + sent_emb_out + + emb_out = pre_process_layer( + emb_out, 'nd', self._prepostprocess_dropout, name='pre_encoder') + + self_attn_mask = fluid.layers.matmul( + x=input_mask, y=input_mask, transpose_y=True) + + self_attn_mask = fluid.layers.scale( + x=self_attn_mask, scale=10000.0, bias=-1.0, bias_after_scale=False) + n_head_self_attn_mask = fluid.layers.stack( + x=[self_attn_mask] * self._n_head, axis=1) + n_head_self_attn_mask.stop_gradient = True + + image_embeddings = fluid.layers.fc(image_embeddings, + self._v_emb_size, + param_attr=fluid.ParamAttr( + name="image_emb.w_0", + initializer=self._param_initializer), + bias_attr = "image_emb.b_0", + num_flatten_dims = 2) + loc_emb_out = fluid.layers.fc(image_loc, + self._v_emb_size, + param_attr=fluid.ParamAttr( + name="image_loc.w_0", + initializer=self._param_initializer), + bias_attr = "image_loc.b_0", + num_flatten_dims = 2) + + emb_vl_out = image_embeddings + loc_emb_out + emb_vl_out = pre_process_layer( + emb_vl_out, 'nd', self._prepostprocess_dropout, name='vl_pre_encoder') + + self_attn_image_mask = fluid.layers.matmul( + x=input_image_mask, y=input_image_mask, transpose_y=True) + + self_attn_image_mask = fluid.layers.scale( + x=self_attn_image_mask, scale=10000.0, bias=-1.0, bias_after_scale=False) + n_head_self_attn_image_mask = fluid.layers.stack( + x=[self_attn_image_mask] * self._v_head, axis=1) + n_head_self_attn_image_mask.stop_gradient = True + + self_attn_vl_mask = fluid.layers.matmul( + x=input_image_mask, y=input_mask, transpose_y=True) + self_attn_vl_mask = fluid.layers.scale( + x=self_attn_vl_mask, scale=10000.0, bias=-1.0, bias_after_scale=False) + n_head_self_attn_vl_mask = fluid.layers.stack( + x=[self_attn_vl_mask] * self._co_head, axis=1) + n_head_self_attn_vl_mask.stop_gradient = True + + self._enc_out, self._enc_vl_out = encoder( + enc_input=emb_out, + enc_vl_input=emb_vl_out, + attn_bias=n_head_self_attn_mask, + attn_image_bias=n_head_self_attn_image_mask, + attn_vl_bias=n_head_self_attn_vl_mask, + n_layer=self._n_layer, + n_head=self._n_head, + d_key=self._emb_size // self._n_head, + d_value=self._emb_size // self._n_head, + d_model=self._emb_size, + d_inner_hid=self._emb_size * 4, + v_head=self._v_head, + v_key=self._v_emb_size // self._v_head, + v_value=self._v_emb_size // self._v_head, + v_model=self._v_emb_size, + v_inner_hid=self._v_inter_hid, + co_head=self._co_head, + co_key=self._co_emb_size // self._co_head, + co_value=self._co_emb_size // self._co_head, + co_model=self._co_emb_size, + co_inner_hid=self._co_inter_hid, + prepostprocess_dropout=self._prepostprocess_dropout, + attention_dropout=self._attention_dropout, + relu_dropout=0, + hidden_act=self._hidden_act, + preprocess_cmd="", + postprocess_cmd="dan", + param_initializer=self._param_initializer, + v_biattention_id = self._v_biattention_id, + t_biattention_id = self._t_biattention_id, + name='encoder') + + def get_sequence_output(self): + """ + Return sequence output of all text and img tokens + """ + return self._enc_out, self._enc_vl_out + + def get_pooled_output(self): + """ + Get the first feature of each sequence for classification + """ + text_cls_feat = fluid.layers.slice( + input=self._enc_out, axes=[1], starts=[0], ends=[1]) + + text_cls_feat = fluid.layers.cast( + x=text_cls_feat, dtype=self._emb_dtype) + + text_cls_feat = fluid.layers.fc( + input=text_cls_feat, + size=self._co_emb_size, + act="relu", + param_attr=fluid.ParamAttr( + name="pooled_fc_text.w_0", initializer=self._param_initializer), + bias_attr="pooled_fc_text.b_0") + + image_cls_feat = fluid.layers.slice( + input=self._enc_vl_out, axes=[1], starts=[0], ends=[1]) + + image_cls_feat = fluid.layers.cast( + x=image_cls_feat, dtype=self._emb_dtype) + + image_cls_feat = fluid.layers.fc( + input=image_cls_feat, + size=self._co_emb_size, + act="relu", + param_attr=fluid.ParamAttr( + name="pooled_fc_image.w_0", initializer=self._param_initializer), + bias_attr="pooled_fc_image.b_0") + return text_cls_feat, image_cls_feat + + def get_match_score(self, text, image, dropout_rate=0.0, mode="mul"): + """ + match score for text [cls] and image [img] tokens + """ + if mode == "sum": + emb_fuse = text + image + elif mode == "mul": + emb_fuse = text * image + else: + "current mode %s is not supported" % mode + return + if dropout_rate > 0.0: + + emb_fuse = fluid.layers.dropout(emb_fuse, + self._attention_dropout, + dropout_implementation="upscale_in_train") + return emb_fuse + + + diff --git a/ernie-vil/model/vl_transformer_encoder.py b/ernie-vil/model/vl_transformer_encoder.py new file mode 100644 index 0000000..0a47754 --- /dev/null +++ b/ernie-vil/model/vl_transformer_encoder.py @@ -0,0 +1,561 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# 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. + +"""two-stream Transformer encoder.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from functools import partial + +import paddle.fluid as fluid +import paddle.fluid.layers as layers + + +def multi_head_attention(queries, + keys, + values, + attn_bias, + d_key, + d_value, + d_model, + n_head=1, + dropout_rate=0., + cache=None, + param_initializer=None, + name='multi_head_att'): + """ + Multi-Head Attention. Note that attn_bias is added to the logit before + computing softmax activiation to mask certain selected positions so that + they will not considered in attention weights. + """ + keys = queries if keys is None else keys + values = keys if values is None else values + + if not (len(queries.shape) == len(keys.shape) == len(values.shape) == 3): + raise ValueError( + "Inputs: quries, keys and values should all be 3-D tensors.") + + def __compute_qkv(queries, keys, values, n_head, d_key, d_value): + """ + Add linear projection to queries, keys, and values. + """ + q = layers.fc(input=queries, + size=d_key * n_head, + num_flatten_dims=2, + param_attr=fluid.ParamAttr( + name=name + '_query_fc.w_0', + initializer=param_initializer), + bias_attr=name + '_query_fc.b_0') + k = layers.fc(input=keys, + size=d_key * n_head, + num_flatten_dims=2, + param_attr=fluid.ParamAttr( + name=name + '_key_fc.w_0', + initializer=param_initializer), + bias_attr=name + '_key_fc.b_0') + v = layers.fc(input=values, + size=d_value * n_head, + num_flatten_dims=2, + param_attr=fluid.ParamAttr( + name=name + '_value_fc.w_0', + initializer=param_initializer), + bias_attr=name + '_value_fc.b_0') + return q, k, v + + def __split_heads(x, n_head): + """ + Reshape the last dimension of inpunt tensor x so that it becomes two + dimensions and then transpose. Specifically, input a tensor with shape + [bs, max_sequence_length, n_head * hidden_dim] then output a tensor + with shape [bs, n_head, max_sequence_length, hidden_dim]. + """ + hidden_size = x.shape[-1] + # The value 0 in shape attr means copying the corresponding dimension + # size of the input as the output dimension size. + reshaped = layers.reshape( + x=x, shape=[0, 0, n_head, hidden_size // n_head], inplace=True) + + # permuate the dimensions into: + # [batch_size, n_head, max_sequence_len, hidden_size_per_head] + return layers.transpose(x=reshaped, perm=[0, 2, 1, 3]) + + def __combine_heads(x): + """ + Transpose and then reshape the last two dimensions of inpunt tensor x + so that it becomes one dimension, which is reverse to __split_heads. + """ + if len(x.shape) == 3: return x + if len(x.shape) != 4: + raise ValueError("Input(x) should be a 4-D Tensor.") + + trans_x = layers.transpose(x, perm=[0, 2, 1, 3]) + # The value 0 in shape attr means copying the corresponding dimension + # size of the input as the output dimension size. + return layers.reshape( + x=trans_x, + shape=[0, 0, trans_x.shape[2] * trans_x.shape[3]], + inplace=True) + + def scaled_dot_product_attention(q, k, v, attn_bias, d_key, dropout_rate): + """ + Scaled Dot-Product Attention + """ + scaled_q = layers.scale(x=q, scale=d_key ** -0.5) + product = layers.matmul(x=scaled_q, y=k, transpose_y=True) + if attn_bias: + product += attn_bias + weights = layers.softmax(product) + if dropout_rate: + weights = layers.dropout( + weights, + dropout_prob=dropout_rate, + dropout_implementation="upscale_in_train", + is_test=False) + out = layers.matmul(weights, v) + return out + + q, k, v = __compute_qkv(queries, keys, values, n_head, d_key, d_value) + + if cache is not None: # use cache and concat time steps + # Since the inplace reshape in __split_heads changes the shape of k and + # v, which is the cache input for next time step, reshape the cache + # input from the previous time step first. + k = cache["k"] = layers.concat( + [layers.reshape( + cache["k"], shape=[0, 0, d_model]), k], axis=1) + v = cache["v"] = layers.concat( + [layers.reshape( + cache["v"], shape=[0, 0, d_model]), v], axis=1) + + q = __split_heads(q, n_head) + k = __split_heads(k, n_head) + v = __split_heads(v, n_head) + + ctx_multiheads = scaled_dot_product_attention(q, k, v, attn_bias, d_key, + dropout_rate) + + out = __combine_heads(ctx_multiheads) + + # Project back to the model size. + proj_out = layers.fc(input=out, + size=d_model, + num_flatten_dims=2, + param_attr=fluid.ParamAttr( + name=name + '_output_fc.w_0', + initializer=param_initializer), + bias_attr=name + '_output_fc.b_0') + return proj_out + + +def positionwise_feed_forward(x, + d_inner_hid, + d_hid, + dropout_rate, + hidden_act, + param_initializer=None, + name='ffn'): + """ + Position-wise Feed-Forward Networks. + This module consists of two linear transformations with a ReLU activation + in between, which is applied to each position separately and identically. + """ + hidden = layers.fc(input=x, + size=d_inner_hid, + num_flatten_dims=2, + act=hidden_act, + param_attr=fluid.ParamAttr( + name=name + '_fc_0.w_0', + initializer=param_initializer), + bias_attr=name + '_fc_0.b_0') + if dropout_rate: + hidden = layers.dropout( + hidden, + dropout_prob=dropout_rate, + dropout_implementation="upscale_in_train", + is_test=False) + out = layers.fc(input=hidden, + size=d_hid, + num_flatten_dims=2, + param_attr=fluid.ParamAttr( + name=name + '_fc_1.w_0', initializer=param_initializer), + bias_attr=name + '_fc_1.b_0') + return out + + +def pre_post_process_layer(prev_out, out, process_cmd, dropout_rate=0., + name=''): + """ + Add residual connection, layer normalization and droput to the out tensor + optionally according to the value of process_cmd. + This will be used before or after multi-head attention and position-wise + feed-forward networks. + """ + for cmd in process_cmd: + if cmd == "a": # add residual connection + out = out + prev_out if prev_out else out + elif cmd == "n": # add layer normalization + out = layers.layer_norm( + out, + begin_norm_axis=len(out.shape) - 1, + param_attr=fluid.ParamAttr( + name=name + '_layer_norm_scale', + initializer=fluid.initializer.Constant(1.)), + bias_attr=fluid.ParamAttr( + name=name + '_layer_norm_bias', + initializer=fluid.initializer.Constant(0.))) + elif cmd == "d": # add dropout + if dropout_rate: + out = layers.dropout( + out, + dropout_prob=dropout_rate, + dropout_implementation="upscale_in_train", + is_test=False) + return out + + +pre_process_layer = partial(pre_post_process_layer, None) +post_process_layer = pre_post_process_layer + + +def encoder_co_layer(enc_input, + enc_vl_input, + attn_vl_bias, + co_head, + co_key, + co_value, + co_model, + d_model, + d_inner_hid, + v_model, + v_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd="n", + postprocess_cmd="da", + param_initializer=None, + name=''): + """ + Co_layer to perform co-attention from visual to language or from language to visual + """ + enc_input_pre = pre_process_layer( + enc_input, + preprocess_cmd, + prepostprocess_dropout, + name=name + '_pre_att') + + enc_input_vl_pre = pre_process_layer( + enc_vl_input, + preprocess_cmd, + prepostprocess_dropout, + name=name + '_vl_pre_att') + + attn_output = multi_head_attention( + enc_input_pre, + enc_input_vl_pre, + enc_input_vl_pre, + layers.transpose(attn_vl_bias, perm=[0, 1, 3, 2]), + co_key, + co_value, + d_model, + co_head, + attention_dropout, + param_initializer=param_initializer, + name=name + '_multi_head_att') + + attn_vl_output = multi_head_attention( + enc_input_vl_pre, + enc_input_pre, + enc_input_pre, + attn_vl_bias, + co_key, + co_value, + v_model, + co_head, + attention_dropout, + param_initializer=param_initializer, + name=name + '_vl_multi_head_att') + + attn_output = post_process_layer( + enc_input, + attn_output, + postprocess_cmd, + prepostprocess_dropout, + name=name + '_post_att') + + attn_vl_output = post_process_layer( + enc_vl_input, + attn_vl_output, + postprocess_cmd, + prepostprocess_dropout, + name=name + '_vl_post_att') + + ffd_output = positionwise_feed_forward( + pre_process_layer( + attn_output, + preprocess_cmd, + prepostprocess_dropout, + name=name + '_pre_ffn'), + d_inner_hid, + d_model, + relu_dropout, + hidden_act, + param_initializer=param_initializer, + name=name + '_ffn') + + ffd_vl_output = positionwise_feed_forward( + pre_process_layer( + attn_vl_output, + preprocess_cmd, + prepostprocess_dropout, + name=name + '_pre_vl_ffn'), + v_inner_hid, + v_model, + relu_dropout, + hidden_act, + param_initializer=param_initializer, + name=name + '_vl_ffn') + + enc_output = post_process_layer( + attn_output, + ffd_output, + postprocess_cmd, + prepostprocess_dropout, + name=name + '_post_ffn') + + enc_vl_output = post_process_layer( + attn_vl_output, + ffd_vl_output, + postprocess_cmd, + prepostprocess_dropout, + name=name + '_vl_post_ffn') + + return enc_output, enc_vl_output + + +def encoder_layer(enc_input, + attn_bias, + n_head, + d_key, + d_value, + d_model, + d_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd="n", + postprocess_cmd="da", + param_initializer=None, + name=''): + """The encoder layers that can be stacked to form a deep encoder. + This module consits of a multi-head (self) attention followed by + position-wise feed-forward networks and both the two components companied + with the post_process_layer to add residual connection, layer normalization + and droput. + """ + attn_output = multi_head_attention( + pre_process_layer( + enc_input, + preprocess_cmd, + prepostprocess_dropout, + name=name + '_pre_att'), + None, + None, + attn_bias, + d_key, + d_value, + d_model, + n_head, + attention_dropout, + param_initializer=param_initializer, + name=name + '_multi_head_att') + attn_output = post_process_layer( + enc_input, + attn_output, + postprocess_cmd, + prepostprocess_dropout, + name=name + '_post_att') + ffd_output = positionwise_feed_forward( + pre_process_layer( + attn_output, + preprocess_cmd, + prepostprocess_dropout, + name=name + '_pre_ffn'), + d_inner_hid, + d_model, + relu_dropout, + hidden_act, + param_initializer=param_initializer, + name=name + '_ffn') + return post_process_layer( + attn_output, + ffd_output, + postprocess_cmd, + prepostprocess_dropout, + name=name + '_post_ffn') + + +def encoder(enc_input, + enc_vl_input, + attn_bias, + attn_image_bias, + attn_vl_bias, + n_layer, + n_head, + d_key, + d_value, + d_model, + d_inner_hid, + v_head, + v_key, + v_value, + v_model, + v_inner_hid, + co_head, + co_key, + co_value, + co_model, + co_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd="n", + postprocess_cmd="da", + param_initializer=None, + v_biattention_id=[0, 1, 2, 3, 4, 5], + t_biattention_id=[18, 19, 20, 21, 22, 23], + name=''): + """ + The encoder is composed of a stack of identical layers returned by calling + encoder_layer and encoder_co_layer + """ + + v_start = 0 + t_start = 0 + block = 0 + + for v_layer_id, t_layer_id in zip(v_biattention_id, t_biattention_id): + v_end = v_layer_id + t_end = t_layer_id + for idx in range(t_start, t_end): + enc_output = encoder_layer( + enc_input, + attn_bias, + n_head, + d_key, + d_value, + d_model, + d_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd, + postprocess_cmd, + param_initializer=param_initializer, + name=name + '_layer_' + str(idx)) + enc_input = enc_output + + for idx in range(v_start, v_end): + enc_vl_output = encoder_layer( + enc_vl_input, + attn_image_bias, + v_head, + v_key, + v_value, + v_model, + v_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd, + postprocess_cmd, + param_initializer=param_initializer, + name=name + '_vlayer_' + str(idx)) + enc_vl_input = enc_vl_output + + enc_output, enc_vl_output = encoder_co_layer( + enc_input, + enc_vl_input, + attn_vl_bias, + co_head, + co_key, + co_value, + co_model, + d_model, + d_inner_hid, + v_model, + v_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd, + postprocess_cmd, + param_initializer=param_initializer, + name=name + '_colayer_' + str(block)) + + enc_input, enc_vl_input = enc_output, enc_vl_output + + block += 1 + v_start = v_end + t_start = t_end + + enc_output = encoder_layer( + enc_output, + attn_bias, + n_head, + d_key, + d_value, + d_model, + d_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd, + postprocess_cmd, + param_initializer=param_initializer, + name=name + '_layer_' + str(t_end)) + + enc_vl_output = encoder_layer( + enc_vl_output, + attn_image_bias, + v_head, + v_key, + v_value, + v_model, + v_inner_hid, + prepostprocess_dropout, + attention_dropout, + relu_dropout, + hidden_act, + preprocess_cmd, + postprocess_cmd, + param_initializer=param_initializer, + name=name + '_vlayer_' + str(v_end)) + + enc_output = pre_process_layer( + enc_output, preprocess_cmd, prepostprocess_dropout, name="post_encoder") + + enc_vl_output = pre_process_layer( + enc_vl_output, preprocess_cmd, prepostprocess_dropout, name="vl_post_encoder") + + return enc_output, enc_vl_output diff --git a/ernie-vil/optim/__init__.py b/ernie-vil/optim/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ernie-vil/optim/optimization.py b/ernie-vil/optim/optimization.py new file mode 100644 index 0000000..fb27665 --- /dev/null +++ b/ernie-vil/optim/optimization.py @@ -0,0 +1,167 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# 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. + +""" text preprocess """ + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import numpy as np +import paddle.fluid as fluid + +def manual_warmup_decay(learning_rate, warmup_steps, num_train_steps, decay_steps=[], lr_decay_ratio=0.1): + """ + Applies linear warmup of learning rate from 0 and keep constant. + """ + with fluid.default_main_program()._lr_schedule_guard(): + lr = fluid.layers.tensor.create_global_var( + shape=[1], + value=0.0, + dtype='float32', + persistable=True, + name="scheduled_learning_rate") + + global_step = fluid.layers.learning_rate_scheduler._decay_step_counter( + ) + with fluid.layers.control_flow.Switch() as switch: + with switch.case(global_step < warmup_steps): + warmup_lr = learning_rate * (global_step / warmup_steps) + fluid.layers.tensor.assign(warmup_lr, lr) + for i, step in enumerate(decay_steps): + with switch.case(global_step < step): + decayed_lr = learning_rate * (global_step / global_step) * pow(lr_decay_ratio, i) + fluid.layers.tensor.assign(decayed_lr, lr) + with switch.default(): + constant_lr = learning_rate * (global_step / global_step) * pow(lr_decay_ratio, len(decay_steps)) + fluid.layers.tensor.assign(constant_lr, lr) + + return lr + + +def linear_warmup_decay(learning_rate, warmup_steps, num_train_steps): + """ + Applies linear warmup of learning rate from 0 and decay to 0. + """ + with fluid.default_main_program()._lr_schedule_guard(): + lr = fluid.layers.tensor.create_global_var( + shape=[1], + value=0.0, + dtype='float32', + persistable=True, + name="scheduled_learning_rate") + + global_step = fluid.layers.learning_rate_scheduler._decay_step_counter( + ) + + with fluid.layers.control_flow.Switch() as switch: + with switch.case(global_step < warmup_steps): + warmup_lr = learning_rate * (global_step / warmup_steps) + fluid.layers.tensor.assign(warmup_lr, lr) + with switch.default(): + decayed_lr = fluid.layers.learning_rate_scheduler.polynomial_decay( + learning_rate=learning_rate, + decay_steps=num_train_steps, + end_learning_rate=0.0, + power=1.0, + cycle=False) + fluid.layers.tensor.assign(decayed_lr, lr) + + return lr + +def optimization(loss, + warmup_steps, + num_train_steps, + learning_rate, + train_program, + startup_prog, + weight_decay, + scheduler='linear_warmup_decay', + decay_steps=[], + lr_decay_dict_file="", + lr_decay_ratio=0.1): + """ + optimization implementation + """ + if warmup_steps > 0: + if scheduler == 'noam_decay': + scheduled_lr = fluid.layers.learning_rate_scheduler \ + .noam_decay(1 / (warmup_steps * (learning_rate ** 2)), + warmup_steps) + elif scheduler == 'linear_warmup_decay': + scheduled_lr = linear_warmup_decay(learning_rate, warmup_steps, + num_train_steps) + elif scheduler == 'manual_warmup_decay': + scheduled_lr = manual_warmup_decay(learning_rate, warmup_steps, + num_train_steps, decay_steps, lr_decay_ratio) + else: + raise ValueError("Unkown learning rate scheduler, should be " + "'noam_decay' or 'linear_warmup_decay' or 'manual_warmup_decay'") + else: + scheduled_lr = fluid.layers.create_global_var( + name=fluid.unique_name.generate("learning_rate"), + shape=[1], + value=learning_rate, + dtype='float32', + persistable=True) + + lr_decay_dict = {} + if lr_decay_dict_file != "": + with open(lr_decay_dict_file) as f: + for line in f: + param, decay_rate = line.strip().split('\t') + lr_decay_dict[param] = float(decay_rate) + + for param in fluid.default_main_program().block(0).all_parameters(): + if param.name in lr_decay_dict: + print (param.name, lr_decay_dict[param.name]) + param.optimize_attr['learning_rate'] = lr_decay_dict[param.name] + + optimizer = fluid.optimizer.Adam(learning_rate=scheduled_lr) + optimizer._learning_rate_map[fluid.default_main_program( + )] = scheduled_lr + + + fluid.clip.set_gradient_clip( + clip=fluid.clip.GradientClipByGlobalNorm(clip_norm=1.0)) + + def exclude_from_weight_decay(name): + """ + Parameters not use weight decay + """ + if name.find("layer_norm") > -1: + return True + bias_suffix = ["_bias", "_b", ".b_0"] + for suffix in bias_suffix: + if name.endswith(suffix): + return True + return False + + param_list = dict() + + for param in train_program.global_block().all_parameters(): + param_list[param.name] = param * 1.0 + param_list[param.name].stop_gradient = True + + _, param_grads = optimizer.minimize(loss) + + if weight_decay > 0: + for param, grad in param_grads: + if exclude_from_weight_decay(param.name): + continue + with param.block.program._optimized_guard( + [param, grad]), fluid.framework.name_scope("weight_decay"): + updated_param = param - param_list[ + param.name] * weight_decay * scheduled_lr * param.optimize_attr['learning_rate'] + fluid.layers.assign(output=param, input=updated_param) + + return scheduled_lr diff --git a/ernie-vil/preprocess/__init__.py b/ernie-vil/preprocess/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ernie-vil/preprocess/preprocessor.py b/ernie-vil/preprocess/preprocessor.py new file mode 100755 index 0000000..0cc0a80 --- /dev/null +++ b/ernie-vil/preprocess/preprocessor.py @@ -0,0 +1,46 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# 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. + +""" text preprocess """ + +import random +import sys +import os +import base64 +import numpy as np + +reload(sys) +sys.setdefaultencoding("utf-8") + +from preprocess import tokenization + +class PreprocessorBasic(object): + """ + Main class for text preprocess + """ + def __init__(self, + tokenizer_name, + vocab_path, + tagger_path="", + nltk_data_path="", + do_lower_case=True): + self.do_lower_case = do_lower_case + self.tokenizer = getattr(tokenization, tokenizer_name)(vocab_file=vocab_path, do_lower_case=do_lower_case) + self.vocab = self.tokenizer.vocab + + def convert_sentence_to_ids_without_cls(self, sentence): + """ + Convert sentence to ids without cls + """ + tokens = self.tokenizer.tokenize(sentence) + ids = self.tokenizer.convert_tokens_to_ids(tokens) + return ids diff --git a/ernie-vil/preprocess/tokenization.py b/ernie-vil/preprocess/tokenization.py new file mode 100644 index 0000000..a661203 --- /dev/null +++ b/ernie-vil/preprocess/tokenization.py @@ -0,0 +1,467 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# 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. + +""" tokenization implemnet """ + + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import collections +import unicodedata +import six +from functools import reduce + +def convert_to_unicode(text): + """Converts `text` to Unicode (if it's not already), assuming utf-8 input.""" + if six.PY3: + if isinstance(text, str): + return text + elif isinstance(text, bytes): + return text.decode("utf-8", "ignore") + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + elif six.PY2: + if isinstance(text, str): + return text.decode("utf-8", "ignore") + elif isinstance(text, unicode): + return text + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + else: + raise ValueError("Not running on Python2 or Python 3?") + + +def printable_text(text): + """Returns text encoded in a way suitable for print or `tf.logging`.""" + + # These functions want `str` for both Python2 and Python3, but in one case + # it's a Unicode string and in the other it's a byte string. + if six.PY3: + if isinstance(text, str): + return text + elif isinstance(text, bytes): + return text.decode("utf-8", "ignore") + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + elif six.PY2: + if isinstance(text, str): + return text + elif isinstance(text, unicode): + return text.encode("utf-8") + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + else: + raise ValueError("Not running on Python2 or Python 3?") + + +def load_vocab(vocab_file): + """Loads a vocabulary file into a dictionary.""" + vocab = collections.OrderedDict() + fin = open(vocab_file) + for num, line in enumerate(fin): + items = convert_to_unicode(line.strip()).split("\t") + if len(items) > 2: + break + token = items[0] + index = items[1] if len(items) == 2 else num + token = token.strip() + vocab[token] = int(index) + return vocab + + +def convert_by_vocab(vocab, items): + """Converts a sequence of [tokens|ids] using the vocab.""" + output = [] + for item in items: + output.append(vocab[item]) + return output + + +def convert_tokens_to_ids(vocab, tokens): + """ + Converts tokens to ids + """ + return convert_by_vocab(vocab, tokens) + + +def convert_ids_to_tokens(inv_vocab, ids): + """ + Converts ids to tokens + """ + return convert_by_vocab(inv_vocab, ids) + + +def whitespace_tokenize(text): + """Runs basic whitespace cleaning and splitting on a peice of text.""" + text = text.strip() + if not text: + return [] + tokens = text.split() + return tokens + + +class FullTokenizer(object): + """Runs end-to-end tokenziation.""" + + def __init__(self, vocab_file, do_lower_case=True): + self.vocab = load_vocab(vocab_file) + self.inv_vocab = {v: k for k, v in self.vocab.items()} + self.basic_tokenizer = BasicTokenizer(do_lower_case=do_lower_case) + self.wordpiece_tokenizer = WordpieceTokenizer(vocab=self.vocab) + + def tokenize(self, text): + """ + turn text into tokens + """ + split_tokens = [] + for token in self.basic_tokenizer.tokenize(text): + for sub_token in self.wordpiece_tokenizer.tokenize(token): + split_tokens.append(sub_token) + + return split_tokens + + def tokenize_case(self, text): + """ + tokenize case + """ + split_tokens = [] + case_indexs = [] + basic_tokens, case_index = self.basic_tokenizer.tokenize_case(text) + case_indexs += case_index + case_indexs = [[i] for i in case_indexs] + + for token_index, token in enumerate(basic_tokens): + wordpiece_tokens = self.wordpiece_tokenizer.tokenize(token) + if len(wordpiece_tokens) > 1: + case_indexs[token_index] = case_indexs[token_index]*(len(wordpiece_tokens)) + for sub_token in wordpiece_tokens: + split_tokens.append(sub_token) + + if case_indexs: + case_indexs = reduce(lambda x, y: x + y, case_indexs) + return split_tokens, case_indexs + + def convert_tokens_to_ids(self, tokens): + """ + Converts tokens to ids + """ + return convert_by_vocab(self.vocab, tokens) + + def convert_ids_to_tokens(self, ids): + """ + Converts ids to tokens + """ + return convert_by_vocab(self.inv_vocab, ids) + + +class CharTokenizer(object): + """Runs end-to-end tokenziation.""" + + def __init__(self, vocab_file, do_lower_case=True): + self.vocab = load_vocab(vocab_file) + self.inv_vocab = {v: k for k, v in self.vocab.items()} + self.wordpiece_tokenizer = WordpieceTokenizer(vocab=self.vocab) + + def tokenize(self, text): + """ + Convert text to tokens + """ + split_tokens = [] + for token in text.lower().split(" "): + for sub_token in self.wordpiece_tokenizer.tokenize(token): + split_tokens.append(sub_token) + + return split_tokens + + def convert_tokens_to_ids(self, tokens): + """ + Convert tokens to ids + """ + return convert_by_vocab(self.vocab, tokens) + + def convert_ids_to_tokens(self, ids): + """ + Convert tokens to ids + """ + return convert_by_vocab(self.inv_vocab, ids) + + +class BasicTokenizer(object): + """Runs basic tokenization (punctuation splitting, lower casing, etc.).""" + + def __init__(self, do_lower_case=True): + """Constructs a BasicTokenizer. + + Args: + do_lower_case: Whether to lower case the input. + """ + self.do_lower_case = do_lower_case + + def tokenize(self, text): + """Tokenizes a piece of text.""" + text = convert_to_unicode(text) + text = self._clean_text(text) + + # This was added on November 1st, 2018 for the multilingual and Chinese + # models. This is also applied to the English models now, but it doesn't + # matter since the English models were not trained on any Chinese data + # and generally don't have any Chinese data in them (there are Chinese + # characters in the vocabulary because Wikipedia does have some Chinese + # words in the English Wikipedia.). + text = self._tokenize_chinese_chars(text) + + orig_tokens = whitespace_tokenize(text) + split_tokens = [] + for token in orig_tokens: + if self.do_lower_case: + token = token.lower() + token = self._run_strip_accents(token) + split_tokens.extend(self._run_split_on_punc(token)) + + output_tokens = whitespace_tokenize(" ".join(split_tokens)) + return output_tokens + + def tokenize_case(self, text): + """ + tokenize case + """ + text = convert_to_unicode(text) + text = self._clean_text(text) + text = self._tokenize_chinese_chars(text) + + orig_tokens = whitespace_tokenize(text) + split_tokens = [] + case_index = [] + + for token in orig_tokens: + if self.do_lower_case: + if token.istitle(): + case_index.append(1) + else: + case_index.append(0) + token = token.lower() + token = self._run_strip_accents(token) + if token == '': + case_index.pop() + + tmpsplit_tokens, case_index = self._run_split_on_punc_case(token, case_index) + split_tokens.extend(tmpsplit_tokens) + + output_tokens = whitespace_tokenize(" ".join(split_tokens)) + return output_tokens, case_index + + def _run_strip_accents(self, text): + """Strips accents from a piece of text.""" + text = unicodedata.normalize("NFD", text) + output = [] + for char in text: + cat = unicodedata.category(char) + if cat == "Mn": + continue + output.append(char) + return "".join(output) + + def _run_split_on_punc(self, text): + """Splits punctuation on a piece of text.""" + chars = list(text) + i = 0 + start_new_word = True + output = [] + while i < len(chars): + char = chars[i] + if _is_punctuation(char): + output.append([char]) + start_new_word = True + else: + if start_new_word: + output.append([]) + start_new_word = False + output[-1].append(char) + i += 1 + + return ["".join(x) for x in output] + + def _run_split_on_punc_case(self, text, case_index): + """Splits punctuation on a piece of text.""" + chars = list(text) + i = 0 + start_new_word = True + output = [] + + while i < len(chars): + char = chars[i] + if _is_punctuation(char): + output.append([char]) + start_new_word = True + else: + if start_new_word: + output.append([]) + start_new_word = False + output[-1].append(char) + i += 1 + + if len(output) > 1: + case_index.extend([case_index[-1]]*(len(output)-1)) + + return ["".join(x) for x in output], case_index + + def _tokenize_chinese_chars(self, text): + """Adds whitespace around any CJK character.""" + output = [] + for char in text: + cp = ord(char) + if self._is_chinese_char(cp): + output.append(" ") + output.append(char) + output.append(" ") + else: + output.append(char) + return "".join(output) + + def _is_chinese_char(self, cp): + """Checks whether CP is the codepoint of a CJK character.""" + # This defines a "chinese character" as anything in the CJK Unicode block: + # https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block) + # + # Note that the CJK Unicode block is NOT all Japanese and Korean characters, + # despite its name. The modern Korean Hangul alphabet is a different block, + # as is Japanese Hiragana and Katakana. Those alphabets are used to write + # space-separated words, so they are not treated specially and handled + # like the all of the other languages. + if ((cp >= 0x4E00 and cp <= 0x9FFF) or # + (cp >= 0x3400 and cp <= 0x4DBF) or # + (cp >= 0x20000 and cp <= 0x2A6DF) or # + (cp >= 0x2A700 and cp <= 0x2B73F) or # + (cp >= 0x2B740 and cp <= 0x2B81F) or # + (cp >= 0x2B820 and cp <= 0x2CEAF) or + (cp >= 0xF900 and cp <= 0xFAFF) or # + (cp >= 0x2F800 and cp <= 0x2FA1F)): # + return True + + return False + + def _clean_text(self, text): + """Performs invalid character removal and whitespace cleanup on text.""" + output = [] + for char in text: + cp = ord(char) + if cp == 0 or cp == 0xfffd or _is_control(char): + continue + if _is_whitespace(char): + output.append(" ") + else: + output.append(char) + return "".join(output) + + +class WordpieceTokenizer(object): + """Runs WordPiece tokenziation.""" + + def __init__(self, vocab, unk_token="[UNK]", max_input_chars_per_word=100): + self.vocab = vocab + self.unk_token = unk_token + self.max_input_chars_per_word = max_input_chars_per_word + + def tokenize(self, text): + """Tokenizes a piece of text into its word pieces. + + This uses a greedy longest-match-first algorithm to perform tokenization + using the given vocabulary. + + For example: + input = "unaffable" + output = ["un", "##aff", "##able"] + + Args: + text: A single token or whitespace separated tokens. This should have + already been passed through `BasicTokenizer. + + Returns: + A list of wordpiece tokens. + """ + + text = convert_to_unicode(text) + + output_tokens = [] + for token in whitespace_tokenize(text): + chars = list(token) + if len(chars) > self.max_input_chars_per_word: + output_tokens.append(self.unk_token) + continue + + is_bad = False + start = 0 + sub_tokens = [] + while start < len(chars): + end = len(chars) + cur_substr = None + while start < end: + substr = "".join(chars[start:end]) + if start > 0: + substr = "##" + substr + if substr in self.vocab: + cur_substr = substr + break + end -= 1 + if cur_substr is None: + is_bad = True + break + sub_tokens.append(cur_substr) + start = end + + if is_bad: + output_tokens.append(self.unk_token) + else: + output_tokens.extend(sub_tokens) + return output_tokens + + +def _is_whitespace(char): + """Checks whether `chars` is a whitespace character.""" + # \t, \n, and \r are technically contorl characters but we treat them + # as whitespace since they are generally considered as such. + if char == " " or char == "\t" or char == "\n" or char == "\r": + return True + cat = unicodedata.category(char) + if cat == "Zs": + return True + return False + + +def _is_control(char): + """Checks whether `chars` is a control character.""" + # These are technically control characters but we count them as whitespace + # characters. + if char == "\t" or char == "\n" or char == "\r": + return False + cat = unicodedata.category(char) + if cat.startswith("C"): + return True + return False + + +def _is_punctuation(char): + """Checks whether `chars` is a punctuation character.""" + cp = ord(char) + # We treat all non-letter/number ASCII as punctuation. + # Characters such as "^", "$", and "`" are not in the Unicode + # Punctuation class but we treat them as punctuation anyways, for + # consistency. + if ((cp >= 33 and cp <= 47) or (cp >= 58 and cp <= 64) or + (cp >= 91 and cp <= 96) or (cp >= 123 and cp <= 126)): + return True + cat = unicodedata.category(char) + if cat.startswith("P"): + return True + return False diff --git a/ernie-vil/reader/__init__.py b/ernie-vil/reader/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ernie-vil/reader/_image_features_reader.py b/ernie-vil/reader/_image_features_reader.py new file mode 100644 index 0000000..2866bef --- /dev/null +++ b/ernie-vil/reader/_image_features_reader.py @@ -0,0 +1,79 @@ +""" +Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +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. +""" +import numpy as np +import copy +import pickle +import lmdb # install lmdb by "pip install lmdb" +import base64 + +class ImageFeaturesH5Reader(object): + """ + Reader class + """ + def __init__(self, features_path): + self.features_path = features_path + self.env = lmdb.open(self.features_path, max_readers=1, readonly=True, + lock=False, readahead=False, meminit=False) + + with self.env.begin(write=False) as txn: + self._image_ids = pickle.loads(txn.get('keys'.encode())) + + self.features = [None] * len(self._image_ids) + self.num_boxes = [None] * len(self._image_ids) + self.boxes = [None] * len(self._image_ids) + self.boxes_ori = [None] * len(self._image_ids) + + def __len__(self): + return len(self._image_ids) + + def __getitem__(self, image_id): + image_id = str(image_id).encode() + index = self._image_ids.index(image_id) + # Read chunk from file everytime if not loaded in memory. + with self.env.begin(write=False) as txn: + item = pickle.loads(txn.get(image_id)) + image_id = item['image_id'] + image_h = int(item['image_h']) + image_w = int(item['image_w']) + num_boxes = int(item['num_boxes']) + + features = np.frombuffer(base64.b64decode(item["features"]), dtype=np.float32).reshape(num_boxes, 2048) + boxes = np.frombuffer(base64.b64decode(item['boxes']), dtype=np.float32).reshape(num_boxes, 4) + g_feat = np.sum(features, axis=0) / num_boxes + num_boxes = num_boxes + 1 + features = np.concatenate([np.expand_dims(g_feat, axis=0), features], axis=0) + image_location = np.zeros((boxes.shape[0], 5), dtype=np.float32) + image_location[:, :4] = boxes + image_location[:, 4] = (image_location[:, 3] - image_location[:, 1]) * \ + (image_location[:, 2] - image_location[:, 0]) / (float(image_w) * float(image_h)) + + image_location_ori = copy.deepcopy(image_location) + image_location[:, 0] = image_location[:, 0] / float(image_w) + image_location[:, 1] = image_location[:, 1] / float(image_h) + image_location[:, 2] = image_location[:, 2] / float(image_w) + image_location[:, 3] = image_location[:, 3] / float(image_h) + + g_location = np.array([0, 0, 1, 1, 1]) + image_location = np.concatenate([np.expand_dims(g_location, axis=0), image_location], axis=0) + + g_location_ori = np.array([0, 0, image_w, image_h, image_w * image_h]) + image_location_ori = np.concatenate([np.expand_dims(g_location_ori, axis=0), image_location_ori], axis=0) + + data_json = {"features": features, + "num_boxes": num_boxes, + "image_location": image_location, + "image_location_ori": image_location_ori + } + return data_json + diff --git a/ernie-vil/reader/vcr_finetuning.py b/ernie-vil/reader/vcr_finetuning.py new file mode 100644 index 0000000..7834557 --- /dev/null +++ b/ernie-vil/reader/vcr_finetuning.py @@ -0,0 +1,473 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# 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. + +""" VCR Data Reader implementation """ + +from __future__ import print_function +from __future__ import division + +import os +import base64 +import numpy as np +import re +import random +import json +import json_lines +import csv +import sys +import itertools + +from reader._image_features_reader import ImageFeaturesH5Reader +from preprocess import preprocessor +from batching.finetune_batching import prepare_batch_data + +import paddle.fluid as fluid + +def _converId(img_id): + """ + conversion for image ID + """ + img_id = img_id.split('-') + if 'train' in img_id[0]: + new_id = int(img_id[1]) + elif 'val' in img_id[0]: + new_id = int(img_id[1]) + 1000000 + elif 'test' in img_id[0]: + new_id = int(img_id[1]) + 2000000 + else: + print("no split known") + return new_id + + +def _load_annotationsQ_A(annotations_jsonpath, split): + """ + Build an index out of FOIL annotations, mapping each image ID with its corresponding captions. + """ + entries = [] + with open(annotations_jsonpath) as f: + for annotation in json_lines.reader(f): + det_names = "" + question = annotation["question"] + if split == 'test': + ans_label = 0 + else: + ans_label = annotation["answer_label"] + img_id = _converId(annotation["img_id"]) + anno_id = int(annotation["annot_id"].split('-')[1]) + entries.append( + {"question": question, + "answers": annotation["answer_choices"], + "metadata_fn": annotation["metadata_fn"], + "target": ans_label, + "img_id": img_id, + "anno_id": anno_id, + "det_names": annotation['objects'] + }) + return entries + + +def _load_annotationsQA_R(annotations_jsonpath, split): + """ + Build an index out of FOIL annotations, mapping each image ID with its corresponding captions. + """ + entries = [] + with open(annotations_jsonpath, 'rb') as f: + for annotation in json_lines.reader(f): + if split == 'test': + for answer in annotation["answer_choices"]: + question = annotation["question"] + ["[MARK]"] + answer + img_id = _converId(annotation["img_id"]) + ans_label = 0 + anno_id = int(annotation["annot_id"].split('-')[1]) + entries.append( + {"question": question, + "answers": annotation["rationale_choices"], + "metadata_fn": annotation["metadata_fn"], + "target": ans_label, + "img_id": img_id, + "anno_id": anno_id, + "det_names": annotation['objects'] + }) + else: + det_names = "" + question = annotation["question"] + ["[MARK]"] + \ + annotation["answer_choices"][annotation['answer_label']] + ans_label = annotation["rationale_label"] + img_id = _converId(annotation["img_id"]) + anno_id = int(annotation["annot_id"].split('-')[1]) + entries.append( + {"question": question, + "answers": annotation["rationale_choices"], + "metadata_fn": annotation["metadata_fn"], + "target": ans_label, + "img_id": img_id, + "anno_id": anno_id, + "det_names": annotation['objects']}) + return entries + + +class VCRDataReader(object): + """ + Data reader for sub VCR task + """ + def __init__(self, + task_conf, + split, + vocab_path=None, + batch_size=4096, + shuffle=True, + epoch=100, + is_test=False, + feature_reader_dict={}, + random_seed=None, + task_index=0, + task_num=1): + + self.task_conf = task_conf + self.processor = getattr(preprocessor, + task_conf["Proprocessor"])(tokenizer_name=self.task_conf["tokenizer_name"], + vocab_path=vocab_path) + self.vocab = self.processor.vocab + self.batch_size = batch_size + self.shuffle = shuffle + self.epoch = epoch + self.current_epoch = 0 + self.current_file_index = 0 + self.total_file = 0 + self.current_file = None + self.random_seed = random_seed + self.max_seq_len = self.task_conf['max_seq_len'] + self.pad_id = self.vocab["[PAD]"] + self.cls_id = self.vocab["[CLS]"] + self.sep_id = self.vocab["[SEP]"] + self.mask_id = self.vocab["[MASK]"] + self.is_test = is_test + self.task_index = task_index + self.task_num = task_num + + if self.is_test: + self.epoch = 1 + self.shuffle_files = False + if self.shuffle: + shufflekeep_across_task = self.task_conf.get('shufflekeep_across_task', True) + if shufflekeep_across_task: + self.global_rng = np.random.RandomState(random_seed) + else: + self.global_rng = np.random.RandomState() + self.shuffle_every_epoch = self.task_conf.get('shuffle_every_epoch', False) + task=self.task_conf['task'] + annotations_jsonpath=self.task_conf['annotations_jsonpath_' + split] + self.num_choice = int(self.task_conf['num_choice']) + if task == 'VCR_Q-A': + self._entries = _load_annotationsQ_A(annotations_jsonpath, split) + elif task == "VCR_QA-R": + self._entries = _load_annotationsQA_R(annotations_jsonpath, split) + else: + assert False + self._split = split + self._names = [] + with open(self.task_conf['unisex_names_table']) as csv_file: + csv_reader = csv.reader(csv_file, delimiter=',') + for row in csv_reader: + if row[1] != 'name': + self._names.append(row[1]) + self._feature_reader = feature_reader_dict[self.task_conf['feature_lmdb_path']] + self.use_gt_fea = task_conf.get('use_gt_fea', False) + if self.use_gt_fea: + self._gt_feature_reader = feature_reader_dict[self.task_conf['gt_feature_lmdb_path']] + self._max_region_num = self.task_conf.get('max_region_num', 100) + print("use gt featurre") + else: + self._max_region_num = self.task_conf.get('max_region_num', 37) + print("only butd feature") + self.tokenize() + + def generate_random_name(self, det_names): + """ + Replace "person" with a random name + """ + random_name = [] + for name in det_names: + if name == 'person': + word = random.choice(self._names) + else: + word = name + random_name.append(word) + + return random_name + + def replace_det_with_name(self, inputs, random_names): + """ + Replace det with name + """ + tokens = [] + mask = [] + for w in inputs: + if isinstance(w, list): + for idx in w: + word = random_names[idx] + tokens.append(word) + else: + word = w.encode('utf-8') + tokens.append(word) + + return tokens, mask + + def _truncate_seq_pair(self, tokens_a, tokens_b, max_length): + """ + Truncates a sequence pair in place to the maximum length. + """ + while True: + total_length = len(tokens_a) + len(tokens_b) + if total_length <= max_length: + break + if len(tokens_a) > len(tokens_b): + tokens_a.pop() + else: + tokens_b.pop() + + def get_progress(self): + """ + Return current progress of traning data + """ + progress_dict = {"current_epoch": self.current_epoch, + "current_file_index": self.current_file_index, + "total_file": self.total_file, + "current_file": self.current_file + } + return progress_dict + + def tokenize(self): + """ + Tokenizes the captions. + """ + # This will add caption_tokens in each entry of the dataset. + # -1 represents nil, and should be treated as padding_idx in embedding. + count = 0 + for entry in self._entries: + det_names = entry["det_names"] + random_names = self.generate_random_name(det_names) + # replace with name + tokens_a, mask_a = self.replace_det_with_name(entry["question"], random_names) + q_str = " ".join(tokens_a) + ids_a = [] + for i, q in enumerate(q_str.split(" [MARK] ")): + if i == 1: + ids_a.append(self.vocab["[SEP]"]) + ids_a = ids_a + self.processor.convert_sentence_to_ids_without_cls(q) + + input_ids_all = [] + segment_ids_all = [] + input_poss_all = [] + input_len_all = [] + + for answer in entry["answers"]: + tokens_b, mask_b = self.replace_det_with_name(answer, random_names) + ids_b = self.processor.convert_sentence_to_ids_without_cls(" ".join(tokens_b)) + + self._truncate_seq_pair(ids_a, ids_b, self.max_seq_len - 3) + + input_ids = [] + segment_ids = [] + input_ids.append(self.vocab["[CLS]"]) + segment_ids.append(0) + + for id in ids_a: + input_ids.append(id) + segment_ids.append(0) + + input_ids.append(self.vocab["[SEP]"]) + segment_ids.append(0) + + assert len(ids_b) > 0 + for id in ids_b: + input_ids.append(id) + segment_ids.append(1) + input_ids.append(self.vocab["[SEP]"]) + segment_ids.append(1) + + input_ids_all.append(input_ids) + segment_ids_all.append(segment_ids) + input_poss = [str(pos) for pos in range(len(input_ids))] + input_poss_all.append(input_poss) + input_len_all.append(len(input_ids)) + + entry["input_ids"] = input_ids_all + entry["input_poss"] = input_poss_all + entry["segment_ids"] = segment_ids_all + entry["input_lens"] = input_len_all + + sys.stdout.write('%d/%d\r' % (count, len(self._entries))) + sys.stdout.flush() + count += 1 + + def parse_line(self, s_index): + """ + Form slot info with the line information + """ + entry = self._entries[s_index] + image_id = entry["img_id"] + image_fea_json = self._feature_reader[image_id] + features = image_fea_json["features"] + num_boxes = image_fea_json["num_boxes"] + boxes = image_fea_json["image_location"] + if not self.use_gt_fea: + num_boxes = min(num_boxes, self._max_region_num) + boxes = boxes[:num_boxes] + features = features[:num_boxes] + else: + boxes = boxes[:num_boxes] + features = features[:num_boxes] + image_fea_json = self._gt_feature_reader[image_id] + gt_features = image_fea_json["features"] + gt_num_boxes = image_fea_json["num_boxes"] + gt_boxes = image_fea_json["image_location"] + features[0] = (features[0] * num_boxes + gt_features[0] * gt_num_boxes) / (num_boxes + gt_num_boxes) + + gt_boxes = gt_boxes[1: gt_num_boxes] + gt_features = gt_features[1: gt_num_boxes] + gt_num_boxes = gt_num_boxes - 1 + + gt_box_preserve = min(self._max_region_num - 1, gt_num_boxes) + gt_boxes = gt_boxes[:gt_box_preserve] + gt_features = gt_features[:gt_box_preserve] + gt_num_boxes = gt_box_preserve + + num_box_preserve = min(self._max_region_num - int(gt_num_boxes), int(num_boxes)) + boxes = boxes[:num_box_preserve] + features = features[:num_box_preserve] + + # concatenate the boxes + mix_boxes = np.concatenate((boxes, gt_boxes), axis=0) + mix_features = np.concatenate((features, gt_features), axis=0) + mix_num_boxes = num_box_preserve + int(gt_num_boxes) + + num_boxes = min(mix_num_boxes, self._max_region_num) + boxes = mix_boxes[:num_boxes] + features = mix_features[:num_boxes] + record = { + "input_ids": entry["input_ids"], + "input_pos": entry["input_poss"], + "segment_ids": entry["segment_ids"], + "input_lens": entry["input_lens"], + "target": int(entry["target"]), + "features": features, + "boxes": boxes, + "anno_id": entry["anno_id"] + } + return record + + def data_generator(self): + """ + Data_generator + """ + sample_indice = range(len(self._entries)) + def wrapper(): + """ + Wrapper + """ + for epoch_index in range(self.epoch): + if self._split == "train": + self.current_example = 0 + self.current_epoch = epoch_index + if self.shuffle: + if epoch_index == 0: + self.global_rng.shuffle(sample_indice) + print("shuffle epoch %d" % epoch_index) + elif self.shuffle_every_epoch: + self.global_rng.shuffle(sample_indice) + print("shuffle epoch %d" % epoch_index) + batch_records = [] + for index in sample_indice: + batch_records.append(self.parse_line(index)) + if len(batch_records) == self.batch_size: + yield prepare_batch_data( + batch_records, self.num_choice, self.pad_id, \ + self.task_index, self.task_num), self.task_conf['task'] + batch_records = [] + if len(batch_records) > 0: + yield prepare_batch_data( + batch_records, self.num_choice, self.pad_id, \ + self.task_index, self.task_num), self.task_conf['task'] + return wrapper + + +class VCRDataJointReader(object): + """ + Joint data reader for Q2A task and QA2R task + """ + def __init__(self, + task_conf_group, + split, + batch_size=4096, + shuffle=True, + epoch=100, + vocab_path=None, + is_test=False): + + self.task_readers = [] + feature_reader_dict = {} + self.task_dup_cnt = [] + for task_conf in task_conf_group: + if 'feature_lmdb_path' in task_conf: + if task_conf['feature_lmdb_path'] not in feature_reader_dict: + feature_reader_dict[task_conf['feature_lmdb_path']] = \ + ImageFeaturesH5Reader(task_conf['feature_lmdb_path']) + if 'gt_feature_lmdb_path' in task_conf and task_conf.get('use_gt_fea', False): + if task_conf['gt_feature_lmdb_path'] not in feature_reader_dict: + feature_reader_dict[task_conf['gt_feature_lmdb_path']] = \ + ImageFeaturesH5Reader(task_conf['gt_feature_lmdb_path']) + task_batch_size = task_conf.get('batch_size', 64) + self.task_dup_cnt.append(max(int(task_batch_size / batch_size), 1)) + random_seed=np.random.randint(1000) + for task_index, task_conf in enumerate(task_conf_group): + self.task_readers.append(VCRDataReader(task_conf, split, vocab_path, batch_size, shuffle, + epoch, is_test, feature_reader_dict, random_seed, task_index, len(task_conf_group))) + self.task_generators = [reader.data_generator() for reader in self.task_readers] + + def get_progress(self): + """ + Return current progress of traning data + """ + current_epoch = max([reader.current_epoch for reader in self.task_readers]) + current_file_index = max([reader.current_file_index for reader in self.task_readers]) + total_file = max([reader.total_file for reader in self.task_readers]) + current_file = "" + self.progress_dict = {"current_epoch": current_epoch, + "current_file_index": current_file_index, + "total_file": total_file, + "current_file": current_file + } + return self.progress_dict + + def data_generator(self): + """ + Data_generator + """ + def wrapper(): + """ + warpper + """ + task_buffer = [[] for i in range(len(self.task_dup_cnt))] + for data in itertools.izip(*[generator() for generator in self.task_generators]): + for i, d in enumerate(data): + task_buffer[i].append(d) + if len(task_buffer[i]) >= self.task_dup_cnt[i]: + for t in task_buffer[i]: + yield t[0] + task_buffer[i] = [] + + return wrapper + + +if __name__ == "__main__": + pass diff --git a/ernie-vil/requirements.txt b/ernie-vil/requirements.txt new file mode 100644 index 0000000..525c143 --- /dev/null +++ b/ernie-vil/requirements.txt @@ -0,0 +1,8 @@ +nltk==3.2.4 +numpy==1.14.3 +scipy==1.2.1 +six==1.11.0 +json_lines==0.5.0 +lmdb==0.97 +opencv-python==3.2.0.8 +paddlepaddle-gpu==1.8.3.post97 diff --git a/ernie-vil/run_finetuning.sh b/ernie-vil/run_finetuning.sh new file mode 100644 index 0000000..7807240 --- /dev/null +++ b/ernie-vil/run_finetuning.sh @@ -0,0 +1,59 @@ +set -eu +set -x + +#bash -x ./env.sh + +TASK_NAME=$1 +CONF_FILE=$2 +VOCAB_PATH=$3 +ERNIE_VIL_CONFIG=$4 +PRETRAIN_MODELS=$5 + +source $CONF_FILE + +#configure your cuda and cudnn +#configure nccl + +export FLAGS_fast_eager_deletion_mode=1 +export FLAGS_eager_delete_tensor_gb=0.0 +export FLAGS_fraction_of_gpu_memory_to_use=0.98 + +e_executor=$(echo ${use_experimental_executor-'True'} | tr '[A-Z]' '[a-z]') + +use_fuse=$(echo ${use_fuse-'False'} | tr '[A-Z]' '[a-z]') +if [[ ${use_fuse} == "true" ]]; then + export FLAGS_fuse_parameter_memory_size=131072 + export FLAGS_fuse_parameter_groups_size=10 +fi + + +TASK_GROUP_JSON=./conf/$TASK_NAME/task_${TASK_NAME}.json + +gpu_cnt=`echo $CUDA_VISIBLE_DEVICES | awk -F"\t" '{len=split($0,vec,",");print len}'` +echo "gpu_cnt", $gpu_cnt +python finetune.py --use_cuda "True" \ + --is_distributed "False" \ + --use_fast_executor ${e_executor-"True"} \ + --nccl_comm_num ${nccl_comm_num:-"1"} \ + --batch_size $((BATCH_SIZE/gpu_cnt)) \ + --do_train "True" \ + --do_test "False" \ + --task_name ${TASK_NAME} \ + --vocab_path ${VOCAB_PATH} \ + --task_group_json ${TASK_GROUP_JSON} \ + --lr_scheduler ${lr_scheduler} \ + --decay_steps ${decay_steps-""} \ + --lr_decay_ratio ${lr_decay_ratio-0.1} \ + --num_train_steps ${num_train_steps} \ + --checkpoints $output_model_path \ + --save_steps ${SAVE_STEPS} \ + --init_checkpoint ${PRETRAIN_MODELS} \ + --ernie_config_path ${ERNIE_VIL_CONFIG} \ + --learning_rate ${LR_RATE} \ + --warmup_steps ${WARMUP_STEPS} \ + --weight_decay ${WEIGHT_DECAY:-0} \ + --max_seq_len ${MAX_LEN} \ + --validation_steps ${VALID_STEPS} \ + --skip_steps 10 + + diff --git a/ernie-vil/run_inference.sh b/ernie-vil/run_inference.sh new file mode 100644 index 0000000..6389328 --- /dev/null +++ b/ernie-vil/run_inference.sh @@ -0,0 +1,48 @@ +set -eu + +#bash -x ./env.sh + +TASK_NAME=$1 +SUB_TASK_NAME=$2 +TEST_SPLIT=$3 +CONF_FILE=$4 +VOCAB_PATH=$5 +ERNIE_VIL_CONFIG=$6 +MODEL_PATH=$7 +RES_FILE=$8 + +source $CONF_FILE + +#configure your cuda and cudnn +#configure nccl + +export FLAGS_eager_delete_tensor_gb=2.0 +export FLAGS_fraction_of_gpu_memory_to_use=0.01 +export FLAGS_sync_nccl_allreduce=1 + +e_executor=$(echo ${use_experimental_executor-'True'} | tr '[A-Z]' '[a-z]') + +use_fuse=$(echo ${use_fuse-'False'} | tr '[A-Z]' '[a-z]') +if [[ ${use_fuse} == "true" ]]; then + export FLAGS_fuse_parameter_memory_size=131072 + export FLAGS_fuse_parameter_groups_size=10 +fi + +TASK_GROUP_JSON=./conf/$TASK_NAME/task_${TASK_NAME}_${SUB_TASK_NAME}.json + +python finetune.py --use_cuda "True" \ + --use_fast_executor ${e_executor-"True"} \ + --batch_size ${BATCH_SIZE} \ + --do_train "False" \ + --do_test "True" \ + --test_split ${TEST_SPLIT} \ + --task_name $TASK_NAME \ + --vocab_path ${VOCAB_PATH} \ + --task_group_json ${TASK_GROUP_JSON} \ + --result_file "$RES_FILE" \ + --init_checkpoint "$MODEL_PATH" \ + --ernie_config_path ${ERNIE_VIL_CONFIG} \ + --max_seq_len ${MAX_LEN} \ + --skip_steps 10 + + diff --git a/ernie-vil/utils/__init__.py b/ernie-vil/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ernie-vil/utils/args.py b/ernie-vil/utils/args.py new file mode 100644 index 0000000..a88528a --- /dev/null +++ b/ernie-vil/utils/args.py @@ -0,0 +1,61 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# 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. + +"""Arguments for configuration.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import six +import argparse + + +def str2bool(v): + """ + because argparse does not support to parse "true, False" as python + boolean directly + """ + return v.lower() in ("true", "t", "1") + + +class ArgumentGroup(object): + """ + group of arguments + """ + def __init__(self, parser, title, des): + self._group = parser.add_argument_group(title=title, description=des) + + def add_arg(self, name, type, default, help, positional_arg=False, **kwargs): + """ + add arg + """ + prefix = "" if positional_arg else "--" + type = str2bool if type == bool else type + self._group.add_argument( + prefix + name, + default=default, + type=type, + help=help + ' Default: %(default)s.', + **kwargs) + + +def print_arguments(args): + """ + Arguments print function + """ + print('----------- Configuration Arguments -----------') + for arg, value in sorted(six.iteritems(vars(args))): + print('%s: %s' % (arg, value)) + print('------------------------------------------------') diff --git a/ernie-vil/utils/init.py b/ernie-vil/utils/init.py new file mode 100644 index 0000000..faadca1 --- /dev/null +++ b/ernie-vil/utils/init.py @@ -0,0 +1,71 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# 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. + +"""parameters init function implementations""" + + +from __future__ import print_function + +import os +import six + +import numpy as np +import paddle.fluid as fluid + + +def init_checkpoint(exe, init_checkpoint_path, main_program): + """ + init checkpoint params with lr and step info + """ + assert os.path.exists( + init_checkpoint_path), "[%s] cann't be found." % init_checkpoint_path + def existed_persitables(var): + """ + Check if persitables + """ + if not fluid.io.is_persistable(var): + return False + return os.path.exists(os.path.join(init_checkpoint_path, var.name)) + + fluid.io.load_vars( + exe, + init_checkpoint_path, + main_program=main_program, + predicate=existed_persitables) + print("Load model from {}".format(init_checkpoint_path)) + + +def init_pretraining_params(exe, pretraining_params_path, main_program): + """ + init pretraining params without lr and step info + """ + assert os.path.exists(pretraining_params_path + ), "[%s] cann't be found." % pretraining_params_path + + def existed_params(var): + """ + Check existed params + """ + if not isinstance(var, fluid.framework.Parameter): + return False + return os.path.exists(os.path.join(pretraining_params_path, var.name)) + + fluid.io.load_vars( + exe, + pretraining_params_path, + main_program=main_program, + predicate=existed_params) + print("Load pretraining parameters from {}.".format( + pretraining_params_path)) + diff --git a/requirements.txt b/requirements.txt index e267a77..9c9d2bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ scipy==1.2.1 six==1.11.0 sklearn==0.0 sentencepiece==0.1.8 +opencv-python==3.4.2.17 paddlepaddle-gpu==1.6.3.post107 -- GitLab