Severian commited on
Commit
9aca9b2
1 Parent(s): 951ed88

Upload 7 files

Browse files
config.json CHANGED
@@ -1,5 +1,5 @@
1
  {
2
- "_name_or_path": "isemmanuelolowe/PyJamba1B",
3
  "architectures": [
4
  "JambaForCausalLM"
5
  ],
@@ -18,9 +18,9 @@
18
  "expert_layer_offset": 1,
19
  "expert_layer_period": 2,
20
  "hidden_act": "silu",
21
- "hidden_size": 1024,
22
  "initializer_range": 0.02,
23
- "intermediate_size": 2048,
24
  "mamba_conv_bias": true,
25
  "mamba_d_conv": 4,
26
  "mamba_d_state": 16,
@@ -31,19 +31,34 @@
31
  "model_type": "jamba",
32
  "n_ctx": 262144,
33
  "num_attention_heads": 32,
34
- "num_experts": 32,
35
  "num_experts_per_tok": 2,
36
- "num_hidden_layers": 8,
37
  "num_key_value_heads": 8,
38
  "output_router_logits": false,
39
  "pad_token_id": 0,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  "rms_norm_eps": 1e-06,
41
  "router_aux_loss_coef": 0.001,
42
  "sliding_window": null,
43
  "tie_word_embeddings": false,
44
- "torch_dtype": "float32",
45
  "transformers_version": "4.40.0.dev0",
46
- "use_cache": true,
47
  "use_mamba_kernels": true,
48
  "vocab_size": 65536
49
  }
 
1
  {
2
+ "_name_or_path": "ai21labs/Jamba-v0.1",
3
  "architectures": [
4
  "JambaForCausalLM"
5
  ],
 
18
  "expert_layer_offset": 1,
19
  "expert_layer_period": 2,
20
  "hidden_act": "silu",
21
+ "hidden_size": 4096,
22
  "initializer_range": 0.02,
23
+ "intermediate_size": 14336,
24
  "mamba_conv_bias": true,
25
  "mamba_d_conv": 4,
26
  "mamba_d_state": 16,
 
31
  "model_type": "jamba",
32
  "n_ctx": 262144,
33
  "num_attention_heads": 32,
34
+ "num_experts": 16,
35
  "num_experts_per_tok": 2,
36
+ "num_hidden_layers": 32,
37
  "num_key_value_heads": 8,
38
  "output_router_logits": false,
39
  "pad_token_id": 0,
40
+ "quantization_config": {
41
+ "_load_in_4bit": true,
42
+ "_load_in_8bit": false,
43
+ "bnb_4bit_compute_dtype": "bfloat16",
44
+ "bnb_4bit_quant_storage": "bfloat16",
45
+ "bnb_4bit_quant_type": "nf4",
46
+ "bnb_4bit_use_double_quant": true,
47
+ "llm_int8_enable_fp32_cpu_offload": false,
48
+ "llm_int8_has_fp16_weight": false,
49
+ "llm_int8_skip_modules": null,
50
+ "llm_int8_threshold": 6.0,
51
+ "load_in_4bit": true,
52
+ "load_in_8bit": false,
53
+ "quant_method": "bitsandbytes"
54
+ },
55
  "rms_norm_eps": 1e-06,
56
  "router_aux_loss_coef": 0.001,
57
  "sliding_window": null,
58
  "tie_word_embeddings": false,
59
+ "torch_dtype": "bfloat16",
60
  "transformers_version": "4.40.0.dev0",
61
+ "use_cache": false,
62
  "use_mamba_kernels": true,
63
  "vocab_size": 65536
64
  }
configuration_jamba.py ADDED
@@ -0,0 +1,213 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # coding=utf-8
2
+ # Copyright 2024 AI21 Labs Ltd. and the HuggingFace Inc. team. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ """ Jamba model configuration"""
16
+ import math
17
+
18
+ from transformers.configuration_utils import PretrainedConfig
19
+ from transformers.utils import logging
20
+
21
+
22
+ logger = logging.get_logger(__name__)
23
+
24
+
25
+ class JambaConfig(PretrainedConfig):
26
+ r"""
27
+ This is the configuration class to store the configuration of a [`JambaModel`]. It is used to instantiate a
28
+ Jamba model according to the specified arguments, defining the model architecture. Instantiating a configuration
29
+ with the defaults will yield a similar configuration to that of the jamba-small architecture.
30
+
31
+ [ai21labs/jamba-small](https://huggingface.co/ai21labs/Jamba-v0.1)
32
+
33
+ Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
34
+ documentation from [`PretrainedConfig`] for more information.
35
+
36
+
37
+ Args:
38
+ vocab_size (`int`, *optional*, defaults to 65536):
39
+ Vocabulary size of the Jamba model. Defines the number of different tokens that can be represented by the
40
+ `inputs_ids` passed when calling [`JambaModel`]
41
+ tie_word_embeddings (`bool`, *optional*, defaults to `False`):
42
+ Whether the model's input and output word embeddings should be tied. Note that this is only relevant if the
43
+ model has a output word embedding layer.
44
+ hidden_size (`int`, *optional*, defaults to 4096):
45
+ Dimension of the hidden representations.
46
+ intermediate_size (`int`, *optional*, defaults to 14336):
47
+ Dimension of the MLP representations.
48
+ num_hidden_layers (`int`, *optional*, defaults to 32):
49
+ Number of hidden layers in the Transformer encoder.
50
+ num_attention_heads (`int`, *optional*, defaults to 32):
51
+ Number of attention heads for each attention layer in the Transformer encoder.
52
+ num_key_value_heads (`int`, *optional*, defaults to 8):
53
+ This is the number of key_value heads that should be used to implement Grouped Query Attention. If
54
+ `num_key_value_heads=num_attention_heads`, the model will use Multi Head Attention (MHA), if
55
+ `num_key_value_heads=1 the model will use Multi Query Attention (MQA) otherwise GQA is used. When
56
+ converting a multi-head checkpoint to a GQA checkpoint, each group key and value head should be constructed
57
+ by meanpooling all the original heads within that group. For more details checkout [this
58
+ paper](https://arxiv.org/pdf/2305.13245.pdf). If it is not specified, will default to `8`.
59
+ hidden_act (`str` or `function`, *optional*, defaults to `"silu"`):
60
+ The non-linear activation function (function or string) in the decoder.
61
+ initializer_range (`float`, *optional*, defaults to 0.02):
62
+ The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
63
+ rms_norm_eps (`float`, *optional*, defaults to 1e-06):
64
+ The epsilon used by the rms normalization layers.
65
+ use_cache (`bool`, *optional*, defaults to `True`):
66
+ Whether or not the model should return the last key/values attentions (not used by all models). Only
67
+ relevant if `config.is_decoder=True`.
68
+ calc_logits_for_entire_prompt (`bool`, *optional*, defaults to `False`):
69
+ Whether or not to calculate logits for entire prompt during generation. If `False`, only the logits of the
70
+ last prompt token will be calculated, which are the only logits needed for generation. For long sequences,
71
+ the logits for the entire sequence may use a lot of memory so setting `calc_logits_for_entire_prompt=False`
72
+ will reduce memory footprint significantly.
73
+ Note: some generation features may not be available if this is set to `False`.
74
+ output_router_logits (`bool`, *optional*, defaults to `False`):
75
+ Whether or not the router logits should be returned by the model. Enabling this will also
76
+ allow the model to output the auxiliary loss. See [here]() for more details
77
+ router_aux_loss_coef (`float`, *optional*, defaults to 0.001):
78
+ The aux loss factor for the total loss.
79
+ pad_token_id (`int`, *optional*, defaults to 0):
80
+ The id of the padding token.
81
+ bos_token_id (`int`, *optional*, defaults to 1):
82
+ The id of the "beginning-of-sequence" token.
83
+ eos_token_id (`int`, *optional*, defaults to 2):
84
+ The id of the "end-of-sequence" token.
85
+ sliding_window (`int`, *optional*):
86
+ Sliding window attention window size. If not specified, will default to `None`.
87
+ n_ctx (`int`, *optional*, defaults to 262144):
88
+ This value doesn't have any real effect. The maximum sequence length that this model is intended to be
89
+ used with. It can be used with longer sequences, but performance may degrade.
90
+ attention_dropout (`float`, *optional*, defaults to 0.0):
91
+ The dropout ratio for the attention probabilities.
92
+ num_experts_per_tok (`int`, *optional*, defaults to 2):
93
+ The number of experts to root per-token, can be also interpreted as the `top-p` routing
94
+ parameter
95
+ num_experts (`int`, *optional*, defaults to 16):
96
+ Number of experts per Sparse MLP layer.
97
+ expert_layer_period (`int`, *optional*, defaults to 2):
98
+ Once in this many layers, we will have an expert layer
99
+ expert_layer_offset (`int`, *optional*, defaults to 1):
100
+ The first layer index that contains an expert mlp layer
101
+ attn_layer_period (`int`, *optional*, defaults to 8):
102
+ Once in this many layers, we will have a vanilla attention layer
103
+ attn_layer_offset (`int`, *optional*, defaults to 4):
104
+ The first layer index that contains a vanilla attention mlp layer
105
+ use_mamba_kernels (`bool`, *optional*, defaults to `True`):
106
+ Flag indicating whether or not to use the fast mamba kernels. These are available only if `mamba-ssm` and
107
+ `causal-conv1d` are installed, and the mamba modules are running on a CUDA device. Raises ValueError if
108
+ `True` and kernels are not available
109
+ mamba_d_state (`int`, *optional*, defaults to 16):
110
+ The dimension the mamba state space latents
111
+ mamba_d_conv (`int`, *optional*, defaults to 4):
112
+ The size of the mamba convolution kernel
113
+ mamba_expand (`int`, *optional*, defaults to 2):
114
+ Expanding factor (relative to hidden_size) used to determine the mamba intermediate size
115
+ mamba_dt_rank (`Union[int,str]`, *optional*, defaults to `"auto"`):
116
+ Rank of the the mamba discretization projection matrix. `"auto"` means that it will default to `math.ceil(self.hidden_size / 16)`
117
+ mamba_conv_bias (`bool`, *optional*, defaults to `True`):
118
+ Flag indicating whether or not to use bias in the convolution layer of the mamba mixer block.
119
+ mamba_proj_bias (`bool`, *optional*, defaults to `False`):
120
+ Flag indicating whether or not to use bias in the input and output projections (["in_proj", "out_proj"]) of the mamba mixer block
121
+ mamba_inner_layernorms (`bool`, *optional*, defaults to `True`):
122
+ Flag indicating whether or not to apply layernorms to internal mamba activations
123
+
124
+ """
125
+
126
+ model_type = "jamba"
127
+ keys_to_ignore_at_inference = ["past_key_values"]
128
+
129
+ def __init__(
130
+ self,
131
+ vocab_size=65536,
132
+ tie_word_embeddings=False,
133
+ hidden_size=4096,
134
+ intermediate_size=14336,
135
+ num_hidden_layers=32,
136
+ num_attention_heads=32,
137
+ num_key_value_heads=8,
138
+ hidden_act="silu",
139
+ initializer_range=0.02,
140
+ rms_norm_eps=1e-6,
141
+ use_cache=True,
142
+ calc_logits_for_entire_prompt=False,
143
+ output_router_logits=False,
144
+ router_aux_loss_coef=0.001,
145
+ pad_token_id=0,
146
+ bos_token_id=1,
147
+ eos_token_id=2,
148
+ sliding_window=None,
149
+ n_ctx=262144,
150
+ attention_dropout=0.0,
151
+ num_experts_per_tok=2,
152
+ num_experts=16,
153
+ expert_layer_period=2,
154
+ expert_layer_offset=1,
155
+ attn_layer_period=8,
156
+ attn_layer_offset=4,
157
+ use_mamba_kernels=True,
158
+ mamba_d_state=16,
159
+ mamba_d_conv=4,
160
+ mamba_expand=2,
161
+ mamba_dt_rank="auto",
162
+ mamba_conv_bias=True,
163
+ mamba_proj_bias=False,
164
+ mamba_inner_layernorms=True,
165
+ **kwargs,
166
+ ):
167
+ self.vocab_size = vocab_size
168
+ self.tie_word_embeddings = tie_word_embeddings
169
+ self.hidden_size = hidden_size
170
+ self.intermediate_size = intermediate_size
171
+ self.num_hidden_layers = num_hidden_layers
172
+ self.num_attention_heads = num_attention_heads
173
+ self.sliding_window = sliding_window
174
+ self.n_ctx = n_ctx
175
+ self.attention_dropout = attention_dropout
176
+
177
+ # for backward compatibility
178
+ if num_key_value_heads is None:
179
+ num_key_value_heads = num_attention_heads
180
+
181
+ self.num_key_value_heads = num_key_value_heads
182
+ self.hidden_act = hidden_act
183
+ self.initializer_range = initializer_range
184
+ self.rms_norm_eps = rms_norm_eps
185
+
186
+ self.use_cache = use_cache
187
+ self.calc_logits_for_entire_prompt = calc_logits_for_entire_prompt
188
+ self.output_router_logits = output_router_logits
189
+ self.router_aux_loss_coef = router_aux_loss_coef
190
+
191
+ self.num_experts_per_tok = num_experts_per_tok
192
+ self.num_experts = num_experts
193
+ self.expert_layer_period = expert_layer_period
194
+ self.expert_layer_offset = expert_layer_offset
195
+ self.attn_layer_period = attn_layer_period
196
+ self.attn_layer_offset = attn_layer_offset
197
+
198
+ self.use_mamba_kernels = use_mamba_kernels
199
+ self.mamba_d_state = mamba_d_state
200
+ self.mamba_d_conv = mamba_d_conv
201
+ self.mamba_expand = mamba_expand
202
+ self.mamba_dt_rank = math.ceil(self.hidden_size / 16) if mamba_dt_rank == "auto" else mamba_dt_rank
203
+ self.mamba_conv_bias = mamba_conv_bias
204
+ self.mamba_proj_bias = mamba_proj_bias
205
+ self.mamba_inner_layernorms = mamba_inner_layernorms
206
+
207
+ super().__init__(
208
+ pad_token_id=pad_token_id,
209
+ bos_token_id=bos_token_id,
210
+ eos_token_id=eos_token_id,
211
+ tie_word_embeddings=tie_word_embeddings,
212
+ **kwargs,
213
+ )
special_tokens_map.json CHANGED
@@ -13,7 +13,13 @@
13
  "rstrip": false,
14
  "single_word": false
15
  },
16
- "pad_token": "<|endoftext|>",
 
 
 
 
 
 
17
  "unk_token": {
18
  "content": "<|unk|>",
19
  "lstrip": false,
 
13
  "rstrip": false,
14
  "single_word": false
15
  },
16
+ "pad_token": {
17
+ "content": "<|pad|>",
18
+ "lstrip": false,
19
+ "normalized": false,
20
+ "rstrip": false,
21
+ "single_word": false
22
+ },
23
  "unk_token": {
24
  "content": "<|unk|>",
25
  "lstrip": false,
tokenizer.json CHANGED
@@ -1,21 +1,7 @@
1
  {
2
  "version": "1.0",
3
- "truncation": {
4
- "direction": "Right",
5
- "max_length": 8192,
6
- "strategy": "LongestFirst",
7
- "stride": 0
8
- },
9
- "padding": {
10
- "strategy": {
11
- "Fixed": 8192
12
- },
13
- "direction": "Left",
14
- "pad_to_multiple_of": null,
15
- "pad_id": 0,
16
- "pad_type_id": 0,
17
- "pad_token": "<|pad|>"
18
- },
19
  "added_tokens": [
20
  {
21
  "id": 0,
 
1
  {
2
  "version": "1.0",
3
+ "truncation": null,
4
+ "padding": null,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  "added_tokens": [
6
  {
7
  "id": 0,
tokenizer_config.json CHANGED
@@ -36,19 +36,13 @@
36
  }
37
  },
38
  "bos_token": "<|startoftext|>",
 
39
  "clean_up_tokenization_spaces": false,
40
  "eos_token": "<|endoftext|>",
41
- "max_length": 8192,
42
  "model_max_length": 1000000000000000019884624838656,
43
- "pad_to_multiple_of": null,
44
- "pad_token": "<|endoftext|>",
45
- "pad_token_type_id": 0,
46
- "padding_side": "right",
47
  "spaces_between_special_tokens": false,
48
- "stride": 0,
49
  "tokenizer_class": "LlamaTokenizer",
50
- "truncation_side": "right",
51
- "truncation_strategy": "longest_first",
52
  "unk_token": "<|unk|>",
53
  "use_default_system_prompt": false
54
  }
 
36
  }
37
  },
38
  "bos_token": "<|startoftext|>",
39
+ "chat_template": "{% if not add_generation_prompt is defined %}{% set add_generation_prompt = false %}{% endif %}{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}",
40
  "clean_up_tokenization_spaces": false,
41
  "eos_token": "<|endoftext|>",
 
42
  "model_max_length": 1000000000000000019884624838656,
43
+ "pad_token": "<|pad|>",
 
 
 
44
  "spaces_between_special_tokens": false,
 
45
  "tokenizer_class": "LlamaTokenizer",
 
 
46
  "unk_token": "<|unk|>",
47
  "use_default_system_prompt": false
48
  }