
<center><img src="https://i.imgur.com/gUlEJuU.jpeg"></center>

# NeuralHermes 2.5 - Mistral 7B - LASER

This is an experimental LASER version of NeuralHermes using [laserRMT](https://github.com/cognitivecomputations/laserRMT), based on [this paper](https://arxiv.org/pdf/2312.13558.pdf).

|                                                Model                                                 |AGIEval|GPT4All|TruthfulQA|Bigbench|Average|
|------------------------------------------------------------------------------------------------------|------:|------:|---------:|-------:|------:|
|[NeuralHermes-2.5-Mistral-7B-laser](https://huggingface.co/mlabonne/NeuralHermes-2.5-Mistral-7B-laser)|  43.54|  73.44|     55.26|   42.24|  53.62|
|[NeuralHermes-2.5-Mistral-7B](https://huggingface.co/mlabonne/NeuralHermes-2.5-Mistral-7B)            |  43.67|  73.24|     55.37|   41.76|  53.51|

Fernando Fernandes Neto and Eric Hartford. "Optimizing Large Language Models Using Layer-Selective Rank Reduction and Random Matrix Theory." 2024.

NeuralHermes is an [teknium/OpenHermes-2.5-Mistral-7B](https://huggingface.co/teknium/OpenHermes-2.5-Mistral-7B) model that has been further fine-tuned with Direct Preference Optimization (DPO) using the [mlabonne/chatml_dpo_pairs](https://huggingface.co/datasets/mlabonne/chatml_dpo_pairs) dataset. It surpasses the original model on several benchmarks (see results).

It is directly inspired by the RLHF process described by [Intel/neural-chat-7b-v3-1](https://huggingface.co/Intel/neural-chat-7b-v3-1)'s authors to improve performance. I used the same dataset and reformatted it to apply the ChatML template.

The code to train this model is available on [Google Colab](https://colab.research.google.com/drive/15iFBr1xWgztXvhrj5I9fBv20c7CFOPBE?usp=sharing) and [GitHub](https://github.com/mlabonne/llm-course/tree/main). It required an A100 GPU for about an hour.

## Results

### AGIEval
|             Task             |Version| Metric |Value|   |Stderr|
|------------------------------|------:|--------|----:|---|-----:|
|agieval_aqua_rat              |      0|acc     |21.26|±  |  2.57|
|                              |       |acc_norm|22.83|±  |  2.64|
|agieval_logiqa_en             |      0|acc     |39.32|±  |  1.92|
|                              |       |acc_norm|40.71|±  |  1.93|
|agieval_lsat_ar               |      0|acc     |25.65|±  |  2.89|
|                              |       |acc_norm|25.65|±  |  2.89|
|agieval_lsat_lr               |      0|acc     |48.82|±  |  2.22|
|                              |       |acc_norm|50.00|±  |  2.22|
|agieval_lsat_rc               |      0|acc     |58.36|±  |  3.01|
|                              |       |acc_norm|57.25|±  |  3.02|
|agieval_sat_en                |      0|acc     |74.27|±  |  3.05|
|                              |       |acc_norm|73.30|±  |  3.09|
|agieval_sat_en_without_passage|      0|acc     |43.69|±  |  3.46|
|                              |       |acc_norm|42.23|±  |  3.45|
|agieval_sat_math              |      0|acc     |37.27|±  |  3.27|
|                              |       |acc_norm|36.36|±  |  3.25|

Average: 43.54%

### GPT4All
|    Task     |Version| Metric |Value|   |Stderr|
|-------------|------:|--------|----:|---|-----:|
|arc_challenge|      0|acc     |57.76|±  |  1.44|
|             |       |acc_norm|60.32|±  |  1.43|
|arc_easy     |      0|acc     |83.84|±  |  0.76|
|             |       |acc_norm|81.10|±  |  0.80|
|boolq        |      1|acc     |86.70|±  |  0.59|
|hellaswag    |      0|acc     |63.15|±  |  0.48|
|             |       |acc_norm|82.55|±  |  0.38|
|openbookqa   |      0|acc     |34.40|±  |  2.13|
|             |       |acc_norm|45.20|±  |  2.23|
|piqa         |      0|acc     |81.94|±  |  0.90|
|             |       |acc_norm|82.97|±  |  0.88|
|winogrande   |      0|acc     |75.22|±  |  1.21|

Average: 73.44%

### TruthfulQA
|    Task     |Version|Metric|Value|   |Stderr|
|-------------|------:|------|----:|---|-----:|
|truthfulqa_mc|      1|mc1   |37.70|±  |  1.70|
|             |       |mc2   |55.26|±  |  1.52|

Average: 55.26%

### Bigbench
|                      Task                      |Version|       Metric        |Value|   |Stderr|
|------------------------------------------------|------:|---------------------|----:|---|-----:|
|bigbench_causal_judgement                       |      0|multiple_choice_grade|53.16|±  |  3.63|
|bigbench_date_understanding                     |      0|multiple_choice_grade|65.31|±  |  2.48|
|bigbench_disambiguation_qa                      |      0|multiple_choice_grade|34.11|±  |  2.96|
|bigbench_geometric_shapes                       |      0|multiple_choice_grade|27.02|±  |  2.35|
|                                                |       |exact_str_match      | 0.28|±  |  0.28|
|bigbench_logical_deduction_five_objects         |      0|multiple_choice_grade|27.80|±  |  2.01|
|bigbench_logical_deduction_seven_objects        |      0|multiple_choice_grade|19.86|±  |  1.51|
|bigbench_logical_deduction_three_objects        |      0|multiple_choice_grade|48.33|±  |  2.89|
|bigbench_movie_recommendation                   |      0|multiple_choice_grade|41.40|±  |  2.20|
|bigbench_navigate                               |      0|multiple_choice_grade|50.00|±  |  1.58|
|bigbench_reasoning_about_colored_objects        |      0|multiple_choice_grade|65.00|±  |  1.07|
|bigbench_ruin_names                             |      0|multiple_choice_grade|46.21|±  |  2.36|
|bigbench_salient_translation_error_detection    |      0|multiple_choice_grade|27.25|±  |  1.41|
|bigbench_snarks                                 |      0|multiple_choice_grade|70.72|±  |  3.39|
|bigbench_sports_understanding                   |      0|multiple_choice_grade|65.72|±  |  1.51|
|bigbench_temporal_sequences                     |      0|multiple_choice_grade|30.40|±  |  1.46|
|bigbench_tracking_shuffled_objects_five_objects |      0|multiple_choice_grade|22.56|±  |  1.18|
|bigbench_tracking_shuffled_objects_seven_objects|      0|multiple_choice_grade|17.09|±  |  0.90|
|bigbench_tracking_shuffled_objects_three_objects|      0|multiple_choice_grade|48.33|±  |  2.89|

Average: 42.24%

Average score: 53.62%

## Usage

You can run this model using [LM Studio](https://lmstudio.ai/) or any other frontend.

You can also run this model using the following code:

```python
import transformers
from transformers import AutoTokenizer

# Format prompt
message = [
    {"role": "system", "content": "You are a helpful assistant chatbot."},
    {"role": "user", "content": "What is a Large Language Model?"}
]
tokenizer = AutoTokenizer.from_pretrained(new_model)
prompt = tokenizer.apply_chat_template(message, add_generation_prompt=True, tokenize=False)

# Create pipeline
pipeline = transformers.pipeline(
    "text-generation",
    model="mlabonne/NeuralHermes-2.5-Mistral-7B-laser",
    tokenizer=tokenizer
)

# Generate text
sequences = pipeline(
    prompt,
    do_sample=True,
    temperature=0.7,
    top_p=0.9,
    num_return_sequences=1,
    max_length=200,
)
print(sequences[0]['generated_text'])
```
{"language": ["en"], "license": "apache-2.0", "tags": ["mistral", "instruct", "finetune", "chatml", "gpt4", "synthetic data", "distillation", "dpo", "rlhf", "laser"], "datasets": ["mlabonne/chatml_dpo_pairs"], "base_model": "teknium/OpenHermes-2.5-Mistral-7B"}
transformers safetensors mistral text-generation instruct finetune chatml gpt4 synthetic data distillation dpo rlhf laser conversational en dataset:mlabonne/chatml_dpo_pairs arxiv:2312.13558 base_model:teknium/OpenHermes-2.5-Mistral-7B license:apache-2.0 autotrain_compatible endpoints_compatible text-generation-inference region:us