|
--- |
|
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** |