Views
No views yet
vllm serve Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar --tensor-parallel-size 4 --max-model-len 655361from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_name = "Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar"
4
5# load the tokenizer and the model
6tokenizer = AutoTokenizer.from_pretrained(model_name)
7model = AutoModelForCausalLM.from_pretrained(
8 model_name,
9 torch_dtype="auto",
10 device_map="auto"
11)
12
13prompts = [
14 "Write a quick sort algorithm.",
15 "Write a flappy bird.",
16 "Write a llm quantization algorithm.",
17]
18
19texts = []
20for prompt in prompts:
21 messages = [
22 {"role": "user", "content": prompt}
23 ]
24 text = tokenizer.apply_chat_template(
25 messages,
26 tokenize=False,
27 add_generation_prompt=True
28 )
29 texts.append(text)
30inputs = tokenizer(texts, return_tensors="pt", padding=True, truncation=True, padding_side="left").to(model.device)
31
32# conduct text completion
33outputs = model.generate(
34 **inputs,
35 max_new_tokens=65536,
36)
37generated_ids = [
38 output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs["input_ids"], outputs)
39]
40
41decoded_outputs = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
42
43for i, prompt in enumerate(prompts):
44 input_id = inputs
45 print(f"Prompt: {prompt}")
46 print(f"Generated: {decoded_outputs[i]}")
47 print("-" * 50)
48
491import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer, AutoConfig
3from auto_round import AutoRound
4
5model_name = "Qwen/Qwen3-Coder-480B-A35B-Instruct"
6
7model = AutoModelForCausalLM.from_pretrained(model_name,
8 device_map="cpu", torch_dtype="auto")
9
10tokenizer = AutoTokenizer.from_pretrained(model_name)
11
12layer_config = {}
13for n, m in model.named_modules():
14 if "mlp.gate" in n: ## vllm only support 16 bit for this layer
15 layer_config[n] = {"bits": 16}
16 elif isinstance(m, torch.nn.Linear) and (not "expert" in n or "shared_experts" in n) and n != "lm_head":
17 layer_config[n] = {"bits": 8, "group_size": 128}
18
19autoround = AutoRound(model, tokenizer, iters=0, group_size=64, layer_config=layer_config)
20output_dir = "/dataset/Qwen3-Coder-480B-A35B-Instruct-int4-mixed"
21autoround.quantize_and_save(output_dir)
22
23## tricky code to handle qkv fusing issue, we will fix it in vllm later
24import os
25import json
26
27config_path = os.path.join(output_dir, "config.json")
28
29with open(config_path, "r") as file:
30 config = json.load(file)
31extra_config = config["quantization_config"]["extra_config"]
32num_hidden_layers = config["num_hidden_layers"]
33for i in range(num_hidden_layers):
34 qkv_name = f"model.layers.{str(i)}.self_attn.qkv_proj"
35 extra_config[qkv_name] = {"bits": 8, "group_size": 128}
36with open(config_path, "w") as file:
37 json.dump(config, file, indent=2)