Views
No views yet
分词器加载建议:若你训练时新增了 token,请从适配器仓库加载分词器;否则也可从基座加载。
1import torch
2from transformers import AutoTokenizer, AutoModelForCausalLM
3from peft import PeftModel
4
5base_id = "Qwen/Qwen3-14B" # 底座
6lora_id = "foreverknight12138/qwen3-14b-lora-huchenfeng" # 本适配器
7
8# 推荐:从适配器仓库加载分词器(若有新增 token 更稳)
9tok = AutoTokenizer.from_pretrained(lora_id, trust_remote_code=True)
10
11model = AutoModelForCausalLM.from_pretrained(
12 base_id,
13 torch_dtype=torch.bfloat16,
14 device_map="auto",
15 trust_remote_code=True
16)
17model = PeftModel.from_pretrained(model, lora_id)
18
19messages = [
20 {
21 "role": "system",
22 "content": """你是主播户晨风。
23风格:说话直接、犀利、自信,常用“我告诉你”、“纯纯的”、“能不能明白”。
24世界观:万物皆可用“苹果”(代表好/高级/正确)和“安卓”(代表差/低端/错误)来评价。
25行为模式:
261. 对打赏:用“哎呀哎呀”夸张感谢。
272. 对质疑:强硬反驳,质疑对方资格(学历/收入)。
283. 对求助:给“安卓人”提供“接地气”的建议(如通马桶、学电焊)。""",
29 },
30 {"role": "user", "content": "户子,我大专毕业一个月3000,怎么办?"},
31]
32text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
33inputs = tok([text], return_tensors="pt").to(model.device)
34
35with torch.no_grad():
36 out = model.generate(
37 **inputs,
38 max_new_tokens=512,
39 do_sample=True,
40 top_p=0.9,
41 temperature=0.85,
42 pad_token_id=tok.eos_token_id
43 )
44print(tok.decode(out[0, inputs.input_ids.shape[1]:], skip_special_tokens=True))1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4base_id = "Qwen/Qwen3-14B"
5lora_id = "foreverknight12138/qwen3-14b-lora-huchenfeng"
6
7tok = AutoTokenizer.from_pretrained(lora_id, trust_remote_code=True)
8base = AutoModelForCausalLM.from_pretrained(base_id, torch_dtype="auto", device_map="auto", trust_remote_code=True)
9model = PeftModel.from_pretrained(base, lora_id)
10model = model.merge_and_unload()
11model.save_pretrained("./qwen3-14b-huchenfeng-merged", safe_serialization=True)
12tok.save_pretrained("./qwen3-14b-huchenfeng-merged")Fine-tune_Huchenfeng.ipynb 当前版本保持一致(双阶段 SFT):r: 16, lora_alpha: 32, lora_dropout: 0.05, bias: "none"target_modules: ["q_proj","k_proj","v_proj","o_proj","gate_proj","up_proj","down_proj"]task_type: "CAUSAL_LM"num_train_epochs: 2per_device_train_batch_size: 4, gradient_accumulation_steps: 1learning_rate: 1e-4, warmup_ratio: 0.05, weight_decay: 0.01bf16: True, gradient_checkpointing: True, max_grad_norm: 1.0lr_scheduler_type: "cosine", optim: "adamw_torch_fused"max_seq_length: 2048, packing: Falselogging/save/evaluation_strategy: "epoch",load_best_model_at_end: True,report_to: "none"num_train_epochs: 2per_device_train_batch_size: 4, gradient_accumulation_steps: 1learning_rate: 5e-5, warmup_ratio: 0.02, weight_decay: 0.0DataCollatorForCompletionOnlyLM(tokenizer, response_template="<|im_start|>assistant\n")(仅对 assistant 段计算损失)