Views
No views yet
1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4tokenizer = AutoTokenizer.from_pretrained("jiangchengchengNLP/qwen2.5-distill-QWQ")
5base_model = AutoModelForCausalLM.from_pretrained(r"Qwen/Qwen2.5-Coder-7B-Instruct", device_map='auto', torch_dtype="bfloat16")
6model = PeftModel.from_pretrained(base_model, "jiangchengchengNLP/qwen2.5-distill-QWQ")
7
8prompt = "how many `r` in `strawberry`?"
9messages = [
10 {"role": "user", "content": prompt}
11]
12text = tokenizer.apply_chat_template(
13 messages,
14 tokenize=False,
15 add_generation_prompt=True
16)
17model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
18
19generated_ids = model.generate(
20 **model_inputs,
21 max_new_tokens=4096,
22 top_p=0.8,
23 temperature=0.2
24)
25
26generated_ids = [
27 output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
28]
29
30response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
31print(response)1from huggingface_hub import snapshot_download
2thinker_lora_path=snapshot_download(repo_id="jiangchengchengNLP/qwen2.5-distill-QWQ")
3from vllm import LLM,SamplingParams
4from vllm.lora.request import LoRARequest
5from transformers import AutoTokenizer
6
7# Decide on a token limit for thinking; As the model's max tokens is 32768, 32000 usually ensures there is enough space for the model to still answer
8MAX_TOKENS_THINKING = 32000
9# Decide how often to ignore end-of-thinking token
10NUM_IGNORE = 1
11model=LLM(model="Qwen/Qwen2.5-Coder-7B-Instruct",enable_lora=True)
12model=LLM(model=model_path)
13tokenizer=AutoTokenizer.from_pretrained(
14 "jiangchengchengNLP/qwen2.5-distill-QWQ"
15)
16stop_token_ids=tokenizer("<|im_end|>")['input_ids']
17sampling_params=SamplingParams(
18 max_tokens=MAX_TOKENS_THINKING,
19 min_tokens=0,
20 stop_token_ids=stop_token_ids,
21 skip_special_tokens=True,
22 temperature=0.0
23)
24# For the math sample
25import re
26pattn=re.compile("\*\*Final Answer\*\*.*",re.S)
27
28prompts=[
29 """Given positive real numbers $a$ and $b$ satisfy $a+b=1$, then $M=$ $\sqrt{1+a^{2}}+\sqrt{1+2 b}$ the integer part is ? """,
30]
31for i,p in enumerate(prompts):
32 messages=[
33 {'role':'user','content':p}
34 ]
35 prompt=tokenizer.apply_chat_template(
36 messages,
37 add_generation_prompt=True,
38 tokenize=False
39 )
40 o=model.generate(
41 prompt,
42 sampling_params=sampling_params,
43 lora_request=LoRARequest("thinker_adapter", 1, thinker_lora_path)
44 )
45 ignore_str="Wait a minute"
46 max_tokens_thinking_tmp = MAX_TOKENS_THINKING
47 if max_tokens_thinking_tmp>0:
48 for i in range(NUM_IGNORE):
49 max_tokens_thinking_tmp-=len(o[0].outputs[0].token_ids)
50 generate_text=o[0].outputs[0].text
51 drop_text=pattn.findall(generate_text)
52 if drop_text:
53 generate_text=generate_text.replace(drop_text[0],"")
54 prompt+=generate_text+ignore_str
55 sampling_params = SamplingParams(
56 max_tokens=max_tokens_thinking_tmp,
57 min_tokens=1,
58 stop_token_ids=stop_token_ids,
59 skip_special_tokens=True,
60 temperature=0.0,
61 )
62 o = model.generate(
63 prompt,
64 sampling_params=sampling_params,
65 lora_request=LoRARequest("thinker_adapter", 1, thinker_lora_path)
66 )
67generate_text=o[0].outputs[0].text
68drop_text=pattn.findall(generate_text)
69if drop_text:
70 generate_text=generate_text.replace(drop_text[0],"")
71prompt+=generate_text+"\n"+"**Final Answer**"
72sampling_params = SamplingParams(
73 max_tokens=max_tokens_thinking_tmp,
74 min_tokens=1,
75 stop_token_ids=stop_token_ids,
76 skip_special_tokens=False,
77 temperature=0.0,
78 )
79o=model.generate(
80 prompt,
81 sampling_params=sampling_params,
82 lora_request=LoRARequest("thinker_adapter", 1, thinker_lora_path)
83 )
84print("With budget forcing:")
85print(prompt + o[0].outputs[0].text)1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3tokenizer = AutoTokenizer.from_pretrained("jiangchengchengNLP/qwen2.5-distill-QWQ")
4base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-7B-Instruct",device_map='cpu',torch_dtype="bfloat16")
5model = PeftModel.from_pretrained(base_model, "jiangchengchengNLP/qwen2.5-distill-QWQ")
6mergemodel = model.merge_and_unload()
7mergemodel.save_pretrained("./merge_model")
8tokenizer.save_pretrained("./merge_model")
9print("model have merged!")