devr77 JustinAngel commited on
Commit
d87f012
·
0 Parent(s):

Duplicate from JustinAngel/workshop-v1-pretraining

Browse files

Co-authored-by: Justin Angel <JustinAngel@users.noreply.huggingface.co>

.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ ---
config.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_type": "workshop_gpt",
3
+ "architectures": ["WorkshopGPTForCausalLM"],
4
+ "auto_map": {
5
+ "AutoConfig": "modeling_workshop_gpt.WorkshopGPTConfig",
6
+ "AutoModelForCausalLM": "modeling_workshop_gpt.WorkshopGPTForCausalLM"
7
+ },
8
+ "n_layer": 12,
9
+ "n_head": 12,
10
+ "n_embd": 768,
11
+ "vocab_size": 50304,
12
+ "block_size": 1024,
13
+ "n_inner": 3072,
14
+ "rope_theta": 10000.0,
15
+ "torch_dtype": "bfloat16"
16
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b837fb282a8a03a3a1ba64fd1ca3b2ddba8b036fd12e718b0e6750c3adcc1460
3
+ size 648892992
modeling_workshop_gpt.py ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ import torch.nn.functional as F
4
+ from transformers import PretrainedConfig, PreTrainedModel, GenerationMixin
5
+ from transformers.modeling_outputs import CausalLMOutput
6
+
7
+
8
+ class WorkshopGPTConfig(PretrainedConfig):
9
+ model_type = "workshop_gpt"
10
+ attribute_map = {"num_hidden_layers": "n_layer"}
11
+
12
+ def __init__(self, n_layer=12, n_head=12, n_embd=768, vocab_size=50304,
13
+ block_size=1024, n_inner=3072, rope_theta=10000.0, **kwargs):
14
+ super().__init__(**kwargs)
15
+ self.n_layer = n_layer
16
+ self.n_head = n_head
17
+ self.n_embd = n_embd
18
+ self.vocab_size = vocab_size
19
+ self.block_size = block_size
20
+ self.n_inner = n_inner
21
+ self.rope_theta = rope_theta
22
+
23
+
24
+ class RMSNorm(nn.Module):
25
+ def __init__(self, dim, eps=1e-6):
26
+ super().__init__()
27
+ self.scale = nn.Parameter(torch.ones(dim))
28
+ self.eps = eps
29
+
30
+ def forward(self, x):
31
+ return x * torch.rsqrt(x.float().pow(2).mean(-1, keepdim=True) + self.eps).type_as(x) * self.scale
32
+
33
+
34
+ class RotaryPositionalEmbeddings(nn.Module):
35
+ def __init__(self, dim, max_seq_len=1024, base=10000.0):
36
+ super().__init__()
37
+ self.dim = dim
38
+ self.max_seq_len = max_seq_len
39
+ self.base = base
40
+ self.cache = None
41
+
42
+ def _build_cache(self, seq_len, device):
43
+ theta = 1.0 / (self.base ** (torch.arange(0, self.dim, 2, device=device).float() / self.dim))
44
+ seq = torch.arange(seq_len, device=device)
45
+ freqs = torch.outer(seq, theta)
46
+ self.cache = torch.stack([freqs.cos(), freqs.sin()], dim=-1)
47
+
48
+ def forward(self, x, *, input_pos=None):
49
+ seq_len = x.shape[-2]
50
+ if self.cache is None or self.cache.shape[0] < seq_len or self.cache.device != x.device:
51
+ self._build_cache(max(seq_len, self.max_seq_len), x.device)
52
+ cache = self.cache[:seq_len] if input_pos is None else self.cache[input_pos]
53
+ x1, x2 = x.float().unflatten(-1, (-1, 2)).unbind(-1)
54
+ cos, sin = cache.unbind(-1)
55
+ shape = [1] * (x.ndim - 2) + list(cos.shape)
56
+ cos, sin = cos.view(*shape), sin.view(*shape)
57
+ return torch.stack([x1 * cos - x2 * sin, x1 * sin + x2 * cos], dim=-1).flatten(-2).type_as(x)
58
+
59
+
60
+ class ReluSquaredMLP(nn.Module):
61
+ def __init__(self, dim, hidden_dim):
62
+ super().__init__()
63
+ self.fc_in = nn.Linear(dim, hidden_dim, bias=False)
64
+ self.fc_out = nn.Linear(hidden_dim, dim, bias=False)
65
+
66
+ def forward(self, x):
67
+ return self.fc_out(F.relu(self.fc_in(x)).square())
68
+
69
+
70
+ class CausalSelfAttention(nn.Module):
71
+ def __init__(self, n_embd, n_head, head_dim, rope):
72
+ super().__init__()
73
+ self.n_head = n_head
74
+ self.head_dim = head_dim
75
+ self.q_proj = nn.Linear(n_embd, n_embd, bias=False)
76
+ self.k_proj = nn.Linear(n_embd, n_embd, bias=False)
77
+ self.v_proj = nn.Linear(n_embd, n_embd, bias=False)
78
+ self.output_proj = nn.Linear(n_embd, n_embd, bias=False)
79
+ self.rope = rope
80
+
81
+ def forward(self, x):
82
+ B, T, C = x.shape
83
+ q = self.q_proj(x).view(B, T, self.n_head, self.head_dim).transpose(1, 2)
84
+ k = self.k_proj(x).view(B, T, self.n_head, self.head_dim).transpose(1, 2)
85
+ v = self.v_proj(x).view(B, T, self.n_head, self.head_dim).transpose(1, 2)
86
+ q, k = self.rope(q), self.rope(k)
87
+ y = F.scaled_dot_product_attention(q, k, v, is_causal=True)
88
+ return self.output_proj(y.transpose(1, 2).contiguous().view(B, T, C))
89
+
90
+
91
+ class TransformerBlock(nn.Module):
92
+ def __init__(self, config):
93
+ super().__init__()
94
+ hd = config.n_embd // config.n_head
95
+ rope = RotaryPositionalEmbeddings(hd, config.block_size, config.rope_theta)
96
+ self.sa_norm = RMSNorm(config.n_embd)
97
+ self.attn = CausalSelfAttention(config.n_embd, config.n_head, hd, rope)
98
+ self.mlp_norm = RMSNorm(config.n_embd)
99
+ self.mlp = ReluSquaredMLP(config.n_embd, config.n_inner)
100
+
101
+ def forward(self, x):
102
+ x = x + self.attn(self.sa_norm(x))
103
+ return x + self.mlp(self.mlp_norm(x))
104
+
105
+
106
+ class WorkshopGPTForCausalLM(PreTrainedModel, GenerationMixin):
107
+ config_class = WorkshopGPTConfig
108
+ _tied_weights_keys = {}
109
+
110
+ def __init__(self, config):
111
+ super().__init__(config)
112
+ self.tok_embeddings = nn.Embedding(config.vocab_size, config.n_embd)
113
+ self.layers = nn.ModuleList([TransformerBlock(config) for _ in range(config.n_layer)])
114
+ self.norm = RMSNorm(config.n_embd)
115
+
116
+ def forward(self, input_ids, **kwargs):
117
+ x = self.tok_embeddings(input_ids)
118
+ for layer in self.layers:
119
+ x = layer(x)
120
+ return CausalLMOutput(logits=F.linear(self.norm(x), self.tok_embeddings.weight))
121
+
122
+ def prepare_inputs_for_generation(self, input_ids, **kwargs):
123
+ return {"input_ids": input_ids}
124
+
125
+ @property
126
+ def all_tied_weights_keys(self):
127
+ return {}
workshop-v1-instruct-tuned.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:421a03240700f0ccf59ae66d3f6246cc91c7c27059f620c007aa9e0a63593d41
3
+ size 494392181
workshop-v1-pretraining.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:454088994a44eb8eb0e8331cd01ceb215f1195b25c3f1141b9ad27a3ce1fae37
3
+ size 1484226913