Skip to content
This repository was archived by the owner on Apr 8, 2025. It is now read-only.

Commit 0844df5

Browse files
Bumping up transformers version to 3.3.1 (#579)
* [RAG] Bumping up transformers version to 3.3.x * Use Pytorch's native LayerNorm code, with default eps as 1e-12. Refer huggingface/transformers#1089 Signed-off-by: lalitpagaria <pagaria.lalit@gmail.com> * Using apex's FusedLayerNorm if available instead of Pytorch LayerNorm * Remove pooling layer before converting to transformers Co-authored-by: Bogdan Kostić <bogdankostic@web.de>
1 parent 2ab42d2 commit 0844df5

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

farm/conversion/transformers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ def _convert_to_transformers_classification_regression(adaptive_model, predictio
182182
def _convert_to_transformers_qa(adaptive_model, prediction_head):
183183
# TODO add more infos to config
184184

185+
# remove pooling layer
186+
adaptive_model.language_model.model.pooler = None
185187
# init model
186188
transformers_model = AutoModelForQuestionAnswering.from_config(adaptive_model.language_model.model.config)
187189
# transfer weights for language model + prediction head
@@ -193,6 +195,8 @@ def _convert_to_transformers_qa(adaptive_model, prediction_head):
193195

194196
@staticmethod
195197
def _convert_to_transformers_lm(adaptive_model, prediction_head):
198+
# remove pooling layer
199+
adaptive_model.language_model.model.pooler = None
196200
# init model
197201
transformers_model = AutoModelWithLMHead.from_config(adaptive_model.language_model.model.config)
198202
# transfer weights for language model + prediction head
@@ -211,6 +215,8 @@ def _convert_to_transformers_lm(adaptive_model, prediction_head):
211215

212216
@staticmethod
213217
def _convert_to_transformers_ner(adaptive_model, prediction_head):
218+
# remove pooling layer
219+
adaptive_model.language_model.model.pooler = None
214220
# add more info to config
215221
adaptive_model.language_model.model.config.num_labels = prediction_head.num_labels
216222
adaptive_model.language_model.model.config.id2label = {id: label for id, label in

farm/modeling/prediction_head.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55

66
from pathlib import Path
7-
from transformers.modeling_bert import BertForPreTraining, BertLayerNorm, ACT2FN
7+
from transformers.modeling_bert import BertForPreTraining, ACT2FN
88
from transformers.modeling_auto import AutoModelForQuestionAnswering, AutoModelForTokenClassification, AutoModelForSequenceClassification
99
from typing import List
1010

@@ -18,6 +18,12 @@
1818

1919
logger = logging.getLogger(__name__)
2020

21+
try:
22+
from apex.normalization.fused_layer_norm import FusedLayerNorm as BertLayerNorm
23+
except (ImportError, AttributeError) as e:
24+
logger.info("Better speed can be achieved with apex installed from https://www.github.com/nvidia/apex .")
25+
BertLayerNorm = torch.nn.LayerNorm
26+
2127

2228
class PredictionHead(nn.Module):
2329
""" Takes word embeddings from a language model and generates logits for a given task. Can also convert logits

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ sklearn
1717
seqeval
1818
mlflow==1.0.0
1919
# huggingface repository
20-
transformers==3.1.0
20+
transformers==3.3.1
2121
# accessing dictionary elements with dot notation
2222
dotmap==1.3.0
2323
# for inference-rest-apis

0 commit comments

Comments
 (0)