Spaces:
Runtime error
Runtime error
File size: 3,010 Bytes
9bd216f 4fde4b7 f90e5fd 9bd216f 4fde4b7 f90e5fd 4fde4b7 f90e5fd 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 f90e5fd 4fde4b7 9bd216f 4fde4b7 9bd216f 4fde4b7 |
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 |
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
import torch
from unsloth import FastLanguageModel
# Modell und Tokenizer laden
model_name = "Mario12355/llama_3.1_20.11_fini_dpo"
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = model_name,
max_seq_length = 2048,
dtype = None,
load_in_4bit = True,
)
# Dein Alpaca-Prompt Template
alpaca_prompt = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
### Instruction:
{}
### Input:
{}
### Response:
{}"""
def translate(
message,
history,
direction,
max_tokens=128
):
# Richtung bestimmen und Anweisung formatieren
if direction == "hochdeutsch_to_schwaebisch":
instruction = "Übersetze den hochdeutschen Text ins Schwäbische. Achte auf eine sinnvolle und korrekte Satzbildung!"
elif direction == "schwaebisch_to_hochdeutsch":
instruction = "Übersetze den schwäbischen Text ins Hochdeutsche. Achte auf eine sinnvolle und korrekte Satzbildung!"
else:
raise ValueError("Ungültige Übersetzungsrichtung")
# Input für das Modell vorbereiten
inputs = tokenizer(
[alpaca_prompt.format(instruction, message, "")],
return_tensors="pt"
).to(model.device)
# Streaming-Generator erstellen
response = ""
streamer = TextStreamer(tokenizer)
# Generator-Konfiguration
generation_config = {
"max_new_tokens": max_tokens,
"do_sample": True,
"temperature": 0.7,
"top_p": 0.95,
"streamer": streamer,
**inputs
}
# Text generieren und streamen
for output in model.generate(**generation_config):
# Token decodieren und zum Response hinzufügen
new_text = tokenizer.decode(output, skip_special_tokens=True)
if new_text != response: # Nur neue Tokens ausgeben
yield new_text
# Gradio Interface erstellen
demo = gr.ChatInterface(
translate,
additional_inputs=[
gr.Radio(
choices=["hochdeutsch_to_schwaebisch", "schwaebisch_to_hochdeutsch"],
value="hochdeutsch_to_schwaebisch",
label="Übersetzungsrichtung"
),
gr.Slider(
minimum=32,
maximum=256,
value=128,
step=32,
label="Maximale Anzahl neuer Tokens"
)
],
title="Schwäbisch Übersetzer",
description="""Dieser Übersetzer kann Texte zwischen Hochdeutsch und Schwäbisch übersetzen.
Wählen Sie die gewünschte Übersetzungsrichtung und geben Sie Ihren Text ein.""",
examples=[
["Guten Tag, wie geht es Ihnen?", "hochdeutsch_to_schwaebisch"],
["Griaß Gott, wie goht's dir?", "schwaebisch_to_hochdeutsch"]
]
)
if __name__ == "__main__":
demo.launch(
share=True,
show_error=True,
cache_examples=True
) |