Views
No views yet
| 项目 | 值 |
|---|---|
| 基座模型 | allenai/OLMo-3-7B-Instruct |
| 微调方式 | QLoRA(4-bit NF4 量化) |
| LoRA Rank | r=16, alpha=16 |
| 训练数据 | coffee-sft-dataset (4,768条) |
| Epochs | 1 |
| Batch Size | 1 × 4 grad_accum |
| Learning Rate | 2e-4 → cosine decay |
| 训练步数 | 1,192 steps |
| 训练时间 | ~60 分钟 (RTX 4060 8GB) |
| Loss | 1.33 → 1.03 |
| Token Accuracy | 72.6% → 81.5% |
1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
3from peft import PeftModel
4
5# 加载 4-bit 基座模型
6bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16)
7model = AutoModelForCausalLM.from_pretrained(
8 "allenai/OLMo-3-7B-Instruct",
9 quantization_config=bnb,
10 device_map="auto",
11 torch_dtype=torch.bfloat16,
12)
13tokenizer = AutoTokenizer.from_pretrained("allenai/OLMo-3-7B-Instruct")
14
15# 加载 LoRA adapter
16model = PeftModel.from_pretrained(model, "ynanxiu/olmo3-7b-coffee-lora")
17model.eval()
18
19# 推理
20messages = [{"role": "user", "content": "手冲咖啡需要注意什么?"}]
21text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
22inputs = tokenizer(text, return_tensors="pt").to(model.device)
23outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.6, top_p=0.9)
24print(tokenizer.decode(outputs[0][len(inputs['input_ids'][0]):], skip_special_tokens=True))| 问题 | 结果 |
|---|---|
| 阿拉比卡 vs 罗布斯塔 | ✅ 正确 |
| 咖啡主要产地 | ⚠️ 有地名幻觉 |
| 手冲咖啡关键参数 | ✅ 水温/研磨/粉水比全对 |
| 法压壶使用方法 | ⚠️ 描述偏复杂 |
| 浓缩咖啡因含量 | ✅ 50-60mg 精准 |
| 脱因咖啡制作 | ❌ 答非所问 |
| SOE 咖啡定义 | ❌ 概念混淆 |
| 冷萃 vs 冰滴 | ⚠️ 部分幻觉 |