Upload model
Browse files- config.json +6 -1
- modeling_mamba.py +5 -2
config.json
CHANGED
|
@@ -1,6 +1,10 @@
|
|
| 1 |
{
|
|
|
|
|
|
|
|
|
|
| 2 |
"auto_map": {
|
| 3 |
-
"AutoConfig": "configuration_mamba.MambaConfig"
|
|
|
|
| 4 |
},
|
| 5 |
"bias": false,
|
| 6 |
"conv_bias": true,
|
|
@@ -14,6 +18,7 @@
|
|
| 14 |
"model_type": "mamba",
|
| 15 |
"n_layer": 24,
|
| 16 |
"pad_vocab_size_multiple": 8,
|
|
|
|
| 17 |
"transformers_version": "4.37.2",
|
| 18 |
"vocab_size": 50280
|
| 19 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"MambaModelForCausalLM"
|
| 4 |
+
],
|
| 5 |
"auto_map": {
|
| 6 |
+
"AutoConfig": "configuration_mamba.MambaConfig",
|
| 7 |
+
"AutoModelForCausalLM": "modeling_mamba.MambaModelForCausalLM"
|
| 8 |
},
|
| 9 |
"bias": false,
|
| 10 |
"conv_bias": true,
|
|
|
|
| 18 |
"model_type": "mamba",
|
| 19 |
"n_layer": 24,
|
| 20 |
"pad_vocab_size_multiple": 8,
|
| 21 |
+
"torch_dtype": "float32",
|
| 22 |
"transformers_version": "4.37.2",
|
| 23 |
"vocab_size": 50280
|
| 24 |
}
|
modeling_mamba.py
CHANGED
|
@@ -187,7 +187,7 @@ class Mamba(nn.Module):
|
|
| 187 |
|
| 188 |
|
| 189 |
class MambaBlock(nn.Module):
|
| 190 |
-
def __init__(self, config: MambaConfig):
|
| 191 |
"""A single Mamba block, as described in Figure 3 in Section 3.4 in the Mamba paper [1]."""
|
| 192 |
super().__init__()
|
| 193 |
self.config = config
|
|
@@ -195,6 +195,9 @@ class MambaBlock(nn.Module):
|
|
| 195 |
self.mixer = Mamba(config)
|
| 196 |
self.norm = MambaRMSNorm(config.d_model)
|
| 197 |
|
|
|
|
|
|
|
|
|
|
| 198 |
|
| 199 |
class MambaPreTrainedModel(PreTrainedModel):
|
| 200 |
config_class = MambaConfig
|
|
@@ -226,7 +229,7 @@ class MambaModel(MambaPreTrainedModel):
|
|
| 226 |
self.config = config
|
| 227 |
|
| 228 |
self.embedding = nn.Embedding(config.vocab_size, config.d_model)
|
| 229 |
-
self.layers = nn.ModuleList([MambaBlock(config) for
|
| 230 |
self.norm_f = MambaRMSNorm(config.d_model)
|
| 231 |
|
| 232 |
self.gradient_checkpointing = False
|
|
|
|
| 187 |
|
| 188 |
|
| 189 |
class MambaBlock(nn.Module):
|
| 190 |
+
def __init__(self, config: MambaConfig, layer_idx: int = 0):
|
| 191 |
"""A single Mamba block, as described in Figure 3 in Section 3.4 in the Mamba paper [1]."""
|
| 192 |
super().__init__()
|
| 193 |
self.config = config
|
|
|
|
| 195 |
self.mixer = Mamba(config)
|
| 196 |
self.norm = MambaRMSNorm(config.d_model)
|
| 197 |
|
| 198 |
+
def forward(self, x):
|
| 199 |
+
return self.norm(self.mixer(x))
|
| 200 |
+
|
| 201 |
|
| 202 |
class MambaPreTrainedModel(PreTrainedModel):
|
| 203 |
config_class = MambaConfig
|
|
|
|
| 229 |
self.config = config
|
| 230 |
|
| 231 |
self.embedding = nn.Embedding(config.vocab_size, config.d_model)
|
| 232 |
+
self.layers = nn.ModuleList([MambaBlock(config, layer_idx) for layer_idx in range(config.n_layer)])
|
| 233 |
self.norm_f = MambaRMSNorm(config.d_model)
|
| 234 |
|
| 235 |
self.gradient_checkpointing = False
|