Spaces:
Sleeping
Sleeping
| """import gradio as gr | |
| import torch | |
| import time | |
| from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer | |
| from threading import Thread | |
| import pytz | |
| from datetime import datetime | |
| print("Loading model and tokenizer...") | |
| model_name = "large-traversaal/Phi-4-Hindi" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto") | |
| print("Model and tokenizer loaded successfully!") | |
| option_mapping = {"translation": "### TRANSLATION ###", "mcq": "### MCQ ###", "nli": "### NLI ###", "summarization": "### SUMMARIZATION ###", "Boolean": "### BOOLEAN ###", | |
| "long response": "### LONG RESPONSE ###", "direct response": "### DIRECT RESPONSE ###", "paraphrase": "### PARAPHRASE ###", "code": "### CODE ###"} | |
| def generate_response(message, temperature, max_new_tokens, top_p, task): | |
| append_text = option_mapping.get(task, "") | |
| prompt = f"INPUT : {message} {append_text} RESPONSE : " | |
| print(f"Prompt: {prompt}") | |
| start_time = time.time() | |
| inputs = tokenizer(prompt, return_tensors="pt").to(model.device) | |
| streamer = TextIteratorStreamer(tokenizer, skip_special_tokens=True) | |
| gen_kwargs = {"input_ids": inputs["input_ids"], "streamer": streamer, "temperature": temperature, "max_new_tokens": max_new_tokens, "top_p": top_p, "do_sample": True if temperature > 0 else False,} | |
| thread = Thread(target=model.generate, kwargs=gen_kwargs) | |
| thread.start() | |
| result = [] | |
| for text in streamer: | |
| result.append(text) | |
| yield "".join(result) | |
| end_time = time.time() | |
| time_taken = end_time - start_time | |
| output_text = "".join(result) | |
| if "RESPONSE : " in output_text: | |
| output_text = output_text.split("RESPONSE : ", 1)[1].strip() | |
| print(f"Output: {output_text}") | |
| print(f"Time taken: {time_taken:.2f} seconds") | |
| pst_timezone = pytz.timezone('America/Los_Angeles') | |
| current_time_pst = datetime.now(pst_timezone).strftime("%Y-%m-%d %H:%M:%S %Z%z") | |
| print(f"Current timestamp (PST): {current_time_pst}") | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# Phi-4-Hindi Demo") | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_text = gr.Textbox(label="Input", placeholder="Enter your text here...", lines=5) | |
| task_dropdown = gr.Dropdown(choices=["boolean", "translation", "mcq", "nli", "summarization", "long response", "direct response", "paraphrase", "code"], value="long response", label="Task") | |
| with gr.Row(): | |
| with gr.Column(): | |
| temperature = gr.Slider(minimum=0.0, maximum=1.0, value=0.1, step=0.01, label="Temperature") | |
| with gr.Column(): | |
| max_new_tokens = gr.Slider(minimum=50, maximum=1000, value=400, step=10, label="Max New Tokens") | |
| with gr.Column(): | |
| top_p = gr.Slider(minimum=0.0, maximum=1.0, value=0.1, step=0.01, label="Top P") | |
| with gr.Row(): | |
| clear_btn = gr.Button("Clear") | |
| send_btn = gr.Button("Send", variant="primary") | |
| with gr.Column(): | |
| output_text = gr.Textbox(label="Output", lines=15) | |
| send_btn.click(fn=generate_response, inputs=[input_text, temperature, max_new_tokens, top_p, task_dropdown], outputs=output_text) | |
| clear_btn.click(fn=lambda: ("", ""), inputs=None, outputs=[input_text, output_text]) | |
| if __name__ == "__main__": | |
| demo.queue().launch() | |
| """ | |
| import gradio as gr | |
| import torch | |
| import time | |
| from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer | |
| from threading import Thread | |
| import pytz | |
| from datetime import datetime | |
| print("Loading model and tokenizer...") | |
| model_name = "large-traversaal/Phi-4-Hindi" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto") | |
| print("Model and tokenizer loaded successfully!") | |
| option_mapping = {"translation": "### TRANSLATION ###", "mcq": "### MCQ ###", "nli": "### NLI ###", "summarization": "### SUMMARIZATION ###", | |
| "long response": "### LONG RESPONSE ###", "direct response": "### DIRECT RESPONSE ###", "paraphrase": "### PARAPHRASE ###", "code": "### CODE ###"} | |
| def generate_response(message, temperature, max_new_tokens, top_p, task): | |
| append_text = option_mapping.get(task, "") | |
| prompt = f"INPUT : {message} {append_text} RESPONSE : " | |
| print(f"Prompt: {prompt}") | |
| start_time = time.time() | |
| inputs = tokenizer.encode(prompt, return_tensors="pt").to(model.device) | |
| outputs = model.generate(input_ids=inputs, max_new_tokens=max_new_tokens, use_cache=True, temperature=temperature, min_p=top_p, pad_token_id=tokenizer.eos_token_id) | |
| response = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| processed_response = response.split("RESPONSE :")[-1].strip() | |
| end_time = time.time() | |
| time_taken = end_time - start_time | |
| print(f"Output: {processed_response}") | |
| print(f"Time taken: {time_taken:.2f} seconds") | |
| pst_timezone = pytz.timezone('America/Los_Angeles') | |
| current_time_pst = datetime.now(pst_timezone).strftime("%Y-%m-%d %H:%M:%S %Z%z") | |
| print(f"Current timestamp (PST): {current_time_pst}") | |
| return processed_response | |
| with gr.Blocks(theme='1024m/1024m-1') as demo: | |
| gr.Markdown("# Phi-4-Hindi Demo") | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_text = gr.Textbox(label="Input", placeholder="Enter your text here...", lines=5) | |
| task_dropdown = gr.Dropdown(choices=["translation", "mcq", "nli", "summarization", "long response", "direct response", "paraphrase", "code"], value="long response", label="Task") | |
| with gr.Row(): | |
| with gr.Column(): | |
| temperature = gr.Slider(minimum=0.0, maximum=1.0, value=0.1, step=0.01, label="Temperature") | |
| with gr.Column(): | |
| max_new_tokens = gr.Slider(minimum=10, maximum=1000, value=10, step=10, label="Max New Tokens") | |
| with gr.Column(): | |
| top_p = gr.Slider(minimum=0.0, maximum=1.0, value=0.1, step=0.01, label="Top P") | |
| with gr.Row(): | |
| clear_btn = gr.Button("Clear") | |
| send_btn = gr.Button("Send", variant="primary") | |
| with gr.Column(): | |
| output_text = gr.Textbox(label="Output", lines=15) | |
| send_btn.click(fn=generate_response, inputs=[input_text, temperature, max_new_tokens, top_p, task_dropdown], outputs=output_text) | |
| clear_btn.click(fn=lambda: ("", ""), inputs=None, outputs=[input_text, output_text]) | |
| if __name__ == "__main__": | |
| demo.queue().launch() |