Instructions to use luffycodes/parallel-roberta-large with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use luffycodes/parallel-roberta-large with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("fill-mask", model="luffycodes/parallel-roberta-large")# Load model directly from transformers import AutoTokenizer, AutoModelForMaskedLM tokenizer = AutoTokenizer.from_pretrained("luffycodes/parallel-roberta-large") model = AutoModelForMaskedLM.from_pretrained("luffycodes/parallel-roberta-large", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| language: | |
| - en | |
| ## Model weights for Parallel Roberta-Large model ## | |
| We provide the [weights](https://huggingface.co/luffycodes/Parallel-Roberta-Large) for the Parallel Attention and Feedforward design (PAF) for RoBERTa-Large. | |
| To use this model, use the following [paf_modeling_roberta.py](https://github.com/luffycodes/Parallel-Transformers-Pytorch/blob/main/paf_modeling_roberta.py) file. | |
| ## Here is how to use this model to get the features of a given text in PyTorch | |
| ```python | |
| # use paf_modeling_roberta.py instead of modeling_roberta | |
| from paf_modeling_roberta import RobertaModel | |
| from transformers import RobertaTokenizer | |
| model = RobertaModel.from_pretrained('luffycodes/parallel-roberta-large') | |
| tokenizer = RobertaTokenizer.from_pretrained('roberta-large') | |
| text = "Replace me by any text you'd like." | |
| encoded_input = tokenizer(text, return_tensors='pt') | |
| output = model(**encoded_input) | |
| ``` | |
| ## Efficient GPU implementation | |
| [gpu_paf_modeling_roberta.py](https://github.com/luffycodes/Parallel-Transformers-Pytorch/blob/main/gpu_paf_modeling_roberta.py) provides an efficient gpu implementation of PAF design for pytorch. | |
| It clubs the computation of key, query, value, and first feedforward network sub-layer(intermediate) computation into one. | |
| ``` | |
| self.kqv_ffn1.weight.data = torch.cat((attention.self.key.weight.data, attention.self.query.weight.data, | |
| attention.self.value.weight.data, | |
| intermediate.dense.weight.data)) | |
| ``` | |
| However, I could not efficiently optimize the second feedforward network sub-layer computation to run in parallel. | |
| ## What is Parallel Attention and Feed-Forward Design? | |
|  | |
| *On the left is the standard Series Attention and Feed-Forward Net Design (SAF) for transformers models. On the right is the Parallel Attention and Feed-Forward Net Design (PAF) used in transformer models like PaLM (Chowdhery et al., 2022) and Mesh-Transformers (Wang, 2021)* | |
| ## Evaluation results of [PAF-RoBERTa-Large](https://huggingface.co/luffycodes/parallel-roberta-large) | |
| When fine-tuned on downstream tasks, this model achieves the following results: | |
| Glue test results: | |
| | Task | MNLI | QQP | QNLI | SST-2 | CoLA | STS-B | MRPC | RTE | | |
| |:----:|:----:|:----:|:----:|:-----:|:----:|:-----:|:----:|:----:| | |
| | | 89.3 | 91.7 | 94.3 | 96.2 | 64.0 | 91.0 | 90.4 | 80.1 | | |
| If you use this work, please cite: | |
| Investigating the Role of Feed-Forward Networks in Transformers Using Parallel Attention and Feed-Forward Net Design: | |
| https://arxiv.org/abs/2305.13297 | |
| ``` | |
| @misc{sonkar2023investigating, | |
| title={Investigating the Role of Feed-Forward Networks in Transformers Using Parallel Attention and Feed-Forward Net Design}, | |
| author={Shashank Sonkar and Richard G. Baraniuk}, | |
| year={2023}, | |
| eprint={2305.13297}, | |
| archivePrefix={arXiv}, | |
| primaryClass={cs.CL} | |
| } | |
| ``` | |