Spaces:
Running
Running
Commit
·
12c8918
1
Parent(s):
d85e33e
display models cards
Browse files
app.py
CHANGED
|
@@ -2,7 +2,7 @@ import os
|
|
| 2 |
import gradio as gr
|
| 3 |
import asyncio
|
| 4 |
from dotenv import load_dotenv
|
| 5 |
-
from huggingface_hub import InferenceClient
|
| 6 |
from functools import partial
|
| 7 |
|
| 8 |
# Load environment variables
|
|
@@ -24,6 +24,29 @@ AVAILABLE_MODELS = [
|
|
| 24 |
# Initialize inference client
|
| 25 |
inference_client = InferenceClient(token=HF_TOKEN)
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
async def get_model_response(prompt, model_name, temperature_value, do_sample, max_tokens):
|
| 28 |
"""Get response from a Hugging Face model."""
|
| 29 |
try:
|
|
@@ -133,6 +156,18 @@ def update_slider_state(enabled):
|
|
| 133 |
# Create the Gradio interface
|
| 134 |
with gr.Blocks(css="""
|
| 135 |
.disabled-slider { opacity: 0.5; pointer-events: none; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
""") as demo:
|
| 137 |
gr.Markdown("# LLM Comparison Tool")
|
| 138 |
gr.Markdown("Using HuggingFace's Inference API, compare outputs from different `text-generation` models side by side.")
|
|
@@ -154,6 +189,10 @@ with gr.Blocks(css="""
|
|
| 154 |
value=AVAILABLE_MODELS[0],
|
| 155 |
label="Select Model 1"
|
| 156 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
do_sample1 = gr.Checkbox(
|
| 158 |
label="Enable sampling (random outputs)",
|
| 159 |
value=False
|
|
@@ -187,6 +226,10 @@ with gr.Blocks(css="""
|
|
| 187 |
value=AVAILABLE_MODELS[1],
|
| 188 |
label="Select Model 2"
|
| 189 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
do_sample2 = gr.Checkbox(
|
| 191 |
label="Enable sampling (random outputs)",
|
| 192 |
value=False
|
|
@@ -230,6 +273,20 @@ with gr.Blocks(css="""
|
|
| 230 |
queue=True # Enable queuing for streaming updates
|
| 231 |
)
|
| 232 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 233 |
do_sample1.change(
|
| 234 |
fn=update_slider_state,
|
| 235 |
inputs=[do_sample1],
|
|
|
|
| 2 |
import gradio as gr
|
| 3 |
import asyncio
|
| 4 |
from dotenv import load_dotenv
|
| 5 |
+
from huggingface_hub import InferenceClient, hf_hub_download, model_info
|
| 6 |
from functools import partial
|
| 7 |
|
| 8 |
# Load environment variables
|
|
|
|
| 24 |
# Initialize inference client
|
| 25 |
inference_client = InferenceClient(token=HF_TOKEN)
|
| 26 |
|
| 27 |
+
def get_model_card_html(model_name, title):
|
| 28 |
+
"""Fetch and format model card information."""
|
| 29 |
+
try:
|
| 30 |
+
info = model_info(model_name, token=HF_TOKEN)
|
| 31 |
+
|
| 32 |
+
return f"""
|
| 33 |
+
<div class="model-card-container">
|
| 34 |
+
<h3>{info.modelId}</h3>
|
| 35 |
+
<p><strong>Pipeline Tag:</strong> {info.pipeline_tag or 'Not specified'}</p>
|
| 36 |
+
<p><strong>Downloads:</strong> {info.downloads:,}</p>
|
| 37 |
+
<p><strong>Likes:</strong> {info.likes:,}</p>
|
| 38 |
+
<p><a href="https://huggingface.co/{model_name}" target="_blank">View on Hugging Face</a></p>
|
| 39 |
+
</div>
|
| 40 |
+
"""
|
| 41 |
+
except Exception as e:
|
| 42 |
+
return f"""
|
| 43 |
+
<div class="model-card-container">
|
| 44 |
+
<h3>{model_name}</h3>
|
| 45 |
+
<p>Unable to load full model card information.</p>
|
| 46 |
+
<p><a href="https://huggingface.co/{model_name}" target="_blank">View on Hugging Face</a></p>
|
| 47 |
+
</div>
|
| 48 |
+
"""
|
| 49 |
+
|
| 50 |
async def get_model_response(prompt, model_name, temperature_value, do_sample, max_tokens):
|
| 51 |
"""Get response from a Hugging Face model."""
|
| 52 |
try:
|
|
|
|
| 156 |
# Create the Gradio interface
|
| 157 |
with gr.Blocks(css="""
|
| 158 |
.disabled-slider { opacity: 0.5; pointer-events: none; }
|
| 159 |
+
.model-card-container {
|
| 160 |
+
background-color: #f8f9fa;
|
| 161 |
+
font-size: 14px;
|
| 162 |
+
color: #666;
|
| 163 |
+
}
|
| 164 |
+
.model-card-container h3 {
|
| 165 |
+
margin: 0;
|
| 166 |
+
color: black;
|
| 167 |
+
}
|
| 168 |
+
.model-card-container p {
|
| 169 |
+
margin: 5px 0;
|
| 170 |
+
}
|
| 171 |
""") as demo:
|
| 172 |
gr.Markdown("# LLM Comparison Tool")
|
| 173 |
gr.Markdown("Using HuggingFace's Inference API, compare outputs from different `text-generation` models side by side.")
|
|
|
|
| 189 |
value=AVAILABLE_MODELS[0],
|
| 190 |
label="Select Model 1"
|
| 191 |
)
|
| 192 |
+
model1_card = gr.HTML(
|
| 193 |
+
value=get_model_card_html(AVAILABLE_MODELS[0], "Model 1 Information"),
|
| 194 |
+
elem_classes=["model-card-container"]
|
| 195 |
+
)
|
| 196 |
do_sample1 = gr.Checkbox(
|
| 197 |
label="Enable sampling (random outputs)",
|
| 198 |
value=False
|
|
|
|
| 226 |
value=AVAILABLE_MODELS[1],
|
| 227 |
label="Select Model 2"
|
| 228 |
)
|
| 229 |
+
model2_card = gr.HTML(
|
| 230 |
+
value=get_model_card_html(AVAILABLE_MODELS[1], "Model 2 Information"),
|
| 231 |
+
elem_classes=["model-card-container"]
|
| 232 |
+
)
|
| 233 |
do_sample2 = gr.Checkbox(
|
| 234 |
label="Enable sampling (random outputs)",
|
| 235 |
value=False
|
|
|
|
| 273 |
queue=True # Enable queuing for streaming updates
|
| 274 |
)
|
| 275 |
|
| 276 |
+
# Update model cards when models are changed
|
| 277 |
+
model1_dropdown.change(
|
| 278 |
+
fn=lambda x: get_model_card_html(x, "Model 1 Information"),
|
| 279 |
+
inputs=[model1_dropdown],
|
| 280 |
+
outputs=[model1_card]
|
| 281 |
+
)
|
| 282 |
+
|
| 283 |
+
model2_dropdown.change(
|
| 284 |
+
fn=lambda x: get_model_card_html(x, "Model 2 Information"),
|
| 285 |
+
inputs=[model2_dropdown],
|
| 286 |
+
outputs=[model2_card]
|
| 287 |
+
)
|
| 288 |
+
|
| 289 |
+
# Existing event handlers
|
| 290 |
do_sample1.change(
|
| 291 |
fn=update_slider_state,
|
| 292 |
inputs=[do_sample1],
|