readme: ---
  datasets:
  - mnli
  tags:
  - distilbart
  - distilbart-mnli
  pipeline_tag: zero-shot-classification
  ---
  
  # DistilBart-MNLI
  
  distilbart-mnli is the distilled version of bart-large-mnli created using the **No Teacher Distillation** technique proposed for BART summarisation by Huggingface, [here](https://github.com/huggingface/transformers/tree/master/examples/seq2seq#distilbart).
  
  We just copy alternating layers from `bart-large-mnli` and finetune more on the same data. 
  
  
  |                                                                                      | matched acc | mismatched acc |
  | ------------------------------------------------------------------------------------ | ----------- | -------------- |
  | [bart-large-mnli](https://huggingface.co/facebook/bart-large-mnli) (baseline, 12-12) | 89.9        | 90.01          |
  | [distilbart-mnli-12-1](https://huggingface.co/valhalla/distilbart-mnli-12-1)         | 87.08       | 87.5           |
  | [distilbart-mnli-12-3](https://huggingface.co/valhalla/distilbart-mnli-12-3)         | 88.1        | 88.19          |
  | [distilbart-mnli-12-6](https://huggingface.co/valhalla/distilbart-mnli-12-6)         | 89.19       | 89.01          |
  | [distilbart-mnli-12-9](https://huggingface.co/valhalla/distilbart-mnli-12-9)         | 89.56       | 89.52          |
  
  
  This is a very simple and effective technique, as we can see the performance drop is very little.
  
  Detailed performace trade-offs will be posted in this [sheet](https://docs.google.com/spreadsheets/d/1dQeUvAKpScLuhDV1afaPJRRAE55s2LpIzDVA5xfqxvk/edit?usp=sharing).
  
  
  ## Fine-tuning
  If you want to train these models yourself, clone the [distillbart-mnli repo](https://github.com/patil-suraj/distillbart-mnli) and follow the steps below
  
  Clone and install transformers from source
  ```bash
  git clone https://github.com/huggingface/transformers.git
  pip install -qqq -U ./transformers
  ```
  
  Download MNLI data
  ```bash
  python transformers/utils/download_glue_data.py --data_dir glue_data --tasks MNLI
  ```
  
  Create student model
  ```bash
  python create_student.py \
    --teacher_model_name_or_path facebook/bart-large-mnli \
    --student_encoder_layers 12 \
    --student_decoder_layers 6 \
    --save_path student-bart-mnli-12-6 \
  ```
  
  Start fine-tuning
  ```bash
  python run_glue.py args.json
  ```
  
  You can find the logs of these trained models in this [wandb project](https://wandb.ai/psuraj/distilbart-mnli).