File size: 4,294 Bytes
ab98cf2 da9979a ab98cf2 3ae2d5d ab98cf2 5079abc ab98cf2 5079abc ab98cf2 da9979a 5079abc ab98cf2 da9979a ab98cf2 da9979a 5079abc da9979a ab98cf2 5079abc ab98cf2 5079abc ab98cf2 da9979a ab98cf2 5079abc da9979a 5079abc da9979a 5079abc da9979a 72b17b9 da9979a 72b17b9 da9979a 61d1ca6 5079abc da9979a | 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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | import gradio as gr
import torch
import spaces
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
from peft import PeftModel
# --- Configuration ---
BASE_MODEL_ID = "CohereForAI/aya-101"
MODEL_MAP = {
"English to Angika": "snjev310/aya-101-english-angika",
"Hindi to Angika": "snjev310/aya-101-hindi-angika",
"Angika to English": "snjev310/aya-101-angika-english"
}
# Load Tokenizer globally
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_ID)
@spaces.GPU(duration=120)
def translate(text, model_choice):
if not text.strip():
return "Please enter text to translate."
adapter_id = MODEL_MAP[model_choice]
# Load Base Model
base_model = AutoModelForSeq2SeqLM.from_pretrained(
BASE_MODEL_ID,
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
device_map="auto"
)
# Load the specific Adapter
model = PeftModel.from_pretrained(base_model, adapter_id)
model.eval()
# Prepare Input
prompt = f"translate {model_choice}: {text}"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=256,
do_sample=True,
temperature=0.3,
top_p=0.9
)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Cleanup for ZeroGPU
del model
del base_model
torch.cuda.empty_cache()
return result
# --- Gradio UI ---
# Theme removed from Blocks constructor for Gradio 6.0
with gr.Blocks() as demo:
gr.Markdown("# 🗣️ Angika Machine Translation")
gr.Markdown("Select your translation direction below. This uses the Aya-101 13B model.")
with gr.Row():
with gr.Column():
model_dropdown = gr.Dropdown(
choices=list(MODEL_MAP.keys()),
value="English to Angika",
label="Select Translation Mode"
)
input_text = gr.Textbox(label="Input Text", placeholder="Type here...", lines=5)
submit_btn = gr.Button("Translate", variant="primary")
with gr.Column():
output_text = gr.Textbox(label="Translated Text", lines=5, interactive=False)
submit_btn.click(
fn=translate,
inputs=[input_text, model_dropdown],
outputs=output_text
)
gr.Examples(
examples=[
["How are you doing today?", "English to Angika"],
["आप कैसे हैं?", "Hindi to Angika"],
],
inputs=[input_text, model_dropdown]
)
gr.Markdown("---")
with gr.Row():
with gr.Column():
gr.Markdown("### 🛠️ Help us improve!")
gr.Markdown("If the translation isn't perfect, please share the correct version with us.")
feedback_btn = gr.Button("Submit Correct Translation", variant="secondary")
# Changed '_js' to 'js' for Gradio 6.0 compatibility
feedback_btn.click(
fn=None,
js='() => { window.open("https://forms.gle/FXspX7DxXHh5En6c7", "_blank"); }'
)
with gr.Column():
gr.Markdown("### ⚡ Support our computation")
gr.Markdown("Your support helps us cover the hosting costs for this 13B model.")
support_btn = gr.Button("Support Computation Costs ☕, UPI Id: AngikaAi@ybl ", variant="primary")
# Replace the link below with your Razorpay/Ko-fi link
support_btn.click(
fn=None,
js='() => { window.open("https://drive.google.com/file/d/1XIpXI25WzNingr4iDoNnt595kxK-YtCq/view?usp=sharing", "_blank"); }'
)
# --- CONTACT & SOCIAL SECTION ---
gr.Markdown("---")
gr.Markdown(
"""
<div style="text-align: center;">
<p>📧 For any comments, suggestions, or help, please write to us at: <b>consultangika@gmail.com</b></p>
<p>🐦 Follow our X (Twitter) handle: <a href="https://x.com/AngikaAi" target="_blank">@AngikaAi</a></p>
</div>
""",
sanitize_html=False
)
# Theme added to launch method for Gradio 6.0
demo.launch(theme=gr.themes.Soft()) |