File size: 3,129 Bytes
cf23ec4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
---
base_model: mistralai/Mixtral-8x7B-Instruct-v0.1
library_name: peft
license: other
tags:
  - lora
  - peft
  - adapter
  - adaption
---

# adaption_diverse_ai_task_samples

## Model Training

A LORA adapter for `mistralai/Mixtral-8x7B-Instruct-v0.1`. This model was trained with SFT using [Adaption](https://adaptionlabs.ai)'s AutoScientist on the diverse_ai_task_samples dataset.


![Training metrics](training-metrics.png)

### AutoScientist Config

```json
{
  "job_id": "34447162-a1f5-49ba-ab92-d9ad159c85a0",
  "training_experiment_id": "77bacf88-1a66-492e-9e7d-2e5d1cb4fab5",
  "original_model_name": "mistralai/Mixtral-8x7B-Instruct-v0.1",
  "trained_model_name": "adaption_diverse_ai_task_samples",
  "training_method": "sft",
  "training_type": "lora",
  "data_format": "chat",
  "hyperparams": {
    "lora": "true",
    "lora_r": 16,
    "n_evals": 5,
    "n_epochs": 4,
    "batch_size": "max",
    "lora_alpha": 32,
    "lora_dropout": 0.1,
    "min_lr_ratio": 0.1,
    "warmup_ratio": 0.05,
    "weight_decay": 0.01,
    "learning_rate": 0.00004,
    "max_grad_norm": 1,
    "base_model_size": "46.7B",
    "train_on_inputs": "false",
    "training_method": "sft",
    "lr_scheduler_type": "cosine",
    "scheduler_num_cycles": 0.5,
    "lora_trainable_modules": "all-linear"
  }
}
```

## Training Data

The model was trained on 795 rows of adapted data with the following domain distribution: entertainment (12%), language (11%), academic-education (9%), news (8%), history (8%), science (8%), writing-editing-communication (7%), math (6%), sports (6%), other (4%), data-analysis-visualization (3%), social (2%), geography (2%), games (2%), how-to (2%), medical (2%), religion (2%), governance (2%), personal-growth (2%), art (1%), code (1%), cooking (1%), culture (1%), animal-nature (1%), product-advice (1%), logic (1%), music (1%), dating (1%), roleplay (1%), technology (1%).

## Model Evaluation

The model was evaluated on an in-distribution held-out test set as well as a broader domain-specific test set to measure generalization.


![Win rates](win-rates.png)


## How to use

```bash
pip install torch transformers peft
```

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

BASE = "mistralai/Mixtral-8x7B-Instruct-v0.1"
ADAPTER = "<this-repo-id>"

device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.float32 if device == "cpu" else torch.bfloat16

base = AutoModelForCausalLM.from_pretrained(BASE, dtype=dtype).to(device)
model = PeftModel.from_pretrained(base, ADAPTER)
# Optional: merge the LoRA weights into the base for faster inference
model = model.merge_and_unload()
model.eval()

tokenizer = AutoTokenizer.from_pretrained(BASE)
messages = [{"role": "user", "content": "Hello!"}]
text = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(device)

with torch.inference_mode():
    out = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
```