transformers safetensors mistral text-generation mergekit merge conversational en fr ar base_model:meta-math/MetaMath-Mistral-7B base_model:mlabonne/NeuralHermes-2.5-Mistral-7B license:apache-2.0 autotrain_compatible endpoints_compatible text-generation-inference region:us
---
base_model:
- meta-math/MetaMath-Mistral-7B
- mlabonne/NeuralHermes-2.5-Mistral-7B
tags:
- mergekit
- merge
license: apache-2.0
language:
- en
- fr
- ar
library_name: transformers
---
## Merge Details
### Merge Method

This model was merged using the SLERP merge method.

### SLERP  : 

SLERP, or Spherical Linear Interpolation, serves as a method for seamlessly interpolating between two vectors while maintaining a consistent rate of change and upholding the geometric properties of the spherical space where the vectors exist.

It is favored over traditional linear interpolation, especially in high-dimensional spaces, as linear interpolation can result in a reduction of the interpolated vector's magnitude. In such spaces, the shift in the weights' direction often conveys more meaningful information, such as feature learning and representation, than the magnitude of the change itself. The SLERP implementation involves normalizing the input vectors to unit length, ensuring they signify directions rather than magnitudes. The process calculates the angle between the vectors through their dot product. In cases where the vectors are nearly collinear, it defaults to linear interpolation for efficiency. Otherwise, SLERP computes scale factors based on the interpolation factor (t=0 for 100% of the first vector, t=1 for 100% of the second vector) and the angle between the vectors.

These scale factors are utilized to weigh the original vectors, which are then combined to yield the interpolated vector.

### Models Merged

The following models were included in the merge:
* [meta-math/MetaMath-Mistral-7B](https://huggingface.co/meta-math/MetaMath-Mistral-7B)
* [mlabonne/NeuralHermes-2.5-Mistral-7B](https://huggingface.co/mlabonne/NeuralHermes-2.5-Mistral-7B)

### Configuration

The following YAML configuration was used to produce this model:

```yaml

slices:
  - sources:
      - model: meta-math/MetaMath-Mistral-7B
        layer_range: [0, 32]
      - model: mlabonne/NeuralHermes-2.5-Mistral-7B
        layer_range: [0, 32]
merge_method: slerp
base_model: mlabonne/NeuralHermes-2.5-Mistral-7B
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
# Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("ayoubkirouane/Mistral-Merged7B")
model = AutoModelForCausalLM.from_pretrained("ayoubkirouane/Mistral-Merged7B")

# 4 bit : 

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch

nf4_config = BitsAndBytesConfig(
   load_in_4bit=True,
   bnb_4bit_quant_type="nf4",
   bnb_4bit_use_double_quant=True,
   bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(
    "ayoubkirouane/Mistral-SLERP-Merged7B",
    device_map='auto',
    quantization_config=nf4_config,
    use_cache=False
)
tokenizer = AutoTokenizer.from_pretrained("ayoubkirouane/Mistral-SLERP-Merged7B")

tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"

```