File size: 3,985 Bytes
f9e9452
 
 
 
 
 
 
 
 
 
2878995
 
 
 
f9e9452
 
 
 
 
 
 
 
3f5c322
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f9e9452
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3f5c322
 
 
 
 
 
 
 
 
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
---
base_model:
- yuvraj17/Llama-3-8B-spectrum-25
- mlabonne/Meta-Llama-3.1-8B-Instruct-abliterated
tags:
- merge
- mergekit
- lazymergekit
- yuvraj17/Llama-3-8B-spectrum-25
- mlabonne/Meta-Llama-3.1-8B-Instruct-abliterated
license: apache-2.0
language:
- en
pipeline_tag: text-generation
---

# Llama3-8B-abliterated-Spectrum-slerp

Llama3-8B-abliterated-Spectrum-slerp is a merge of the following models using [LazyMergekit](https://colab.research.google.com/drive/1obulZ1ROXHjYLn6PPZJwRR6GzgQogxxb?usp=sharing):
* [yuvraj17/Llama-3-8B-spectrum-25](https://huggingface.co/yuvraj17/Llama-3-8B-spectrum-25)
* [mlabonne/Meta-Llama-3.1-8B-Instruct-abliterated](https://huggingface.co/mlabonne/Meta-Llama-3.1-8B-Instruct-abliterated)

## Introduction for Model Merging

**Model Merging**, also known as model fusion, is an effective technique that merges the parameters of multiple separate models with different capabilities to build a universal model without needing access to the
original training data or expensive computation.
There are bunch of methods, we can use to merge the capabilities of different models (supported by [mergekit](https://github.com/arcee-ai/mergekit)) including:

<figure>

  <img src="https://cdn-uploads.huggingface.co/production/uploads/66137d95e8d2cda230ddcea6/HUflk1elPEom3Pe_vU_Ku.png" width="768" height="768">
  <figcaption> Merge Methods supported by MergeKit <a href="//github.com/arcee-ai/mergekit?tab=readme-ov-file#merge-methods">Reference</a> </figcaption>

</figure>

For more deep-diving into different merging techniques, visit [Merge Large Language Models with mergekit](https://towardsdatascience.com/merge-large-language-models-with-mergekit-2118fb392b54). 

### Introduction for SLERP Merging

**Spherical Linear Interpolation (SLERP)** is a method used to smoothly interpolate between two vectors. It maintains a constant rate of change and preserves the geometric properties of the spherical space in which the vectors reside. 

SLERP is currently the *most-popular merging method*, preffered over traditional methods because instead of dealing with straight-lines, the interpolation occurs on the surface of a sphere, and it has achieved improved performance to very diverse task.
> But SLERP is limited to combining only **two models at a time**, although its possible to hierarchically combine multiple models, as shown in [Mistral-7B-Merge-14-v0.1](https://huggingface.co/EmbeddedLLM/Mistral-7B-Merge-14-v0.1).


## 🧩 Configuration

```yaml
slices:
  - sources:
      - model: yuvraj17/Llama-3-8B-spectrum-25
        layer_range: [0, 32]
      - model: mlabonne/Meta-Llama-3.1-8B-Instruct-abliterated
        layer_range: [0, 32]
merge_method: slerp
base_model: yuvraj17/Llama-3-8B-spectrum-25
parameters:
  t:
    - filter: self_attn
      value: [0, 0.5, 0.3, 0.7, 1]
    - filter: mlp
      value: [1, 0.5, 0.7, 0.3, 0]
    - value: 0.5
dtype: bfloat16

```

## 💻 Usage

```python
!pip install -qU transformers accelerate

from transformers import AutoTokenizer
import transformers
import torch

model = "yuvraj17/Llama3-8B-abliterated-Spectrum-slerp"
messages = [{"role": "user", "content": "What is a large language model?"}]

tokenizer = AutoTokenizer.from_pretrained(model)
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
pipeline = transformers.pipeline(
    "text-generation",
    model=model,
    torch_dtype=torch.float16,
    device_map="auto",
)

outputs = pipeline(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95)
print(outputs[0]["generated_text"])
```


## 🏆 Evaluation Results
Coming soon

## Special thanks & Reference
- Maxime Labonne for their easy-to-use colab-notebook [Merging LLMs with MergeKit](https://github.com/mlabonne/llm-course/blob/main/Mergekit.ipynb) and [Blog](https://towardsdatascience.com/merge-large-language-models-with-mergekit-2118fb392b54)
- Authors of [Mergekit](https://github.com/arcee-ai/mergekit)