Views
No views yet
pip install -U torch transformers accelerate safetensors1import torch
2from transformers import AutoModelForCausalLM
3from transformers import AutoTokenizer
4
5model_id = "Arthur-75/storm-qwen3-1.7B"
6
7system_prompt = (
8 "From the query generate new semantic related keywords.\n"
9 "Output the result strictly as a single comma-separated line."
10)
11
12if torch.cuda.is_available():
13 device = "cuda"
14elif torch.backends.mps.is_available():
15 device = "mps"
16else:
17 device = "cpu"
18
19tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
20#tokenizer.padding_side = "left"
21
22if tokenizer.pad_token is None:
23 tokenizer.pad_token = tokenizer.eos_token
24
25model = AutoModelForCausalLM.from_pretrained(
26 model_id,
27 dtype=torch.float32,
28 #device_map=None,
29 #low_cpu_mem_usage=True,
30 trust_remote_code=True,
31)
32
33model = model.to(device)
34model.eval()
35
36
37
38def generate_keywords(query: str):
39 messages = [
40 {"role": "system", "content": system_prompt},
41 {"role": "user", "content": f"[QUERY]: {query.strip()}\n[KEYWORDS]: "},
42 ]
43
44 prompt = tokenizer.apply_chat_template(
45 messages,
46 tokenize=False,
47 add_generation_prompt=True,
48 enable_thinking=False,
49 )
50
51 inputs = tokenizer(
52 prompt,
53 return_tensors="pt",
54 add_special_tokens=False,
55 ).to(device)
56
57 prompt_len = inputs["input_ids"].shape[1]
58
59 with torch.inference_mode():
60 output = model.generate(
61 **inputs,
62 max_new_tokens=32,#[32,64]
63 do_sample=False,
64 num_beams=6,
65 num_beam_groups=3,
66 diversity_penalty=1.0,
67 num_return_sequences=3,
68 #repetition_penalty=1.0,
69 custom_generate="transformers-community/group-beam-search"
70 # pad_token_id=tokenizer.pad_token_id,
71 # eos_token_id=tokenizer.eos_token_id,
72 )
73
74 decoded = tokenizer.batch_decode(
75 output[:, prompt_len:],
76 skip_special_tokens=True,
77 )
78
79 return decoded
80
81
82query = "What are the symptoms of vitamin D deficiency?"
83outputs = generate_keywords(query)
84
85print(outputs)