samyhusy commited on
Commit
bc56659
·
verified ·
1 Parent(s): 532b7ed
Files changed (1) hide show
  1. app.py +104 -0
app.py ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
3
+ import torch
4
+
5
+ # Load the model and tokenizer
6
+ model_name = "jbochi/madlad400-3b-mt"
7
+
8
+ @gr.cache_resource()
9
+ def load_model():
10
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
11
+ model = AutoModelForSeq2SeqLM.from_pretrained(
12
+ model_name,
13
+ torch_dtype=torch.float16,
14
+ device_map="auto"
15
+ )
16
+ return tokenizer, model
17
+
18
+ tokenizer, model = load_model()
19
+
20
+ def translate_text(text, source_lang, target_lang):
21
+ """
22
+ Translate text between English and Persian using MADLAD-400-3B
23
+ """
24
+ lang_codes = {"English": "en", "Persian": "fa"}
25
+ source_code = lang_codes[source_lang]
26
+ target_code = lang_codes[target_lang]
27
+
28
+ prompt = f"<2{target_code}> {text}"
29
+
30
+ try:
31
+ inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=512)
32
+ inputs = {k: v.to(model.device) for k, v in inputs.items()}
33
+
34
+ with torch.no_grad():
35
+ outputs = model.generate(
36
+ **inputs,
37
+ max_length=512,
38
+ num_beams=5,
39
+ early_stopping=True,
40
+ no_repeat_ngram_size=3,
41
+ )
42
+
43
+ translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
44
+ return translated_text
45
+
46
+ except Exception as e:
47
+ return f"Error during translation: {str(e)}"
48
+
49
+ with gr.Blocks(title="English-Persian Translator", theme=gr.themes.Soft()) as demo:
50
+ gr.Markdown("# 🌍 English-Persian Translator")
51
+ gr.Markdown("Translate text between English and Persian using MADLAD-400-3B model")
52
+
53
+ with gr.Row():
54
+ with gr.Column():
55
+ source_lang = gr.Dropdown(
56
+ choices=["English", "Persian"],
57
+ value="English",
58
+ label="From"
59
+ )
60
+ input_text = gr.Textbox(
61
+ lines=4,
62
+ placeholder="Enter text to translate...",
63
+ label="Input Text"
64
+ )
65
+
66
+ with gr.Column():
67
+ target_lang = gr.Dropdown(
68
+ choices=["Persian", "English"],
69
+ value="Persian",
70
+ label="To"
71
+ )
72
+ output_text = gr.Textbox(
73
+ lines=4,
74
+ label="Translated Text",
75
+ interactive=False
76
+ )
77
+
78
+ translate_btn = gr.Button("Translate ✨", variant="primary")
79
+
80
+ gr.Examples(
81
+ examples=[
82
+ ["Hello, how are you today?", "English", "Persian"],
83
+ ["What is your name?", "English", "Persian"],
84
+ ["سلام، حالتون چطوره؟", "Persian", "English"],
85
+ ["امروز هوا خوب است", "Persian", "English"]
86
+ ],
87
+ inputs=[input_text, source_lang, target_lang],
88
+ outputs=output_text,
89
+ fn=translate_text
90
+ )
91
+
92
+ translate_btn.click(
93
+ fn=translate_text,
94
+ inputs=[input_text, source_lang, target_lang],
95
+ outputs=output_text
96
+ )
97
+
98
+ def update_target_lang(source_lang):
99
+ return "Persian" if source_lang == "English" else "English"
100
+
101
+ source_lang.change(update_target_lang, source_lang, target_lang)
102
+
103
+ if __name__ == "__main__":
104
+ demo.launch()