File size: 4,318 Bytes
6f3da40
 
 
 
 
efacbe2
6f3da40
c45ea05
 
 
 
 
6f3da40
 
 
 
efacbe2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c45ea05
efacbe2
c45ea05
 
efacbe2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c45ea05
efacbe2
 
 
 
 
 
 
4ba97b3
 
efacbe2
 
 
 
 
 
 
 
 
c45ea05
 
 
efacbe2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6f3da40
 
 
efacbe2
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
101
102
103
104
105
106
107
108
109
110
111
---
library_name: transformers
tags: []
---

# Hypothesentrainer: LLM für Feedback auf Schülerhypothesen

Deutschsprachiges LLM, das basierend auf biologischen Forschungsfragen, Schülerhypothesn und Feedback von GPT-4-Turbo mittels Fine-Tuning auf diese spezifische Aufgabe
angepasst wurde.
Das Feedback von GPT-4 wurde mittels eines größeren Prompts so angepasst, dass das Resultat didaktisch möglichst sinnvoll ist. Basis dieses Modells ist das deutschsprachige
Chat-LLM https://huggingface.co/LeoLM/leo-hessianai-7b-chat, dass in einer zweiten Pre-Training-Phase das Llama-2 Modell von Meta an die deutschen Sprache angepasst hat.
Zudem wurde anschließend das Modell in einer größeren Fine-Tuning-Phase auf die Beantwortung von Wissensfragen angepasst. 


## Model Details

- **Model type:** Causal decoder-only transformer language model
- **Finetuned from model [optional]:** https://huggingface.co/LeoLM/leo-hessianai-7b-chat
- **Language(s) (NLP):** German
- **License:** https://huggingface.co/meta-llama/Llama-2-70b/raw/main/LICENSE.txt


## Use in 🤗Transformers

Installationen:
```
pip install transformers torch sentencepiece
```
Für schnellere Inferenz, nicht zwingend notwendig (Empfehlung aus https://huggingface.co/LeoLM/leo-hessianai-7b-chat):
```bash
pip install packaging ninja
pip install flash-attn==v2.1.1 --no-build-isolation
pip install git+https://github.com/HazyResearch/flash-attention.git@v2.1.1#subdirectory=csrc/rotary
```
Modell laden:
```python
from transformers import pipeline
import torch

question = "Wie beeinflusst die Temperatur die Aktivität der Hefe im Pizzateig?"
hypothesis = "Je höher die Temperatur, desto höher die Hefeaktivität im Pizzateig."
prompt = format_prompt_chat(question, hypothesis, with_additional_prompt=True)

generator = pipeline(model="Tobiiax/full-training-7b", device="cuda", torch_dtype=torch.float16, trust_remote_code=True) # True for flash-attn2 else False
print(generator(prompt, do_sample=True, top_p=0.95, max_length=2048))
```
### Beispiel:

**TODO**

## Prompting

Template wie in https://huggingface.co/LeoLM/leo-hessianai-7b-chat:
```
"""
<|im_start|>system
{system_message}<|im_end|>
<|im_start|>user
{prompt}<|im_end|>
<|im_start|>assistant
"""
```

Beispielfunktion für das Prompt Format:

```python
def format_prompt_chat(question, hypothesis, with_additional_prompt=True):
    if with_additional_prompt:
        instructions = open_file("prompt/assistantInstructions.txt").strip()
        system_prompt = f"<|im_start|>system\n{inst}"
    else:
        system_prompt = "<|im_start|>system\nNachfolgend findest du eine biologische Forschungsfrage und eine entwickelte Schülerhypothese. Gebe dem Schüler auf seine Hypothese ein angemessenes Feedback, das didaktisch möglichst wertvoll formuliert ist."
    system_prompt += "<|im_end|>"

    student= f"## Forschungsfrage: {question}\n## Hypothese: {hypothesis}"
    
    prompt = f"{system_prompt}\n<|im_start|>user\n{student}<|im_end|>\n<|im_start|>assistant\n"
    
    return prompt
```

## Finetuning Details

- Für das Training wurde ein Datensatz mit 1093 Zeilen verwendet.
- Es wurde auf einem TPU v3-32 Pod-Slice trainiert (https://cloud.google.com/tpu/docs/v3?hl=de). 
- Das Modell und die Daten wurden auf 4-TPU-v3-8-Knoten, also auf insgesamt 32 TensorCores bzw. Devices verteilt.
- Die Dauer des Training betrug 16 Minuten und 36 Sekunden.

| Hyperparameter  | Value  |
|---|---|
| Num epochs | 2 |
| Examples per epoch  | 1093 // 8 // 32 = 4|
| batch size | 8*32 = 256 |
| Learning rate  |  3e-5 |
| LR scheduler  |  Cosine |
| Optimizer  |  AdamW |
| Adam betas  | (0.9, 0.95)  |


## Datensatz Details

Beispiel:
```
Forschungsfrage: Welchen Einfluss hat die Temperatur auf die Aktivität der Hefe im Pizzateig?
Hypothese: Durch die Wärme verdampft das Wasser im Teig und steigt und steigt nach oben.
Feedback: Eure Hypothese stellt keinen direkten Zusammenhang zwischen der Temperatur und der Aktivität der Hefe her. Es beschreibt eher einen allgemeinen Prozess bei Erwärmung. Versucht, den Fokus auf die spezifische Frage zu legen, wie die Temperatur die Aktivität der Hefe beeinflusst. Überlegt, wie die Temperaturänderung die Hefe zum Wachsen, sich zu vermehren oder ihre Aktivität zu ändern veranlassen könnte.
```

## Evaluation

**TODO**