Views
No views yet
| File path | Size |
|---|---|
| model.safetensors | 8.4MB |
1import torch
2import transformers
3
4model_id = "tiny-random/longcat-flash-lite"
5pipe = transformers.pipelines.pipeline(
6 'text-generation',
7 model=model_id,
8 trust_remote_code=True,
9 device_map='cuda',
10 torch_dtype=torch.bfloat16,
11)
12past_key_values = transformers.DynamicCache(config=None) # set config to None
13r = pipe('Hello, world!', past_key_values=past_key_values, max_new_tokens=32)
14print(r)1import json
2from copy import deepcopy
3from pathlib import Path
4
5import torch
6import torch.nn as nn
7from huggingface_hub import file_exists, hf_hub_download
8from transformers import (
9 AutoConfig,
10 AutoModelForCausalLM,
11 AutoProcessor,
12 AutoTokenizer,
13 GenerationConfig,
14 set_seed,
15)
16from transformers.models.glm4_moe.modeling_glm4_moe import Glm4MoeRMSNorm
17source_model_id = "meituan-longcat/LongCat-Flash-Lite"
18save_folder = "/tmp/tiny-random/longcat-flash-lite"
19
20Path(save_folder).mkdir(parents=True, exist_ok=True)
21tokenizer = AutoTokenizer.from_pretrained(source_model_id, trust_remote_code=True)
22tokenizer.save_pretrained(save_folder)
23
24with open(hf_hub_download(source_model_id, filename='config.json', repo_type='model'), 'r', encoding='utf-8') as f:
25 config_json = json.load(f)
26for k, v in config_json['auto_map'].items():
27 config_json['auto_map'][k] = f'{source_model_id}--{v}'
28config_json.update({
29 'num_layers': 2,
30 'hidden_size': 8,
31 'ffn_hidden_size': 32,
32 'expert_ffn_hidden_size': 32,
33 'num_attention_heads': 4,
34 'kv_lora_rank': 384,
35 'n_routed_experts': 32,
36 'q_lora_rank': 32,
37 'qk_nope_head_dim': 64,
38 'qk_rope_head_dim': 192,
39 'head_dim': 192,
40 'qk_head_dim': 256,
41 'v_head_dim': 64,
42 'moe_topk': 12,
43 'zero_expert_num': 16,
44 'emb_split_num': 2,
45 'emb_neighbor_num': 2,
46 'ngram_vocab_size_ratio': 4,
47})
48# del config_json['quantization_config']
49with open(f"{save_folder}/config.json", "w", encoding='utf-8') as f:
50 json.dump(config_json, f, indent=2)
51
52config = AutoConfig.from_pretrained(
53 save_folder,
54 trust_remote_code=True,
55)
56print(config)
57torch.set_default_dtype(torch.bfloat16)
58model = AutoModelForCausalLM.from_config(config, trust_remote_code=True)
59if file_exists(filename="generation_config.json", repo_id=source_model_id, repo_type='model'):
60 model.generation_config = GenerationConfig.from_pretrained(
61 source_model_id, trust_remote_code=True,
62 )
63model = model.cpu()
64# MTP
65model.model.mtp = nn.ModuleDict({
66 "layers": nn.ModuleList([nn.ModuleDict(dict(
67 eh_proj=nn.Linear(config.hidden_size * 2, config.hidden_size, bias=False),
68 enorm=nn.ModuleDict({"m": nn.RMSNorm(config.hidden_size)}),
69 hnorm=nn.ModuleDict({"m": nn.RMSNorm(config.hidden_size)}),
70 input_layernorm=nn.RMSNorm(config.hidden_size),
71 post_attention_layernorm=nn.RMSNorm(config.hidden_size),
72 self_attn=deepcopy(model.model.layers[0].self_attn[0]),
73 transformer_layer=nn.ModuleDict({"mlp": deepcopy(model.model.layers[0].mlps[0])}),
74 ))]),
75 "norm": nn.RMSNorm(config.hidden_size),
76})
77for i in range(config.num_layers):
78 model.model.layers[i].mlp.router = model.model.layers[i].mlp.router.float()
79 # model.model.layers[i].mlp.router.e_score_correction_bias = torch.zeros((config.n_routed_experts + config.zero_expert_num)).float()
80set_seed(42)
81with torch.no_grad():
82 for name, p in sorted(model.named_parameters()):
83 torch.nn.init.normal_(p, 0, 0.1)
84 print(name, p.shape, p.dtype)
85model.model.mtp.embed_tokens = deepcopy(model.model.embed_tokens)
86model.model.ngram_embeddings = None # avoid saving shared params
87
88model.save_pretrained(save_folder)
89torch.set_default_dtype(torch.float32)
90
91with open(f"{save_folder}/config.json", "r", encoding='utf-8') as f:
92 config_json = json.load(f)
93 config_json['auto_map'] = {k: source_model_id + '--' +
94 v.split('--')[-1] for k, v in config_json['auto_map'].items()}
95with open(f"{save_folder}/config.json", "w", encoding='utf-8') as f:
96 json.dump(config_json, f, indent=2)
97for f in Path(save_folder).glob('*.py'):
98 f.unlink()1LongcatFlashNgramForCausalLM(
2 (model): LongcatFlashNgramModel(
3 (embed_tokens): Embedding(131072, 8)
4 (layers): ModuleList(
5 (0-1): 2 x LongcatFlashDecoderLayer(
6 (mlp): LongcatFlashMoE(
7 (experts): ModuleList(
8 (0-31): 32 x LongcatFlashMLP(
9 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
10 (up_proj): Linear(in_features=8, out_features=32, bias=False)
11 (down_proj): Linear(in_features=32, out_features=8, bias=False)
12 (act_fn): SiLUActivation()
13 )
14 (32-47): 16 x Identity()
15 )
16 (router): LongcatFlashTopkRouter(
17 (classifier): Linear(in_features=8, out_features=48, bias=False)
18 )
19 )
20 (self_attn): ModuleList(
21 (0-1): 2 x LongcatFlashMLA(
22 (q_a_proj): Linear(in_features=8, out_features=32, bias=False)
23 (q_a_layernorm): LongcatFlashRMSNorm((32,), eps=1e-06)
24 (q_b_proj): Linear(in_features=32, out_features=1024, bias=False)
25 (kv_a_proj_with_mqa): Linear(in_features=8, out_features=576, bias=False)
26 (kv_a_layernorm): LongcatFlashRMSNorm((384,), eps=1e-06)
27 (kv_b_proj): Linear(in_features=384, out_features=512, bias=False)
28 (o_proj): Linear(in_features=256, out_features=8, bias=False)
29 )
30 )
31 (mlps): ModuleList(
32 (0-1): 2 x LongcatFlashMLP(
33 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
34 (up_proj): Linear(in_features=8, out_features=32, bias=False)
35 (down_proj): Linear(in_features=32, out_features=8, bias=False)
36 (act_fn): SiLUActivation()
37 )
38 )
39 (input_layernorm): ModuleList(
40 (0-1): 2 x LongcatFlashRMSNorm((8,), eps=1e-05)
41 )
42 (post_attention_layernorm): ModuleList(
43 (0-1): 2 x LongcatFlashRMSNorm((8,), eps=1e-05)
44 )
45 )
46 )
47 (norm): LongcatFlashRMSNorm((8,), eps=1e-05)
48 (rotary_emb): LongcatFlashRotaryEmbedding()
49 (ngram_embeddings): None
50 (mtp): ModuleDict(
51 (layers): ModuleList(
52 (0): ModuleDict(
53 (eh_proj): Linear(in_features=16, out_features=8, bias=False)
54 (enorm): ModuleDict(
55 (m): RMSNorm((8,), eps=None, elementwise_affine=True)
56 )
57 (hnorm): ModuleDict(
58 (m): RMSNorm((8,), eps=None, elementwise_affine=True)
59 )
60 (input_layernorm): RMSNorm((8,), eps=None, elementwise_affine=True)
61 (post_attention_layernorm): RMSNorm((8,), eps=None, elementwise_affine=True)
62 (self_attn): LongcatFlashMLA(
63 (q_a_proj): Linear(in_features=8, out_features=32, bias=False)
64 (q_a_layernorm): LongcatFlashRMSNorm((32,), eps=1e-06)
65 (q_b_proj): Linear(in_features=32, out_features=1024, bias=False)
66 (kv_a_proj_with_mqa): Linear(in_features=8, out_features=576, bias=False)
67 (kv_a_layernorm): LongcatFlashRMSNorm((384,), eps=1e-06)
68 (kv_b_proj): Linear(in_features=384, out_features=512, bias=False)
69 (o_proj): Linear(in_features=256, out_features=8, bias=False)
70 )
71 (transformer_layer): ModuleDict(
72 (mlp): LongcatFlashMLP(
73 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
74 (up_proj): Linear(in_features=8, out_features=32, bias=False)
75 (down_proj): Linear(in_features=32, out_features=8, bias=False)
76 (act_fn): SiLUActivation()
77 )
78 )
79 )
80 )
81 (norm): RMSNorm((8,), eps=None, elementwise_affine=True)
82 (embed_tokens): Embedding(131072, 8)
83 )
84 )
85 (lm_head): Linear(in_features=8, out_features=131072, bias=False)
86)