Skip to content

Commit a208f4a

Browse files
authored
Rename Deberta -> DebertaV3 (#605)
* Rename files and add license disclaimer * Rename deberta sybmols * Fix broken test
1 parent 5e7c490 commit a208f4a

15 files changed

+129
-105
lines changed

keras_nlp/models/__init__.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@
1616
from keras_nlp.models.bert.bert_classifier import BertClassifier
1717
from keras_nlp.models.bert.bert_preprocessor import BertPreprocessor
1818
from keras_nlp.models.bert.bert_tokenizer import BertTokenizer
19-
from keras_nlp.models.deberta.deberta_backbone import DebertaBackbone
20-
from keras_nlp.models.deberta.deberta_classifier import DebertaClassifier
21-
from keras_nlp.models.deberta.deberta_preprocessor import DebertaPreprocessor
22-
from keras_nlp.models.deberta.deberta_tokenizer import DebertaTokenizer
19+
from keras_nlp.models.deberta_v3.deberta_v3_backbone import DebertaV3Backbone
20+
from keras_nlp.models.deberta_v3.deberta_v3_classifier import (
21+
DebertaV3Classifier,
22+
)
23+
from keras_nlp.models.deberta_v3.deberta_v3_preprocessor import (
24+
DebertaV3Preprocessor,
25+
)
26+
from keras_nlp.models.deberta_v3.deberta_v3_tokenizer import DebertaV3Tokenizer
2327
from keras_nlp.models.distil_bert.distil_bert_backbone import DistilBertBackbone
2428
from keras_nlp.models.distil_bert.distil_bert_classifier import (
2529
DistilBertClassifier,
File renamed without changes.

keras_nlp/models/deberta/deberta_backbone.py renamed to keras_nlp/models/deberta_v3/deberta_v3_backbone.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020
import tensorflow as tf
2121
from tensorflow import keras
2222

23-
from keras_nlp.models.deberta.deberta_presets import backbone_presets
24-
from keras_nlp.models.deberta.disentangled_attention_encoder import (
23+
from keras_nlp.models.deberta_v3.deberta_v3_presets import backbone_presets
24+
from keras_nlp.models.deberta_v3.disentangled_attention_encoder import (
2525
DisentangledAttentionEncoder,
2626
)
27-
from keras_nlp.models.deberta.relative_embedding import RelativeEmbedding
27+
from keras_nlp.models.deberta_v3.relative_embedding import RelativeEmbedding
2828
from keras_nlp.utils.python_utils import classproperty
2929
from keras_nlp.utils.python_utils import format_docstring
3030

@@ -34,7 +34,7 @@ def deberta_kernel_initializer(stddev=0.02):
3434

3535

3636
@keras.utils.register_keras_serializable(package="keras_nlp")
37-
class DebertaBackbone(keras.Model):
37+
class DebertaV3Backbone(keras.Model):
3838
"""DeBERTa encoder network.
3939
4040
This network implements a bi-directional Transformer-based encoder as
@@ -49,7 +49,9 @@ class DebertaBackbone(keras.Model):
4949
constructor.
5050
5151
Disclaimer: Pre-trained models are provided on an "as is" basis, without
52-
warranties or conditions of any kind.
52+
warranties or conditions of any kind. The underlying model is provided by a
53+
third party and subject to a separate license, available
54+
[here](https://github.com/microsoft/DeBERTa).
5355
5456
Args:
5557
vocabulary_size: int. The size of the token vocabulary.
@@ -75,7 +77,7 @@ class DebertaBackbone(keras.Model):
7577
}
7678
7779
# Randomly initialized DeBERTa model
78-
model = keras_nlp.models.DebertaBackbone(
80+
model = keras_nlp.models.DebertaV3Backbone(
7981
vocabulary_size=128100,
8082
num_layers=12,
8183
num_heads=6,
@@ -225,11 +227,11 @@ def from_preset(
225227
}
226228
227229
# Load architecture and weights from preset
228-
model = keras_nlp.models.DebertaBackbone.from_preset("deberta_base")
230+
model = keras_nlp.models.DebertaV3Backbone.from_preset("deberta_base")
229231
output = model(input_data)
230232
231233
# Load randomly initialized model from preset architecture
232-
model = keras_nlp.models.DebertaBackbone.from_preset(
234+
model = keras_nlp.models.DebertaV3Backbone.from_preset(
233235
"deberta_base", load_weights=False
234236
)
235237
output = model(input_data)

keras_nlp/models/deberta/deberta_backbone_test.py renamed to keras_nlp/models/deberta_v3/deberta_v3_backbone_test.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
from absl.testing import parameterized
2020
from tensorflow import keras
2121

22-
from keras_nlp.models.deberta.deberta_backbone import DebertaBackbone
22+
from keras_nlp.models.deberta_v3.deberta_v3_backbone import DebertaV3Backbone
2323

2424

25-
class DebertaBackboneTest(tf.test.TestCase, parameterized.TestCase):
25+
class DebertaV3BackboneTest(tf.test.TestCase, parameterized.TestCase):
2626
def setUp(self):
27-
self.model = DebertaBackbone(
27+
self.model = DebertaV3Backbone(
2828
vocabulary_size=1000,
2929
num_layers=2,
3030
num_heads=2,
@@ -51,7 +51,7 @@ def test_valid_call_deberta(self):
5151
self.model(self.input_batch)
5252

5353
# Check default name passed through
54-
self.assertRegexpMatches(self.model.name, "deberta_backbone")
54+
self.assertRegexpMatches(self.model.name, "deberta_v3_backbone")
5555

5656
def test_variable_sequence_length_call_deberta(self):
5757
for seq_length in (25, 50, 75):
@@ -90,7 +90,7 @@ def test_saved_model(self, save_format, filename):
9090
restored_model = keras.models.load_model(save_path)
9191

9292
# Check we got the real object back.
93-
self.assertIsInstance(restored_model, DebertaBackbone)
93+
self.assertIsInstance(restored_model, DebertaV3Backbone)
9494

9595
# Check that output matches.
9696
restored_output = restored_model(self.input_batch)

keras_nlp/models/deberta/deberta_classifier.py renamed to keras_nlp/models/deberta_v3/deberta_v3_classifier.py

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,25 @@
1717

1818
from tensorflow import keras
1919

20-
from keras_nlp.models.deberta.deberta_backbone import DebertaBackbone
21-
from keras_nlp.models.deberta.deberta_backbone import deberta_kernel_initializer
22-
from keras_nlp.models.deberta.deberta_preprocessor import DebertaPreprocessor
23-
from keras_nlp.models.deberta.deberta_presets import backbone_presets
20+
from keras_nlp.models.deberta_v3.deberta_v3_backbone import DebertaV3Backbone
21+
from keras_nlp.models.deberta_v3.deberta_v3_backbone import (
22+
deberta_kernel_initializer,
23+
)
24+
from keras_nlp.models.deberta_v3.deberta_v3_preprocessor import (
25+
DebertaV3Preprocessor,
26+
)
27+
from keras_nlp.models.deberta_v3.deberta_v3_presets import backbone_presets
2428
from keras_nlp.utils.pipeline_model import PipelineModel
2529
from keras_nlp.utils.python_utils import classproperty
2630
from keras_nlp.utils.python_utils import format_docstring
2731

2832

2933
@keras.utils.register_keras_serializable(package="keras_nlp")
30-
class DebertaClassifier(PipelineModel):
34+
class DebertaV3Classifier(PipelineModel):
3135
"""An end-to-end DeBERTa model for classification tasks.
3236
3337
This model attaches a classification head to a
34-
`keras_nlp.model.DebertaBackbone` model, mapping from the backbone
38+
`keras_nlp.model.DebertaV3Backbone` model, mapping from the backbone
3539
outputs to logit output suitable for a classification task. For usage of
3640
this model with pre-trained weights, see the `from_preset()` method.
3741
@@ -41,15 +45,17 @@ class DebertaClassifier(PipelineModel):
4145
creating the model with `from_preset()`.
4246
4347
Disclaimer: Pre-trained models are provided on an "as is" basis, without
44-
warranties or conditions of any kind.
48+
warranties or conditions of any kind. The underlying model is provided by a
49+
third party and subject to a separate license, available
50+
[here](https://github.com/microsoft/DeBERTa).
4551
4652
Args:
47-
backbone: A `keras_nlp.models.Deberta` instance.
53+
backbone: A `keras_nlp.models.DebertaV3` instance.
4854
num_classes: int. Number of classes to predict.
4955
hidden_dim: int. The size of the pooler layer.
5056
dropout: float. Dropout probability applied to the pooled output. For
5157
the second dropout layer, `backbone.dropout` is used.
52-
preprocessor: A `keras_nlp.models.DebertaPreprocessor` or `None`. If
58+
preprocessor: A `keras_nlp.models.DebertaV3Preprocessor` or `None`. If
5359
`None`, this model will not apply preprocessing, and inputs should
5460
be preprocessed before calling the model.
5561
@@ -63,7 +69,7 @@ class DebertaClassifier(PipelineModel):
6369
labels = [0, 3]
6470
6571
# Randomly initialized DeBERTa encoder
66-
backbone = keras_nlp.models.DebertaBackbone(
72+
backbone = keras_nlp.models.DebertaV3Backbone(
6773
vocabulary_size=128100,
6874
num_layers=12,
6975
num_heads=12,
@@ -74,7 +80,7 @@ class DebertaClassifier(PipelineModel):
7480
)
7581
7682
# Create a DeBERTa classifier and fit your data.
77-
classifier = keras_nlp.models.DebertaClassifier(
83+
classifier = keras_nlp.models.DebertaV3Classifier(
7884
backbone,
7985
num_classes=4,
8086
preprocessor=None,
@@ -132,12 +138,12 @@ def preprocess_samples(self, x, y=None, sample_weight=None):
132138

133139
@property
134140
def backbone(self):
135-
"""A `keras_nlp.models.DebertaBackbone` submodel."""
141+
"""A `keras_nlp.models.DebertaV3Backbone` submodel."""
136142
return self._backbone
137143

138144
@property
139145
def preprocessor(self):
140-
"""A `keras_nlp.models.DebertaPreprocessor` preprocessing layer."""
146+
"""A `keras_nlp.models.DebertaV3Preprocessor` preprocessing layer."""
141147
return self._preprocessor
142148

143149
def get_config(self):
@@ -195,8 +201,8 @@ def from_preset(
195201
features = ["The quick brown fox jumped.", "I forgot my homework."]
196202
labels = [0, 3]
197203
198-
# Create a DebertaClassifier and fit your data.
199-
classifier = keras_nlp.models.DebertaClassifier.from_preset(
204+
# Create a DebertaV3Classifier and fit your data.
205+
classifier = keras_nlp.models.DebertaV3Classifier.from_preset(
200206
"deberta_base",
201207
num_classes=4,
202208
)
@@ -213,13 +219,13 @@ def from_preset(
213219
labels = [0, 3]
214220
215221
# Use a shorter sequence length.
216-
preprocessor = keras_nlp.models.DebertaPreprocessor.from_preset(
222+
preprocessor = keras_nlp.models.DebertaV3Preprocessor.from_preset(
217223
"deberta_base",
218224
sequence_length=128,
219225
)
220226
221-
# Create a DebertaClassifier and fit your data.
222-
classifier = keras_nlp.models.DebertaClassifier.from_preset(
227+
# Create a DebertaV3Classifier and fit your data.
228+
classifier = keras_nlp.models.DebertaV3Classifier.from_preset(
223229
"deberta_base",
224230
num_classes=4,
225231
preprocessor=preprocessor,
@@ -241,8 +247,8 @@ def from_preset(
241247
}
242248
labels = [0, 3]
243249
244-
# Create a DebertaClassifier and fit your data.
245-
classifier = keras_nlp.models.DebertaClassifier.from_preset(
250+
# Create a DebertaV3Classifier and fit your data.
251+
classifier = keras_nlp.models.DebertaV3Classifier.from_preset(
246252
"deberta_base",
247253
num_classes=4,
248254
preprocessor=None,
@@ -254,11 +260,11 @@ def from_preset(
254260
```
255261
"""
256262
if "preprocessor" not in kwargs:
257-
kwargs["preprocessor"] = DebertaPreprocessor.from_preset(preset)
263+
kwargs["preprocessor"] = DebertaV3Preprocessor.from_preset(preset)
258264

259265
# Check if preset is backbone-only model
260-
if preset in DebertaBackbone.presets:
261-
backbone = DebertaBackbone.from_preset(preset, load_weights)
266+
if preset in DebertaV3Backbone.presets:
267+
backbone = DebertaV3Backbone.from_preset(preset, load_weights)
262268
return cls(backbone, **kwargs)
263269

264270
# Otherwise must be one of class presets

keras_nlp/models/deberta/deberta_classifier_test.py renamed to keras_nlp/models/deberta_v3/deberta_v3_classifier_test.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,19 @@
2121
from absl.testing import parameterized
2222
from tensorflow import keras
2323

24-
from keras_nlp.models.deberta.deberta_backbone import DebertaBackbone
25-
from keras_nlp.models.deberta.deberta_classifier import DebertaClassifier
26-
from keras_nlp.models.deberta.deberta_preprocessor import DebertaPreprocessor
27-
from keras_nlp.models.deberta.deberta_preprocessor import DebertaTokenizer
24+
from keras_nlp.models.deberta_v3.deberta_v3_backbone import DebertaV3Backbone
25+
from keras_nlp.models.deberta_v3.deberta_v3_classifier import (
26+
DebertaV3Classifier,
27+
)
28+
from keras_nlp.models.deberta_v3.deberta_v3_preprocessor import (
29+
DebertaV3Preprocessor,
30+
)
31+
from keras_nlp.models.deberta_v3.deberta_v3_preprocessor import (
32+
DebertaV3Tokenizer,
33+
)
2834

2935

30-
class DebertaClassifierTest(tf.test.TestCase, parameterized.TestCase):
36+
class DebertaV3ClassifierTest(tf.test.TestCase, parameterized.TestCase):
3137
def setUp(self):
3238
bytes_io = io.BytesIO()
3339
vocab_data = tf.data.Dataset.from_tensor_slices(
@@ -47,11 +53,11 @@ def setUp(self):
4753
eos_piece="[SEP]",
4854
unk_piece="[UNK]",
4955
)
50-
self.preprocessor = DebertaPreprocessor(
51-
tokenizer=DebertaTokenizer(proto=bytes_io.getvalue()),
56+
self.preprocessor = DebertaV3Preprocessor(
57+
tokenizer=DebertaV3Tokenizer(proto=bytes_io.getvalue()),
5258
sequence_length=12,
5359
)
54-
self.backbone = DebertaBackbone(
60+
self.backbone = DebertaV3Backbone(
5561
vocabulary_size=1000,
5662
num_layers=2,
5763
num_heads=2,
@@ -60,12 +66,12 @@ def setUp(self):
6066
max_sequence_length=128,
6167
bucket_size=64,
6268
)
63-
self.classifier = DebertaClassifier(
69+
self.classifier = DebertaV3Classifier(
6470
self.backbone,
6571
4,
6672
preprocessor=self.preprocessor,
6773
)
68-
self.classifier_no_preprocessing = DebertaClassifier(
74+
self.classifier_no_preprocessing = DebertaV3Classifier(
6975
self.backbone,
7076
4,
7177
preprocessor=None,
@@ -133,7 +139,7 @@ def test_saving_model(self, save_format, filename):
133139
restored_model = keras.models.load_model(save_path)
134140

135141
# Check we got the real object back.
136-
self.assertIsInstance(restored_model, DebertaClassifier)
142+
self.assertIsInstance(restored_model, DebertaV3Classifier)
137143

138144
# Check that output matches.
139145
restored_output = restored_model.predict(self.raw_batch)

keras_nlp/models/deberta/deberta_preprocessor.py renamed to keras_nlp/models/deberta_v3/deberta_v3_preprocessor.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
from tensorflow import keras
1919

2020
from keras_nlp.layers.multi_segment_packer import MultiSegmentPacker
21-
from keras_nlp.models.deberta.deberta_presets import backbone_presets
22-
from keras_nlp.models.deberta.deberta_tokenizer import DebertaTokenizer
21+
from keras_nlp.models.deberta_v3.deberta_v3_presets import backbone_presets
22+
from keras_nlp.models.deberta_v3.deberta_v3_tokenizer import DebertaV3Tokenizer
2323
from keras_nlp.utils.keras_utils import (
2424
convert_inputs_to_list_of_tensor_segments,
2525
)
@@ -29,7 +29,7 @@
2929

3030

3131
@keras.utils.register_keras_serializable(package="keras_nlp")
32-
class DebertaPreprocessor(keras.layers.Layer):
32+
class DebertaV3Preprocessor(keras.layers.Layer):
3333
"""A DeBERTa preprocessing layer which tokenizes and packs inputs.
3434
3535
This preprocessing layer will do three things:
@@ -58,7 +58,7 @@ class DebertaPreprocessor(keras.layers.Layer):
5858
the layer, e.g. `ds.map(lambda seg1, seg2: preprocessor(x=(seg1, seg2)))`.
5959
6060
Args:
61-
tokenizer: A `keras_nlp.models.DebertaTokenizer` instance.
61+
tokenizer: A `keras_nlp.models.DebertaV3Tokenizer` instance.
6262
sequence_length: The length of the packed inputs.
6363
truncate: string. The algorithm to truncate a list of batched segments
6464
to fit within `sequence_length`. The value can be either
@@ -73,8 +73,8 @@ class DebertaPreprocessor(keras.layers.Layer):
7373
7474
Examples:
7575
```python
76-
tokenizer = keras_nlp.models.DebertaTokenizer(proto="model.spm")
77-
preprocessor = keras_nlp.models.DebertaPreprocessor(
76+
tokenizer = keras_nlp.models.DebertaV3Tokenizer(proto="model.spm")
77+
preprocessor = keras_nlp.models.DebertaV3Preprocessor(
7878
tokenizer=tokenizer,
7979
sequence_length=10,
8080
)
@@ -159,7 +159,7 @@ def __init__(
159159

160160
@property
161161
def tokenizer(self):
162-
"""The `keras_nlp.models.DebertaTokenizer` used to tokenize strings."""
162+
"""The `keras_nlp.models.DebertaV3Tokenizer` used to tokenize strings."""
163163
return self._tokenizer
164164

165165
def get_config(self):
@@ -225,13 +225,13 @@ def from_preset(
225225
Examples:
226226
```python
227227
# Load preprocessor from preset
228-
preprocessor = keras_nlp.models.DebertaPreprocessor.from_preset(
228+
preprocessor = keras_nlp.models.DebertaV3Preprocessor.from_preset(
229229
"deberta_base",
230230
)
231231
preprocessor("The quick brown fox jumped.")
232232
233233
# Override sequence_length
234-
preprocessor = keras_nlp.models.DebertaPreprocessor.from_preset(
234+
preprocessor = keras_nlp.models.DebertaV3Preprocessor.from_preset(
235235
"deberta_base",
236236
sequence_length=64
237237
)
@@ -244,7 +244,7 @@ def from_preset(
244244
f"""{", ".join(cls.presets)}. Received: {preset}."""
245245
)
246246

247-
tokenizer = DebertaTokenizer.from_preset(preset)
247+
tokenizer = DebertaV3Tokenizer.from_preset(preset)
248248

249249
# Use model's `max_sequence_length` if `sequence_length` unspecified;
250250
# otherwise check that `sequence_length` not too long.

0 commit comments

Comments
 (0)