Spaces:
Sleeping
Sleeping
import gradio as gr | |
import torch | |
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline | |
from peft import PeftModel, PeftConfig | |
# Load the fine-tuned model and tokenizer | |
model_name = "sagar007/phi-1_5-finetuned" # Updated model path | |
config = PeftConfig.from_pretrained(model_name) | |
# Check if CUDA is available | |
if torch.cuda.is_available(): | |
device_map = "auto" | |
torch_dtype = torch.float16 | |
else: | |
device_map = "cpu" | |
torch_dtype = torch.float32 | |
model = AutoModelForCausalLM.from_pretrained( | |
config.base_model_name_or_path, | |
torch_dtype=torch_dtype, | |
device_map=device_map | |
) | |
model = PeftModel.from_pretrained(model, model_name) | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
# Create a text generation pipeline | |
generator = pipeline("text-generation", model=model, tokenizer=tokenizer, device_map=device_map) | |
def generate_text(prompt, max_length=100, temperature=0.7, top_p=0.9): | |
"""Generate text based on the input prompt.""" | |
if not prompt.strip(): | |
return "Please enter a prompt before generating text." | |
try: | |
generated = generator(prompt, max_length=max_length, do_sample=True, temperature=temperature, top_p=top_p) | |
return generated[0]['generated_text'] | |
except Exception as e: | |
return f"An error occurred: {str(e)}" | |
# Custom CSS for styling (unchanged) | |
custom_css = """ | |
... (your existing CSS) | |
""" | |
# Create the Gradio interface | |
with gr.Blocks(css=custom_css) as iface: | |
gr.HTML("<div class='container'>") | |
gr.HTML("<h1>π€ Phi-1.5 Fine-tuned Text Generator</h1>") | |
with gr.Row(): | |
with gr.Column(): | |
input_text = gr.Textbox(lines=5, label="Enter your prompt") | |
max_length = gr.Slider(minimum=50, maximum=500, value=100, step=10, label="Max Length") | |
temperature = gr.Slider(minimum=0.1, maximum=1.0, value=0.7, step=0.1, label="Temperature") | |
top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.9, step=0.1, label="Top P") | |
generate_button = gr.Button("Generate Text", variant="primary") | |
with gr.Column(): | |
output_text = gr.Textbox(lines=10, label="Generated Text") | |
# Add example prompts | |
gr.Examples( | |
examples=[ | |
"Explain the concept of machine learning.", | |
"Write a short story about a robot learning to paint.", | |
"What are some effective ways to reduce stress?", | |
"Summarize the key points of climate change in simple terms.", | |
"Create a step-by-step guide for making a perfect omelette.", | |
"Describe the differences between classical and quantum computing.", | |
"Write a motivational speech for a team starting a new project.", | |
"Explain the importance of biodiversity in ecosystems.", | |
"Compose a haiku about artificial intelligence.", | |
"List five tips for effective time management.", | |
"Describe the process of photosynthesis in layman's terms.", | |
"Write a dialogue between two characters discussing the future of space exploration.", | |
"Explain the concept of blockchain technology and its potential applications." | |
], | |
inputs=input_text | |
) | |
generate_button.click( | |
generate_text, | |
inputs=[input_text, max_length, temperature, top_p], | |
outputs=output_text | |
) | |
gr.HTML("<div class='footer'>Powered by Hugging Face and Gradio</div>") | |
gr.HTML("<p>This model is a fine-tuned version of Phi-1.5, trained on the OpenAssistant dataset.</p>") | |
gr.HTML("</div>") | |
# Launch the app | |
iface.launch() |