maga_transformer/tools/fake_gpt_neox.py (62 lines of code) (raw):
import os
import json
from maga_transformer.tools.fake_model_base import *
def save_config_func(
model_type: str,
dest_path: str,
layer_num: int,
head: int,
head_kv_num: int,
head_size: int,
ffn_hidden_size: int,
ffn_inter_padding_size: int,
vocab_size: int):
config = {
"architectures": [
"GPTNeoXForCausalLM"
],
"auto_map": {
"AutoModel": "model.GPTNeoXForCausalLM"
},
"bos_token_id": 2,
"eos_token_id": 2,
"hidden_act": "gelu",
"hidden_size": head * head_size,
"initializer_range": 0.02,
"intermediate_size": ffn_hidden_size,
"layer_norm_eps": 1e-05,
"max_position_embeddings": 2048,
"model_type": model_type,
"num_attention_heads": head,
"num_hidden_layers": layer_num,
"rotary_emb_base": 10000,
"rotary_pct": 1.0,
"tie_word_embeddings": False,
"torch_dtype": "float16",
"transformers_version": "4.27.1",
"use_cache": True,
"use_parallel_residual": False,
"vocab_size": vocab_size,
"attention_dropout": 0,
"hidden_dropout": 0,
"classifier_dropout": 0.1,
"rope_scaling": {
"type": "dynamic",
"factor": 2
}
}
# save to config.json
json.dump(config, open(os.path.join(dest_path, 'config.json'), 'w'), indent=2)
def fake_gpt_neox():
default_config = DefaultModelConfig()
default_config.layer_num = 2
default_config.head_num = 4
default_config.head_kv_num = 4
default_config.head_size = 128
default_config.ffn_hidden_size = 4 * default_config.head_size * default_config.head_num
default_config.ffn_inter_padding_size = default_config.ffn_hidden_size
default_config.ffn_gate_active = False
default_config.ffn_w1_w3_independ = False
default_config.vocab_size = 250752
fake_model("gpt_neox", default_config, save_config_func)
if __name__ == '__main__':
fake_gpt_neox()