drew2ch commited on
Commit
4923bc3
·
verified ·
1 Parent(s): b6348a9

Upload modeling_perklm.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. modeling_perklm.py +56 -56
modeling_perklm.py CHANGED
@@ -1,56 +1,56 @@
1
- import torch
2
- from transformers import PreTrainedModel, PretrainedConfig, GPT2TokenizerFast, \
3
- AutoConfig, AutoModelForCausalLM
4
- from transformers.modeling_outputs import CausalLMOutput
5
- from model import FriendsTransformer
6
-
7
- class PerkLMConfig(PretrainedConfig):
8
- model_type = "perklm"
9
-
10
- def __init__(self, d_model = 512, n_heads = 8, n_layers = 6,
11
- d_ff = 2048, maxt = 512, dropout = 0.1, tokenizer_path = None, **kwargs):
12
- super().__init__(**kwargs)
13
- self.d_model = d_model
14
- self.n_heads = n_heads
15
- self.n_layers = n_layers
16
- self.d_ff = d_ff
17
- self.maxt = maxt
18
- self.dropout = dropout
19
- self.tokenizer_path = tokenizer_path
20
-
21
- class PerkLM(PreTrainedModel):
22
- config_class = PerkLMConfig
23
- _tied_weights_keys = ["transformer.lm_head.weight"]
24
-
25
- def __init__(self, config):
26
- super().__init__(config)
27
- tokenizer = GPT2TokenizerFast.from_pretrained(config.tokenizer_path)
28
- self.transformer = FriendsTransformer(d_model = config.d_model,
29
- n_heads = config.n_heads,
30
- n_layers = config.n_layers,
31
- d_ff = config.d_ff,
32
- dropout = config.dropout,
33
- maxt = config.maxt,
34
- tokenizer = tokenizer)
35
- self.post_init()
36
-
37
- def forward(self, input_ids, attention_mask = None,
38
- responder = None, labels = None, **kwargs):
39
- batch = {'input_ids': input_ids,
40
- 'attention_mask': attention_mask if attention_mask is not None \
41
- else torch.ones_like(input_ids),
42
- 'responder': responder}
43
- logits = self.transformer(batch)
44
-
45
- loss = None
46
- if labels is not None:
47
- loss = torch.nn.functional.cross_entropy(logits[:, :-1].reshape(-1, logits.size(-1)),
48
- labels[:, 1:].reshape(-1), ignore_index = -100)
49
-
50
- return CausalLMOutput(loss = loss, logits = logits)
51
-
52
- def tie_weights(self):
53
- self.transformer.lm_head.weight = self.transformer.embedder.embedding.weight
54
-
55
- AutoConfig.register("perklm", PerkLMConfig)
56
- AutoModelForCausalLM.register(PerkLMConfig, PerkLM)
 
1
+ import torch
2
+ from transformers import PreTrainedModel, PretrainedConfig, GPT2TokenizerFast, \
3
+ AutoConfig, AutoModelForCausalLM
4
+ from transformers.modeling_outputs import CausalLMOutput
5
+ from model import FriendsTransformer
6
+
7
+ class PerkLMConfig(PretrainedConfig):
8
+ model_type = "perklm"
9
+
10
+ def __init__(self, d_model = 512, n_heads = 8, n_layers = 6,
11
+ d_ff = 2048, maxt = 512, dropout = 0.1, tokenizer_path = None, **kwargs):
12
+ super().__init__(**kwargs)
13
+ self.d_model = d_model
14
+ self.n_heads = n_heads
15
+ self.n_layers = n_layers
16
+ self.d_ff = d_ff
17
+ self.maxt = maxt
18
+ self.dropout = dropout
19
+ self.tokenizer_path = tokenizer_path
20
+
21
+ class PerkLM(PreTrainedModel):
22
+ config_class = PerkLMConfig
23
+ _tied_weights_keys = ["transformer.lm_head.weight"]
24
+
25
+ def __init__(self, config):
26
+ super().__init__(config)
27
+ tokenizer = GPT2TokenizerFast.from_pretrained(config.tokenizer_path)
28
+ self.transformer = FriendsTransformer(d_model = config.d_model,
29
+ n_heads = config.n_heads,
30
+ n_layers = config.n_layers,
31
+ d_ff = config.d_ff,
32
+ dropout = config.dropout,
33
+ maxt = config.maxt,
34
+ tokenizer = tokenizer)
35
+ self.post_init()
36
+
37
+ def forward(self, input_ids, attention_mask = None,
38
+ responder = None, labels = None, **kwargs):
39
+ batch = {'input_ids': input_ids,
40
+ 'attention_mask': attention_mask if attention_mask is not None \
41
+ else torch.ones_like(input_ids),
42
+ 'responder': responder}
43
+ logits = self.transformer(batch)
44
+
45
+ loss = None
46
+ if labels is not None:
47
+ loss = torch.nn.functional.cross_entropy(logits[:, :-1].reshape(-1, logits.size(-1)),
48
+ labels[:, 1:].reshape(-1), ignore_index = -100)
49
+
50
+ return CausalLMOutput(loss = loss, logits = logits)
51
+
52
+ def tie_weights(self):
53
+ self.transformer.lm_head.weight = self.transformer.embedder.embedding.weight
54
+
55
+ AutoConfig.register("perklm", PerkLMConfig)
56
+ AutoModelForCausalLM.register(PerkLMConfig, PerkLM)