readme: ---
  license: apache-2.0
  tags:
  - generated_from_trainer
  datasets:
  - Graphcore/gqa-lxmert
  metrics:
  - accuracy
  model-index:
  - name: gqa
    results:
    - task:
        name: Question Answering
        type: question-answering
      dataset:
        name: Graphcore/gqa-lxmert
        type: Graphcore/gqa-lxmert
        args: gqa
      metrics:
      - name: Accuracy
        type: accuracy
        value: 0.5933514030612245
  ---
  
  <!-- This model card has been generated automatically according to the information the Trainer had access to. You
  should probably proofread and complete it, then remove this comment. -->
  
  # Graphcore/lxmert-gqa-uncased
  
  BERT (Bidirectional Encoder Representations from Transformers) is a transformers model which is designed to pretrain bidirectional representations from unlabeled texts. It enables easy and fast fine-tuning for different downstream task such as Sequence Classification, Named Entity Recognition, Question Answering, Multiple Choice and MaskedLM. 
  
  It was trained with two objectives in pretraining : Masked language modeling(MLM) and Next sentence prediction(NSP). First, MLM is different from traditional LM which sees the words one after another while BERT allows the model to learn a bidirectional representation.  In addition to MLM, NSP is used for jointly pertaining text-pair representations.
  
  It reduces the need of many engineering efforts for building task specific architectures through pre-trained representation. And achieves state-of-the-art performance on a large suite of sentence-level and token-level tasks.
  
  
  ## Model description
  
  LXMERT is a transformer model for learning vision-and-language cross-modality representations. It has a Transformer model that has three encoders: object relationship encoder, a language encoder, and a cross-modality encoder. It is pretrained via a combination of masked language modelling, visual-language text alignment, ROI-feature regression, masked visual-attribute modeling, masked visual-object modelling, and visual-question answering objectives. It achieves the state-of-the-art results on VQA anad GQA. 
  
  Paper link : [LXMERT: Learning Cross-Modality Encoder Representations from Transformers](https://arxiv.org/pdf/1908.07490.pdf)
  
  ## Intended uses & limitations
  
  
  This model is a fine-tuned version of [unc-nlp/lxmert-base-uncased](https://huggingface.co/unc-nlp/lxmert-base-uncased) on the [Graphcore/gqa-lxmert](https://huggingface.co/datasets/Graphcore/gqa-lxmert) dataset.
  It achieves the following results on the evaluation set:
  - Loss: 1.9326
  - Accuracy: 0.5934
  
  ## Training and evaluation data
  
  - [Graphcore/gqa-lxmert](https://huggingface.co/datasets/Graphcore/gqa-lxmert) dataset
  
  ## Training procedure
  
  Trained on 16 Graphcore Mk2 IPUs using [optimum-graphcore](https://github.com/huggingface/optimum-graphcore).
  
  Command line:
  
  ```
  python examples/question-answering/run_vqa.py \
    --model_name_or_path unc-nlp/lxmert-base-uncased \
    --ipu_config_name Graphcore/lxmert-base-ipu \
    --dataset_name Graphcore/gqa-lxmert \
    --do_train \
    --do_eval \
    --max_seq_length 512 \
    --per_device_train_batch_size 1 \
    --num_train_epochs 4 \
    --dataloader_num_workers 64 \
    --logging_steps 5 \
    --learning_rate 1e-5 \
    --lr_scheduler_type linear \
    --loss_scaling 16384 \
    --weight_decay 0.01 \
    --warmup_ratio 0.1 \
    --output_dir /tmp/gqa/ \
    --dataloader_drop_last \
    --replace_qa_head \
    --pod_type pod16
  
  ```
  
  ### Training hyperparameters
  
  The following hyperparameters were used during training:
  - learning_rate: 1e-05
  - train_batch_size: 1
  - eval_batch_size: 8
  - seed: 42
  - distributed_type: IPU
  - total_train_batch_size: 64
  - total_eval_batch_size: 128
  - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  - lr_scheduler_type: linear
  - lr_scheduler_warmup_ratio: 0.1
  - num_epochs: 4.0
  - training precision: Mixed Precision
  
  ### Training results
  ```
  ***** train metrics *****
    "epoch": 4.0,
    "train_loss": 0.6123406731570221,
    "train_runtime": 29986.2288,
    "train_samples": 943000,
    "train_samples_per_second": 125.791,
    "train_steps_per_second": 1.965
  
  ***** eval metrics *****
    "eval_accuracy": 0.5933514030612245,
    "eval_loss": 1.9326171875,
    "eval_samples": 12576,
  ```
  
  
  ### Framework versions
  
  - Transformers 4.18.0.dev0
  - Pytorch 1.10.0+cpu
  - Datasets 2.0.0
  - Tokenizers 0.11.6
  