File size: 2,436 Bytes
3d625ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
---
library_name: peft
base_model: Qwen/Qwen2.5-32B-Instruct
license: mit
---

# qwen-2.5-32b-philosophy-spec-aft-no-cot-5k

A LoRA adapter for [Qwen/Qwen2.5-32B-Instruct](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct), trained using alignment fine-tuning (AFT) only, without chain-of-thought. Trained on 5k AFT examples.

- **Base model:** Qwen/Qwen2.5-32B-Instruct
- **LoRA rank:** 64
- **LoRA alpha:** 128
- **Target modules:** q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
- **AFT dataset size:** 5k

## Usage

### Load as LoRA adapter

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2.5-32B-Instruct",
    torch_dtype="auto",
    device_map="auto",
)
model = PeftModel.from_pretrained(base_model, "chloeli/qwen-2.5-32b-philosophy-spec-aft-no-cot-5k")
tokenizer = AutoTokenizer.from_pretrained("chloeli/qwen-2.5-32b-philosophy-spec-aft-no-cot-5k")

messages = [{"role": "user", "content": "What matters most when making a difficult decision?"}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```

### Merge into base model

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2.5-32B-Instruct",
    torch_dtype="auto",
    device_map="cpu",
)
model = PeftModel.from_pretrained(base_model, "chloeli/qwen-2.5-32b-philosophy-spec-aft-no-cot-5k")
merged_model = model.merge_and_unload()

merged_model.save_pretrained("qwen-2.5-32b-philosophy-spec-aft-no-cot-5k-merged")
tokenizer = AutoTokenizer.from_pretrained("chloeli/qwen-2.5-32b-philosophy-spec-aft-no-cot-5k")
tokenizer.save_pretrained("qwen-2.5-32b-philosophy-spec-aft-no-cot-5k-merged")
```

### Serve with vLLM

```python
from vllm import LLM, SamplingParams
from vllm.lora.request import LoRARequest

llm = LLM(
    model="Qwen/Qwen2.5-32B-Instruct",
    enable_lora=True,
    max_lora_rank=128,
)

lora_request = LoRARequest("philosophy", 1, "chloeli/qwen-2.5-32b-philosophy-spec-aft-no-cot-5k")
output = llm.generate("What matters most?", SamplingParams(max_tokens=512), lora_request=lora_request)
```