entropy commited on
Commit
1b36437
·
verified ·
1 Parent(s): a957225

Upload model

Browse files
Files changed (4) hide show
  1. config.json +19 -0
  2. configuration_mapper.py +25 -0
  3. model.safetensors +3 -0
  4. modeling_mapper.py +76 -0
config.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "MapperModel"
4
+ ],
5
+ "auto_map": {
6
+ "AutoConfig": "configuration_mapper.MapperConfig",
7
+ "AutoModel": "modeling_mapper.MapperModel"
8
+ },
9
+ "d_hidden": 1024,
10
+ "d_in": 64,
11
+ "d_out": 64,
12
+ "dropout": 0.1,
13
+ "layer_norm_eps": 1e-12,
14
+ "model_type": "embedding_mapper",
15
+ "n_layers": 6,
16
+ "n_out": 2,
17
+ "torch_dtype": "float32",
18
+ "transformers_version": "4.38.2"
19
+ }
configuration_mapper.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import PretrainedConfig
2
+
3
+ class MapperConfig(PretrainedConfig):
4
+ model_type = "embedding_mapper"
5
+
6
+ def __init__(self,
7
+ d_in: int = 64,
8
+ d_hidden: int = 1024,
9
+ n_layers: int = 6,
10
+ d_out: int = 64,
11
+ n_out: int = 2,
12
+ dropout: float = 0.1,
13
+ layer_norm_eps: float = 1e-12,
14
+ **kwargs
15
+ ):
16
+
17
+ self.d_in = d_in
18
+ self.d_hidden = d_hidden
19
+ self.n_layers = n_layers
20
+ self.d_out = d_out
21
+ self.n_out = n_out
22
+ self.dropout = dropout
23
+ self.layer_norm_eps = layer_norm_eps
24
+
25
+ super().__init__(**kwargs)
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5df4171738f7d9ec9a5451ecbae4a107b16af59f442d48718f4ca5ff41fdb403
3
+ size 82271096
modeling_mapper.py ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ import torch.nn.functional as F
4
+
5
+ from dataclasses import dataclass
6
+
7
+ from transformers import PretrainedConfig, PreTrainedModel
8
+ from transformers.utils import ModelOutput
9
+
10
+ from .configuration_mapper import MapperConfig
11
+
12
+ class FeedForward(nn.Module):
13
+ def __init__(self, d_in, d_out):
14
+ super().__init__()
15
+ self.fc1 = nn.Linear(d_in, d_out*2)
16
+ self.fc2 = nn.Linear(d_out, d_out)
17
+
18
+ def forward(self, x):
19
+ x = self.fc1(x)
20
+ x1, x2 = x.chunk(2, dim=-1)
21
+ x = self.fc2(F.silu(x1) * x2)
22
+ return x
23
+
24
+ class FeedForwardLayer(nn.Module):
25
+ def __init__(self, d_in, d_out, dropout=0.1, layer_norm_eps=None):
26
+ super().__init__()
27
+ self.ff = FeedForward(d_in, d_out)
28
+ self.skip = nn.Linear(d_in, d_out) if d_in != d_out else nn.Identity()
29
+ self.dropout = nn.Dropout(dropout)
30
+ self.LayerNorm = nn.LayerNorm(d_out, eps=layer_norm_eps) if layer_norm_eps else None
31
+
32
+ def forward(self, x):
33
+ x = self.dropout(x)
34
+ x = self.ff(x) + self.skip(x)
35
+ if self.LayerNorm:
36
+ x = self.LayerNorm(x)
37
+ return x
38
+
39
+ class Mapper(nn.Module):
40
+ def __init__(self, d_in, d_hidden, d_out, n_out, n_layers, dropout=0.1, layer_norm_eps=None):
41
+ super().__init__()
42
+ self.n_out = n_out
43
+ layers = [FeedForwardLayer(d_in, d_hidden, 0.0, layer_norm_eps)]
44
+ layers += [FeedForwardLayer(d_hidden, d_hidden, dropout, layer_norm_eps)
45
+ for i in range(n_layers)]
46
+ self.layers = nn.Sequential(*layers)
47
+
48
+ self.output_layer = FeedForwardLayer(d_hidden, d_out*n_out, 0.0, None)
49
+
50
+ def forward(self, x):
51
+ x = self.layers(x)
52
+ x = self.output_layer(x)
53
+ x = torch.stack(torch.chunk(x, self.n_out, -1), 1)
54
+ return x
55
+
56
+ @dataclass
57
+ class MapperModelOutput(ModelOutput):
58
+ mapper_out: torch.FloatTensor = None
59
+
60
+ class MapperModel(PreTrainedModel):
61
+ config_class = MapperConfig
62
+ def __init__(self, config):
63
+ super().__init__(config)
64
+
65
+ self.mapper = Mapper(config.d_in, config.d_hidden, config.d_out, config.n_out,
66
+ config.n_layers, config.dropout, config.layer_norm_eps)
67
+
68
+ def forward(self, embedding, return_dict=True):
69
+
70
+ mapper_out = self.mapper(embedding)
71
+
72
+
73
+ if not return_dict:
74
+ return (mapper_out, )
75
+
76
+ return MapperModelOutput(mapper_out=mapper_out)