Spaces:
Running
Running
File size: 5,292 Bytes
f1fef64 381d2e1 317e409 381d2e1 317e409 381d2e1 539566d f70fc29 317e409 f70fc29 381d2e1 f70fc29 381d2e1 317e409 381d2e1 f70fc29 c2dfdca f70fc29 c2dfdca f70fc29 c2dfdca f70fc29 c2dfdca 381d2e1 f70fc29 c2dfdca a26f5ee f70fc29 c2dfdca f70fc29 c2dfdca 317e409 f70fc29 f1fef64 2b3ca21 |
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 |
import gradio as gr
import subprocess
# Function to load a model using Hugging Face Spaces and enable GPU
def load_model_with_gpu(model_name):
print(f"Attempting to load {model_name} with GPU enabled...")
try:
# Use subprocess to run hf.space_info and get GPU setting
result = subprocess.run(
["python", "-c", f"from huggingface_hub import space_info; print(space_info('{model_name}').hardware)"],
capture_output=True,
text=True,
check=True
)
hardware = result.stdout.strip()
print(f"Hardware for {model_name}: {hardware}")
demo = gr.load(name=model_name, src="spaces")
# Return the loaded model demo
print(f"Successfully loaded {model_name}")
return demo
except Exception as e:
print(f"Error loading model {model_name}: {e}")
return None
# Load the models with GPU enabled (if available)
deepseek_r1_distill = load_model_with_gpu("deepseek-ai/DeepSeek-R1-Distill-Qwen-32B")
deepseek_r1 = load_model_with_gpu("deepseek-ai/DeepSeek-R1")
deepseek_r1_zero = load_model_with_gpu("deepseek-ai/DeepSeek-R1-Zero")
# --- Chatbot function ---
def chatbot(input_text, history, model_choice, system_message, max_new_tokens, temperature, top_p):
history = history or []
print(f"Input: {input_text}, History: {history}, Model: {model_choice}")
# Choose the model based on user selection
if model_choice == "DeepSeek-R1-Distill-Qwen-32B" and deepseek_r1_distill:
model_demo = deepseek_r1_distill
elif model_choice == "DeepSeek-R1" and deepseek_r1:
model_demo = deepseek_r1
elif model_choice == "DeepSeek-R1-Zero" and deepseek_r1_zero:
model_demo = deepseek_r1_zero
else:
default_response = "Model not selected or could not be loaded."
history.append((input_text, default_response))
return history, history, "", model_choice, system_message, max_new_tokens, temperature, top_p
# Adjust the call to the model, remove default_value if not applicable
model_output = model_demo(input_text, history, max_new_tokens, temperature, top_p, system_message)
# Check if model_output is iterable and has expected number of elements
if not isinstance(model_output, (list, tuple)) or len(model_output) < 2:
error_message = "Model output does not have the expected format."
history.append((input_text, error_message))
return history, history, "", model_choice, system_message, max_new_tokens, temperature, top_p
response = model_output[-1][1] if model_output[-1][1] else "Model did not return a response."
history.append((input_text, response))
return history, history, "", model_choice, system_message, max_new_tokens, temperature, top_p
# --- Gradio Interface ---
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown(
"""
# DeepSeek Chatbot
Created by [ruslanmv.com](https://ruslanmv.com/)
This is a demo of different DeepSeek models. Select a model, type your message, and click "Submit".
You can also adjust optional parameters like system message, max new tokens, temperature, and top-p.
"""
)
with gr.Row():
with gr.Column():
chatbot_output = gr.Chatbot(label="DeepSeek Chatbot", height=500)
msg = gr.Textbox(label="Your Message", placeholder="Type your message here...")
with gr.Row():
submit_btn = gr.Button("Submit", variant="primary")
clear_btn = gr.ClearButton([msg, chatbot_output])
# Options moved below the chat interface
with gr.Row():
with gr.Accordion("Options", open=True):
model_choice = gr.Radio(
choices=["DeepSeek-R1-Distill-Qwen-32B", "DeepSeek-R1", "DeepSeek-R1-Zero"],
label="Choose a Model",
value="DeepSeek-R1"
)
with gr.Accordion("Optional Parameters", open=False):
system_message = gr.Textbox(
label="System Message",
value="You are a friendly Chatbot created by ruslanmv.com",
lines=2,
)
max_new_tokens = gr.Slider(
minimum=1, maximum=4000, value=200, label="Max New Tokens"
)
temperature = gr.Slider(
minimum=0.10, maximum=4.00, value=0.70, label="Temperature"
)
top_p = gr.Slider(
minimum=0.10, maximum=1.00, value=0.90, label="Top-p (nucleus sampling)"
)
# Maintain chat history
chat_history = gr.State([])
# Event handling
submit_btn.click(
chatbot,
[msg, chat_history, model_choice, system_message, max_new_tokens, temperature, top_p],
[chatbot_output, chat_history, msg, model_choice, system_message, max_new_tokens, temperature, top_p],
)
msg.submit(
chatbot,
[msg, chat_history, model_choice, system_message, max_new_tokens, temperature, top_p],
[chatbot_output, chat_history, msg, model_choice, system_message, max_new_tokens, temperature, top_p],
)
# Launch the demo
if __name__ == "__main__":
demo.launch() |