import gradio as gr import time from config import model_repo_id, src_lang, tgt_lang from indictrans2 import initialize_model_and_tokenizer, batch_translate from examples import example_sentences def load_models(): model_dict = {} print("\tLoading model: %s" % model_repo_id) # build model and tokenizer en_indic_tokenizer, en_indic_model, en_indic_lora_model = ( initialize_model_and_tokenizer() ) model_dict["_tokenizer"] = en_indic_tokenizer model_dict["_model"] = en_indic_model model_dict["_lora_model"] = en_indic_lora_model return model_dict def translation(text): start_time = time.time() tokenizer = model_dict["_tokenizer"] model = model_dict["_model"] lora_model = model_dict["_lora_model"] # org translation org_translation = batch_translate( [text], model=model, tokenizer=tokenizer, ) org_output = org_translation[0] end_time = time.time() # lora translation lora_translation = batch_translate( [text], model=lora_model, tokenizer=tokenizer, ) lora_output = lora_translation[0] end_time2 = time.time() result = { "source": src_lang, "target": tgt_lang, "input": text, "it2_result": org_output, "it2_conv_result": lora_output, "it2_inference_time": end_time - start_time, "it2_conv_inference_time": end_time2 - end_time, } return result print("\tinit models") global model_dict model_dict = load_models() inputs = gr.Textbox(lines=5, label="Input text") outputs = gr.JSON(container=True) submit_btn = gr.Button("Translate", variant="primary") title = "IndicTrans2 fine-tuned on conversation" description = f"Note: LoRA is trained only on En-Hi pair.\nDetails: https://github.com/AI4Bharat/IndicTrans2.\nLoRA Model: https://huggingface.co/sam749/IndicTrans2-Conv" gr.Interface( fn=translation, inputs=inputs, outputs=outputs, title=title, description=description, submit_btn=submit_btn, examples=example_sentences, examples_per_page=10, cache_examples=False, ).launch(share=True)