r1-John1-test1 / app.py
kas1's picture
Remove quantization_config entirely to avoid bitsandbytes dependency3
02009c3
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
# Load the original model
original_model = AutoModelForCausalLM.from_pretrained("unsloth/DeepSeek-R1-Distill-Llama-8B")
original_tokenizer = AutoTokenizer.from_pretrained("unsloth/DeepSeek-R1-Distill-Llama-8B")
# Load the fine-tuned model
fine_tuned_model = AutoModelForCausalLM.from_pretrained("kas1/DeepSeek-R1-Distill-Llama-8B-John1")
fine_tuned_tokenizer = AutoTokenizer.from_pretrained("kas1/DeepSeek-R1-Distill-Llama-8B-John1")
# Function to generate responses from both models
def compare_models(prompt):
# Generate response from the original model
original_inputs = original_tokenizer(prompt, return_tensors="pt")
original_outputs = original_model.generate(**original_inputs)
original_response = original_tokenizer.decode(original_outputs[0], skip_special_tokens=True)
# Generate response from the fine-tuned model
fine_tuned_inputs = fine_tuned_tokenizer(prompt, return_tensors="pt")
fine_tuned_outputs = fine_tuned_model.generate(**fine_tuned_inputs)
fine_tuned_response = fine_tuned_tokenizer.decode(fine_tuned_outputs[0], skip_special_tokens=True)
return original_response, fine_tuned_response
# Function to handle batch testing with a JSON file
def batch_test(json_file):
import json
results = []
data = json.load(json_file)
for item in data:
question = item.get("question", "")
expected_answer = item.get("answer", "")
# Generate responses from both models
original_response, fine_tuned_response = compare_models(question)
results.append({
"question": question,
"expected_answer": expected_answer,
"original_model_response": original_response,
"fine_tuned_model_response": fine_tuned_response
})
return results
# Define the Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# Compare Two Models Side by Side")
# Single prompt comparison
with gr.Tab("Single Prompt"):
prompt_input = gr.Textbox(label="Enter a Prompt/Question")
compare_button = gr.Button("Compare Responses")
original_output = gr.Textbox(label="Original Model Response")
fine_tuned_output = gr.Textbox(label="Fine-Tuned Model Response")
compare_button.click(
compare_models,
inputs=prompt_input,
outputs=[original_output, fine_tuned_output]
)
# Batch testing with a JSON file
with gr.Tab("Batch Testing"):
json_file_input = gr.File(label="Upload JSON File with Questions")
batch_results = gr.JSON(label="Comparison Results")
batch_button = gr.Button("Run Batch Test")
batch_button.click(
batch_test,
inputs=json_file_input,
outputs=batch_results
)
# Launch the app
demo.launch()