Views
No views yet
vllm serve tiny-random/minimax-m2 --trust-remote-code1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
3
4model_id = "tiny-random/minimax-m2"
5tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
6model = AutoModelForCausalLM.from_pretrained(
7 model_id,
8 torch_dtype=torch.bfloat16,
9 trust_remote_code=True,
10)
11pipe = pipeline('text-generation', model=model,
12 tokenizer=tokenizer, trust_remote_code=True)
13print(pipe('Write an article about Artificial Intelligence.'))1import json
2from pathlib import Path
3
4import accelerate
5import torch
6from huggingface_hub import file_exists, hf_hub_download
7from transformers import (
8 AutoConfig,
9 AutoModelForCausalLM,
10 AutoTokenizer,
11 GenerationConfig,
12 set_seed,
13)
14
15source_model_id = "MiniMaxAI/MiniMax-M2"
16save_folder = "/tmp/tiny-random/minimax-m2"
17
18processor = AutoTokenizer.from_pretrained(source_model_id)
19processor.save_pretrained(save_folder)
20
21with open(hf_hub_download(source_model_id, filename='config.json', repo_type='model'), 'r', encoding='utf-8') as f:
22 config_json = json.load(f)
23
24config_json["attn_type_list"] = [1, 1]
25for k, v in config_json['auto_map'].items():
26 config_json['auto_map'][k] = f'{source_model_id}--{v}'
27config_json['head_dim'] = 32
28config_json['hidden_size'] = 8
29config_json['intermediate_size'] = 64
30config_json['num_attention_heads'] = 8
31config_json['num_key_value_heads'] = 4
32config_json['num_hidden_layers'] = 2
33config_json['mlp_intermediate_size'] = 64
34config_json['num_local_experts'] = 32
35config_json['rotary_dim'] = 16
36del config_json['quantization_config']
37
38with open(f"{save_folder}/config.json", "w", encoding='utf-8') as f:
39 json.dump(config_json, f, indent=2)
40
41config = AutoConfig.from_pretrained(
42 save_folder,
43 trust_remote_code=True,
44)
45print(config)
46automap = config_json['auto_map']
47torch.set_default_dtype(torch.bfloat16)
48model = AutoModelForCausalLM.from_config(config, trust_remote_code=True)
49torch.set_default_dtype(torch.float32)
50# according to source model, gat is in FP32
51for i in range(config.num_hidden_layers):
52 model.model.layers[i].block_sparse_moe.gate.float()
53if file_exists(filename="generation_config.json", repo_id=source_model_id, repo_type='model'):
54 model.generation_config = GenerationConfig.from_pretrained(
55 source_model_id, trust_remote_code=True,
56 )
57set_seed(42)
58model = model.cpu()
59with torch.no_grad():
60 for name, p in sorted(model.named_parameters()):
61 torch.nn.init.normal_(p, 0, 0.1)
62 print(name, p.shape)
63model.save_pretrained(save_folder)
64print(model)
65with open(f"{save_folder}/config.json", "r", encoding='utf-8') as f:
66 config_json = json.load(f)
67 config_json['auto_map'] = automap
68with open(f"{save_folder}/config.json", "w", encoding='utf-8') as f:
69 json.dump(config_json, f, indent=2)
70for python_file in Path(save_folder).glob('*.py'):
71 python_file.unlink()1MiniMaxM2ForCausalLM(
2 (model): MiniMaxM2Model(
3 (embed_tokens): Embedding(200064, 8)
4 (layers): ModuleList(
5 (0-1): 2 x MiniMaxM2DecoderLayer(
6 (self_attn): MiniMaxM2Attention(
7 (q_proj): Linear(in_features=8, out_features=256, bias=False)
8 (k_proj): Linear(in_features=8, out_features=128, bias=False)
9 (v_proj): Linear(in_features=8, out_features=128, bias=False)
10 (o_proj): Linear(in_features=256, out_features=8, bias=False)
11 (q_norm): MiniMaxM2RMSNorm((256,), eps=1e-06)
12 (k_norm): MiniMaxM2RMSNorm((128,), eps=1e-06)
13 )
14 (block_sparse_moe): MiniMaxM2SparseMoeBlock(
15 (gate): Linear(in_features=8, out_features=32, bias=False)
16 (experts): MiniMaxM2Experts(
17 (0-31): 32 x MiniMaxM2MLP(
18 (w1): Linear(in_features=8, out_features=64, bias=False)
19 (w2): Linear(in_features=64, out_features=8, bias=False)
20 (w3): Linear(in_features=8, out_features=64, bias=False)
21 (act_fn): SiLUActivation()
22 )
23 )
24 )
25 (input_layernorm): MiniMaxM2RMSNorm((8,), eps=1e-06)
26 (post_attention_layernorm): MiniMaxM2RMSNorm((8,), eps=1e-06)
27 )
28 )
29 (norm): MiniMaxM2RMSNorm((8,), eps=1e-06)
30 (rotary_emb): MiniMaxM2RotaryEmbedding()
31 )
32 (lm_head): Linear(in_features=8, out_features=200064, bias=False)
33)