safetensors llama German RAG Retrieval Question-Answering Summarization Reasoning question-answering en de dataset:avemio/German-RAG-CPT-HESSIAN-AI dataset:avemio/German-RAG-SFT-ShareGPT-HESSIAN-AI dataset:avemio/German-RAG-ORPO-ShareGPT-HESSIAN-AI dataset:VAGOsolutions/SauerkrautLM-Fermented-GER-DPO dataset:VAGOsolutions/SauerkrautLM-Fermented-Irrelevance-GER-DPO arxiv:2406.20094 base_model:avemio/German-RAG-LLAMA-3.1-8B-SFT-HESSIAN-AI base_model:finetune:avemio/German-RAG-LLAMA-3.1-8B-SFT-HESSIAN-AI license:llama3.1 region:us
---
base_model:
- avemio/German-RAG-LLAMA-3.1-8B-SFT-HESSIAN-AI
datasets:
- avemio/German-RAG-CPT-HESSIAN-AI
- avemio/German-RAG-SFT-ShareGPT-HESSIAN-AI
- avemio/German-RAG-ORPO-ShareGPT-HESSIAN-AI
- VAGOsolutions/SauerkrautLM-Fermented-GER-DPO
- VAGOsolutions/SauerkrautLM-Fermented-Irrelevance-GER-DPO
language:
- en
- de
license: llama3.1
pipeline_tag: question-answering
tags:
- German
- RAG
- Retrieval
- Question-Answering
- Summarization
- Reasoning
---

# German-RAG-LLAMA-3.1-8B-ORPO-HESSIAN-AI

<!-- Provide a quick summary of what the model is/does. -->

**German-RAG** (**G**erman **R**etrieval **A**ugmented **G**eneration) models are designed for the German-speaking market, enabling innovation and AI solutions to drive German research collaboration in business-focused Generative AI by 2025

Our German-RAG-LLAMA-ORPO model are trained on this **[German-RAG-ORPO](https://huggingface.co/datasets/avemio/German-RAG-ORPO-ShareGPT-HESSIAN-AI) dataset.**

## Model Details

The core models released in this batch are the following: 
| Size | Training Tokens | 
|------|--------|
| [German-RAG-LLAMA-CPT](https://huggingface.co/avemio/German-RAG-LLAMA-3.1-8B-CPT-HESSIAN-AI)   | 507.47 million |
| [German-RAG-LLAMA-SFT](https://huggingface.co/avemio/German-RAG-LLAMA-3.1-8B-SFT-HESSIAN-AI) |  2.03 billion  |  
| [German-RAG-LLAMA-ORPO](https://huggingface.co/avemio/German-RAG-LLAMA-3.1-8B-ORPO-HESSIAN-AI) |  2.0577 billion  | 
### Model Description

<!-- Provide a longer summary of what this model is. -->

- **Developed by:** Avemio AI Team
- **Supported by:** Hessian AI
- **Model type:** a Transformer style autoregressive language model.
- **Language(s) (NLP):** German, English
- **License:** The code and model are released under Apache 2.0.
- **Contact:** [German-RAG@avemio.digital](mailto:German-RAG@avemio.digital)


### Model Sources

<!-- Provide the basic links for the model. -->

- **Training Study:** [Training Study](https://avemio.digital/wp-content/uploads/2025/01/German-RAG-TRAINING-STUDY-Advancing-German-Language-AI-with-hessian-AI.pdf)
- **Repositories:** 
    - Training: [Colab-Notebook](https://colab.research.google.com/drive/18SH_aYLCnw1K7cRGOTTZ80y98V5Kquxb?usp=sharing)
    - Evaluation code: 
        - [German-RAG-LLM-HARD-BENCHMARK](https://github.com/avemio-digital/German-RAG-LLM-HARD-BENCHMARK.git)
        - [German-RAG-LLM-EASY-BENCHMARK](https://github.com/avemio-digital/German-RAG-LLM-EASY-BENCHMARK.git)
-  **Technical blog post:**
<!-- - **Press release:** TODO -->

## Uses

<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->

### Inference
Quickly get inference running with the following required installation:
Now, proceed as usual with HuggingFace:
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
 
model_name = "avemio/German-RAG-LLAMA-3.1-8B-SFT-HESSIAN-AI"
 
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
im_end_token_id = tokenizer.convert_tokens_to_ids('<|im_end|>')
im_start_token_id = tokenizer.convert_tokens_to_ids('<|im_start|>')
 
messages = [
    {"role": "system", "content": "Folge den Anweisungen des Benutzers. Bevor du deine finale Antwort gibst, schildere deine Überlegungen zur Lösung des Problems."},
    {"role": "user", "content": "Ferdinand steht vor der Herausforderung, eine faire Besuchsregelung für seine drei Kinder zu finden, die den Bedürfnissen jedes einzelnen Kindes gerecht wird. Jedes Kind hat unterschiedliche Vorlieben und Bedürfnisse, die in den Besuchsplan integriert werden müssen. Er muss sicherstellen, dass die Regelung sowohl den Interessen der Kinder als auch den rechtlichen Vorgaben entspricht. Ferdinand hat eine Woche Zeit, um einen Vorschlag zu erarbeiten, den er mit seinem Anwalt besprechen kann."}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=False
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
 
generated_ids = model.generate(
    **model_inputs,
    max_length=2024,
    temperature=0.01,
    do_sample=False,
    #bos_token_id=im_start_token_id,
    eos_token_id=im_end_token_id,
    pad_token_id=tokenizer.eos_token_id,
    repetition_penalty=1.1,
    num_return_sequences=1,
    top_k=40,
    top_p=0.95,
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
 
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
 
```

### [](https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct#processing-long-texts)

### Fine-tuning
We are providing a comprehensive Google Colab notebook to guide users through the process of fine-tuning our model, complete with detailed instructions, essential dependencies, and configurable settings.
 [Colab-Notebook](https://colab.research.google.com/drive/18SH_aYLCnw1K7cRGOTTZ80y98V5Kquxb?usp=sharing).

## German-RAG-LLM-EASY-BENCHMARK EVAL

<!-- This section describes the evaluation protocols and provides the results. -->
The evaluation was performed using seven subsets, focusing on extraction recall, question answering (QA) with multiple references, and time difference reasoning. Relevant context and summarization were treated as distinct subsets, each playing a crucial role in the evaluation process. For relevant context, the model's ability to identify and extract pertinent information from the source material was assessed. In contrast, the summarization subset evaluated the model's capability to generate concise and accurate summaries based on the relevant context.

Four evaluation metrics were employed across all subsets: language quality, overall correctness, instruction following, and an overall score.

-   **Language quality:** This metric focused on the overall linguistic quality of the outputs, considering factors such as grammar, fluency, and clarity.
-   **Overall correctness:** The accuracy and correctness of the content were evaluated under this metric.
-   **Instruction following:** This metric assessed the model's ability to follow specific instructions provided for each task.
-   **Overall score:** This metric combined the results from the previous three metrics, offering a comprehensive evaluation of the model's capabilities across all subsets.


| Metric                                    | [Vanila-llama-3.1-8B-Instruct](https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct) | [German-RAG-LLAMA-SFT](https://huggingface.co/avemio/German-RAG-LLAMA-3.1-8B-SFT-HESSIAN-AI) | **[German-RAG-LLAMA-ORPO](https://huggingface.co/avemio/German-RAG-LLAMA-3.1-8B-ORPO-HESSIAN-AI)**  | [German-RAG-LLAMA-MERGED]| GPT-3.5-TURBO | 
|------------------------------------------|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|-----------------------------|----------------|
| Average Language Quality             |87.78                                                                           |88.93                                                                           | **88.93**                                                                                           |86.93                             |87.58                |
| **OVERALL SCORES (weighted):**       |                                                                            |                                                                            |                                                                                           |                             |               |
| extraction_recall       | 66.1                                                                           | 73.2                                                                           | **66.3**                                                                                           |61.8                             |66.9                |
| qa_multiple_references | 74.7                                                                           | 91.5                                                                           | **90.9**                                                                                           |84.8                             |90.3                |
| qa_without_time_difference | 83.5                                                                           | 90.7                                                                           | **91.4**                                                                                           |88.0                             |89.9                |
| qa_with_time_difference | 86.7                                                                           | 91.4                                                                           | **91.8**                                                                                           |89.1                             |90.6                |
| relevant_context       | 87.9                                                                           | 90.3                                                                           | **89.6**                                                                                           |84.4                             |88.5                |
| summarizations         | 88.6                                                                           | 90.7                                                                           | **82.7**                                                                                           |84.9                             |87.7                |

## German-RAG-LLM-HARD-BENCHMARK EVAL

<img src="https://avemio.digital/wp-content/uploads/2025/01/German-RAG-LLAMA-ORPO.png" alt="German-RAG Logo" width="700" style="margin-left:'auto' margin-right:'auto' display:'block'"/>

| Metric                  | [Vanila-llama-3.1-8B-Instruct](https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct) | [**[German-RAG-LLAMA-ORPO](https://huggingface.co/avemio/German-RAG-LLAMA-3.1-8B-ORPO-HESSIAN-AI)** | GPT-3.5-TURBO | GPT-4o | GPT-4o-mini |
|-------------------------|-----------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|----------------|---------|-------------|
| **OVERALL SCORES (weighted):** |                                                                                 |                                                                                       |                |         |             |
| hard_reasoning_de       | 39.1                                                                                    | **42.5**                                                                                  | 37.9           | 62.9    | 58.4        |
| hard_reasoning_en       | 54.9                                                                                    | **55.6**                                                                                  | 48.3           | 61.7    | 62.9        |
 
## Model Details

### Data
For training data details, please see the [German-RAG-ORPO-Dataset](https://huggingface.co/datasets/avemio/German-RAG-ORPO-ShareGPT-HESSIAN-AI) documentation.

The ORPO Tasks Dataset represents a specialized collection for fine-tuning language models with a focus on RAG-specific capabilities. 

The subsets can be for this training step are derived from 3 different sources:
- **SauerkrautLM Preference Datasets**:
  - [SauerkrautLM-Fermented-GER-DPO](https://huggingface.co/datasets/VAGOsolutions/SauerkrautLM-Fermented-GER-DPO):  is a specialized dataset designed for training language models in function calling irrelevance detection using Preference Optimization. The dataset consists of 2,000 carefully evaluated instruction-response pairs, specifically curated to help models recognize situations where function calls are unnecessary and direct responses are more appropriate.
  - [SauerkrautLM-Fermented-Irrelevance-GER-DPO](https://huggingface.co/datasets/VAGOsolutions/SauerkrautLM-Fermented-Irrelevance-GER-DPO): is a high-quality German instruction-response dataset specifically designed for Preference Optimization training. The dataset consists of 3,305 instruction-response pairs. Rather than being merged from existing German datasets, it was carefully created through a sophisticated augmentation process, transforming curated English instructions and responses into culturally adapted German content. Each pair includes comprehensive quality metrics and rejected responses for Preference training.
- **Hard Reasoning DE & EN**: Synthetic generation inspired by Tencent's ([“Scaling Synthetic Data Creation with 1,000,000,000 Personas”](https://arxiv.org/abs/2406.20094)).
- **Multi-Turn-QA**: Developed by Avemio AG, this dataset builds upon and enhances the German Wikipedia dump provided by Cohere ([wikipedia-22-12-de-embeddings](https://huggingface.co/datasets/Cohere/wikipedia-22-12-de-embeddings)), expanding it with synthetic examples and structured tasks to create a robust training resource.

### Data Subsets

| Subset | Examples per Task |
|-------|------------------|
| SauerkrautLM-Fermented-GER-DPO | 3.31k |
| SauerkrautLM-Fermented-Irrelevance-GER-DPO | 2k |
| hard-reasoning-de | 3.19k |
| hard-reasoning-en | 1.97k |
| multi-turn-qa | 3.2k |


### Source Data: SauerkrautLM
[SauerkrautLM-Fermented-GER-DPO](https://huggingface.co/datasets/VAGOsolutions/SauerkrautLM-Fermented-GER-DPO)

[SauerkrautLM-Fermented-Irrelevance-GER-DPO](https://huggingface.co/datasets/VAGOsolutions/SauerkrautLM-Fermented-Irrelevance-GER-DPO)

### Source Data: Hard-Reasoning DE & EN
- Base: ([proj-Persona/PersonaHub](https://huggingface.co/datasets/proj-persona/PersonaHub))
- Enhancement: Synthetic data generation by Avemio AG
- Quality: Automatic validation and curation of examples by Open Source LLM's

### Methodology: Reasoning-DE & Reasoning-EN
- Providing Persona Descriptions and rewriting in a similar style with a different focus area and name in german/english language
- Generating Simple Logical Problems out of Persona-specific Views & Language.
- Generating Approaches, Thinking-Steps & Solutions separately verified by Llama-3.1-405B-Instruct
- Quality assurance and validation

### Source Data: Multi-Turn-QA
- Base: ([cohere/wikipedia-22-12-de-embeddings](https://huggingface.co/datasets/Cohere/wikipedia-22-12-de-embeddings))
- Enhancement: Synthetic data generation by Avemio AG
- Quality: Automatic validation and curation of examples by Open Source LLM's

### Methodology: Multi-Turn-QA
1. Extraction of base content from German Wikipedia
2. Enhancement through synthetic example generation
3. Structure addition for specific task types
4. Quality assurance and validation

### Architecture


| Parameter            | German-RAG-LLAMA-ORPO                                                                                   |
|-----------------------|-----------------------------------------------------------------------------------------------|
| **d_model**          | 3072                                                                                          |
| **num heads**        | 32                                                                                            |
| **num layers**       | 32                                                                                            |
| **MLP ratio**        | 3.5                                                                                          |
| **LayerNorm type**   | RMSNorm                                                                                       |
| **pos embeddings**   | RoPE                                                                                          |
| **attention variant**| Standard Multi-Head Self Attention                              |
| **biases**           | none                                                                                          |
| **block type**       | sequential                                                                                    |
| **activation**       | SiLU                                                                                          |
| **sequence length**  | 131072                                                                                        |
| **weight typing**     | bfloat16  

### Hyperparameters 


| Parameter                 | German-RAG-LLAMA-ORPO       |
|---------------------------|--------------------|
| **warmup steps**          | 50                |
| **peak LR**               | 5.0E-07           |
| **weight decay**          | 0.1               |
| **LR schedule**           | linear            |
| **gradient reduce dtype** | FP32              |
| **optimizer state dtype** | FP32              |

## Environmental Impact

German-RAG-LLAMA-ORPO, running on NVIDIA A100 with 80 GPUs for 4 days, has an approximate power consumption as follows:

It's important to note that the actual power consumption may vary depending on the specific workload and operational conditions. For accurate power consumption measurements, using dedicated power monitoring tools is recommended.

| Model          | GPU Type            | Power Consumption From GPUs | 
|----------------|---------------------|-----------------------------|
| German-RAG-LLAMA-ORPO   | A100 ([Hessian AI supercomputer](https://hessian.ai/de/)) | 0.01843 MWh                    |

## Bias, Risks, and Limitations

Like any base language model or fine-tuned model without safety filtering, it is relatively easy for a user to prompt these models to generate harmful and generally sensitive content.
Such content can also be produced unintentionally, especially in the case of bias, so we recommend users consider the risks of applications of this technology.

Otherwise, many facts from German-RAG-LLAMA-ORPO or any LLM will often not be true, so they should be checked.



## The German-RAG AI Team
[Marcel Rosiak](https://de.linkedin.com/in/marcel-rosiak)
[Soumya Paul](https://de.linkedin.com/in/soumya-paul-1636a68a)
[Siavash Mollaebrahim](https://de.linkedin.com/in/siavash-mollaebrahim-4084b5153?trk=people-guest_people_search-card)
[Zain ul Haq](https://de.linkedin.com/in/zain-ul-haq-31ba35196)
