Views
No views yet
1 VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 \
2 vllm serve yujiepan/qwen3-next-moe-tiny-random \
3 --tensor-parallel-size 4 \
4 --max-model-len 262144 \
5 --speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":2}'
61SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 \
2python -m sglang.launch_server \
3 --model-path yujiepan/qwen3-next-moe-tiny-random \
4 --tp-size 4 --context-length 262144 \
5 --mem-fraction-static 0.8 \
6 --speculative-algo NEXTN \
7 --speculative-num-steps 3 \
8 --speculative-eagle-topk 1 \
9 --speculative-num-draft-tokens 4
101from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
2model_id = "yujiepan/qwen3-next-moe-tiny-random"
3
4# load the tokenizer and the model
5tokenizer = AutoTokenizer.from_pretrained(model_id)
6model = AutoModelForCausalLM.from_pretrained(
7 model_id,
8 dtype="auto",
9 device_map="cuda",
10)
11# prepare the model input
12prompt = "Give me a short introduction to large language model."
13messages = [
14 {"role": "user", "content": prompt},
15]
16text = tokenizer.apply_chat_template(
17 messages,
18 tokenize=False,
19 add_generation_prompt=True,
20)
21model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
22# conduct text completion
23generated_ids = model.generate(
24 **model_inputs,
25 max_new_tokens=8,
26)
27output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
28content = tokenizer.decode(output_ids, skip_special_tokens=True)
29print("content:", content)1from copy import deepcopy
2
3import torch
4import torch.nn as nn
5from transformers import (
6 AutoConfig,
7 AutoModelForCausalLM,
8 AutoTokenizer,
9 GenerationConfig,
10 pipeline,
11 set_seed,
12)
13
14source_model_id = "Qwen/Qwen3-Next-80B-A3B-Instruct"
15save_folder = "/tmp/yujiepan/qwen3-next-moe-tiny-random"
16
17tokenizer = AutoTokenizer.from_pretrained(
18 source_model_id, trust_remote_code=True,
19)
20tokenizer.save_pretrained(save_folder)
21
22config = AutoConfig.from_pretrained(
23 source_model_id, trust_remote_code=True,
24)
25config._name_or_path = source_model_id
26config.hidden_size = 8
27config.intermediate_size = 32
28config.head_dim = 32
29config.num_key_value_heads = 8
30config.num_attention_heads = 16
31config.num_hidden_layers = 4
32config.tie_word_embeddings = False
33config.linear_num_key_heads = 8
34config.linear_num_value_heads = 16
35config.moe_intermediate_size = 32
36config.num_experts = 32
37config.num_experts_per_tok = 10
38config.layer_types = config.layer_types[:4]
39config.shared_expert_intermediate_size = 32
40model = AutoModelForCausalLM.from_config(
41 config,
42 torch_dtype=torch.bfloat16,
43 trust_remote_code=True,
44)
45model.generation_config = GenerationConfig.from_pretrained(
46 source_model_id, trust_remote_code=True,
47)
48# MTP
49model.mtp = nn.ModuleDict({
50 "pre_fc_norm_embedding": nn.RMSNorm(config.hidden_size),
51 "fc": nn.Linear(config.hidden_size * 2, config.hidden_size, bias=False),
52 "norm": nn.RMSNorm(config.hidden_size),
53 "pre_fc_norm_hidden": nn.RMSNorm(config.hidden_size),
54 "layers": nn.ModuleList([deepcopy(model.model.layers[3])]),
55})
56model = model.to(torch.bfloat16)
57set_seed(42)
58with torch.no_grad():
59 for name, p in sorted(model.named_parameters()):
60 torch.nn.init.normal_(p, 0, 0.1)
61 print(name, p.shape)
62model.save_pretrained(save_folder)1Qwen3NextForCausalLM(
2 (model): Qwen3NextModel(
3 (embed_tokens): Embedding(151936, 8)
4 (layers): ModuleList(
5 (0-2): 3 x Qwen3NextDecoderLayer(
6 (linear_attn): Qwen3NextGatedDeltaNet(
7 (act): SiLU()
8 (conv1d): Conv1d(4096, 4096, kernel_size=(4,), stride=(1,), padding=(3,), groups=4096, bias=False)
9 (in_proj_qkvz): Linear(in_features=8, out_features=6144, bias=False)
10 (in_proj_ba): Linear(in_features=8, out_features=32, bias=False)
11 (norm): FusedRMSNormGated(128, eps=1e-06, activation=silu)
12 (out_proj): Linear(in_features=2048, out_features=8, bias=False)
13 )
14 (mlp): Qwen3NextSparseMoeBlock(
15 (gate): Linear(in_features=8, out_features=32, bias=False)
16 (experts): ModuleList(
17 (0-31): 32 x Qwen3NextMLP(
18 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
19 (up_proj): Linear(in_features=8, out_features=32, bias=False)
20 (down_proj): Linear(in_features=32, out_features=8, bias=False)
21 (act_fn): SiLU()
22 )
23 )
24 (shared_expert): Qwen3NextMLP(
25 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
26 (up_proj): Linear(in_features=8, out_features=32, bias=False)
27 (down_proj): Linear(in_features=32, out_features=8, bias=False)
28 (act_fn): SiLU()
29 )
30 (shared_expert_gate): Linear(in_features=8, out_features=1, bias=False)
31 )
32 (input_layernorm): Qwen3NextRMSNorm((8,), eps=1e-06)
33 (post_attention_layernorm): Qwen3NextRMSNorm((8,), eps=1e-06)
34 )
35 (3): Qwen3NextDecoderLayer(
36 (self_attn): Qwen3NextAttention(
37 (q_proj): Linear(in_features=8, out_features=1024, bias=False)
38 (k_proj): Linear(in_features=8, out_features=256, bias=False)
39 (v_proj): Linear(in_features=8, out_features=256, bias=False)
40 (o_proj): Linear(in_features=512, out_features=8, bias=False)
41 (q_norm): Qwen3NextRMSNorm((32,), eps=1e-06)
42 (k_norm): Qwen3NextRMSNorm((32,), eps=1e-06)
43 )
44 (mlp): Qwen3NextSparseMoeBlock(
45 (gate): Linear(in_features=8, out_features=32, bias=False)
46 (experts): ModuleList(
47 (0-31): 32 x Qwen3NextMLP(
48 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
49 (up_proj): Linear(in_features=8, out_features=32, bias=False)
50 (down_proj): Linear(in_features=32, out_features=8, bias=False)
51 (act_fn): SiLU()
52 )
53 )
54 (shared_expert): Qwen3NextMLP(
55 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
56 (up_proj): Linear(in_features=8, out_features=32, bias=False)
57 (down_proj): Linear(in_features=32, out_features=8, bias=False)
58 (act_fn): SiLU()
59 )
60 (shared_expert_gate): Linear(in_features=8, out_features=1, bias=False)
61 )
62 (input_layernorm): Qwen3NextRMSNorm((8,), eps=1e-06)
63 (post_attention_layernorm): Qwen3NextRMSNorm((8,), eps=1e-06)
64 )
65 )
66 (norm): Qwen3NextRMSNorm((8,), eps=1e-06)
67 (rotary_emb): Qwen3NextRotaryEmbedding()
68 )
69 (lm_head): Linear(in_features=8, out_features=151936, bias=False)
70 (mtp): ModuleDict(
71 (pre_fc_norm_embedding): RMSNorm((8,), eps=None, elementwise_affine=True)
72 (fc): Linear(in_features=16, out_features=8, bias=False)
73 (norm): RMSNorm((8,), eps=None, elementwise_affine=True)
74 (pre_fc_norm_hidden): RMSNorm((8,), eps=None, elementwise_affine=True)
75 (layers): ModuleList(
76 (0): Qwen3NextDecoderLayer(
77 (self_attn): Qwen3NextAttention(
78 (q_proj): Linear(in_features=8, out_features=1024, bias=False)
79 (k_proj): Linear(in_features=8, out_features=256, bias=False)
80 (v_proj): Linear(in_features=8, out_features=256, bias=False)
81 (o_proj): Linear(in_features=512, out_features=8, bias=False)
82 (q_norm): Qwen3NextRMSNorm((32,), eps=1e-06)
83 (k_norm): Qwen3NextRMSNorm((32,), eps=1e-06)
84 )
85 (mlp): Qwen3NextSparseMoeBlock(
86 (gate): Linear(in_features=8, out_features=32, bias=False)
87 (experts): ModuleList(
88 (0-31): 32 x Qwen3NextMLP(
89 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
90 (up_proj): Linear(in_features=8, out_features=32, bias=False)
91 (down_proj): Linear(in_features=32, out_features=8, bias=False)
92 (act_fn): SiLU()
93 )
94 )
95 (shared_expert): Qwen3NextMLP(
96 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
97 (up_proj): Linear(in_features=8, out_features=32, bias=False)
98 (down_proj): Linear(in_features=32, out_features=8, bias=False)
99 (act_fn): SiLU()
100 )
101 (shared_expert_gate): Linear(in_features=8, out_features=1, bias=False)
102 )
103 (input_layernorm): Qwen3NextRMSNorm((8,), eps=1e-06)
104 (post_attention_layernorm): Qwen3NextRMSNorm((8,), eps=1e-06)
105 )
106 )
107 )
108)