badaoui commited on
Commit
e1b4f11
·
1 Parent(s): 7531488

adding supported architectures and tasks

Browse files
Files changed (1) hide show
  1. app.py +204 -25
app.py CHANGED
@@ -23,6 +23,55 @@ repo: Optional[Repository] = None
23
  # if HF_TOKEN:
24
  # repo = Repository(local_dir=DATADIR, clone_from=DATASET_REPO_URL, token=HF_TOKEN)
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  def neuron_export(model_id: str, task: str, oauth_token: gr.OAuthToken) -> str:
28
  if oauth_token.token is None:
@@ -145,6 +194,16 @@ CUSTOM_CSS = """
145
  .gradio-container .gr-dropdown-item:hover {
146
  background: var(--background-fill-secondary) !important;
147
  }
 
 
 
 
 
 
 
 
 
 
148
  """
149
 
150
  with gr.Blocks(css=CUSTOM_CSS) as demo:
@@ -159,31 +218,151 @@ with gr.Blocks(css=CUSTOM_CSS) as demo:
159
  # Full-width description
160
  gr.Markdown(DESCRIPTION)
161
 
162
- # Input controls in a row at the bottom
163
- with gr.Row():
164
- input_model = HuggingfaceHubSearch(
165
- label="Hub model ID",
166
- placeholder="Search for model ID on the hub",
167
- search_type="model",
168
- )
169
- input_task = gr.Textbox(
170
- value="auto",
171
- max_lines=1,
172
- label='Task (can be left to "auto", will be automatically inferred)',
173
- )
174
-
175
- # Export button below the inputs
176
- btn = gr.Button("Export to Neuron", size="lg")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
 
178
- # Output section
179
- output = gr.Markdown(label="Output")
180
-
181
- btn.click(
182
- fn=neuron_export,
183
- inputs=[input_model, input_task],
184
- outputs=output,
185
- )
186
-
187
 
188
  if __name__ == "__main__":
189
  def restart_space():
@@ -191,7 +370,7 @@ if __name__ == "__main__":
191
  HfApi().restart_space(repo_id="optimum/neuron-export", token=HF_TOKEN, factory_reboot=True)
192
 
193
  scheduler = BackgroundScheduler()
194
- scheduler.add_job(restart_space, "interval", seconds=21600)
195
  scheduler.start()
196
 
197
  demo.launch()
 
23
  # if HF_TOKEN:
24
  # repo = Repository(local_dir=DATADIR, clone_from=DATASET_REPO_URL, token=HF_TOKEN)
25
 
26
+ # Define all possible tasks and their categories for coloring
27
+ TASK_CATEGORIES = {
28
+ "auto": {"color": "#6b7280", "category": "Auto"},
29
+ "feature-extraction": {"color": "#3b82f6", "category": "Feature Extraction"},
30
+ "fill-mask": {"color": "#8b5cf6", "category": "NLP"},
31
+ "multiple-choice": {"color": "#8b5cf6", "category": "NLP"},
32
+ "question-answering": {"color": "#8b5cf6", "category": "NLP"},
33
+ "text-classification": {"color": "#8b5cf6", "category": "NLP"},
34
+ "token-classification": {"color": "#8b5cf6", "category": "NLP"},
35
+ "text-generation": {"color": "#10b981", "category": "Text Generation"},
36
+ "text2text-generation": {"color": "#10b981", "category": "Text Generation"},
37
+ "audio-classification": {"color": "#f59e0b", "category": "Audio"},
38
+ "automatic-speech-recognition": {"color": "#f59e0b", "category": "Audio"},
39
+ "audio-frame-classification": {"color": "#f59e0b", "category": "Audio"},
40
+ "audio-xvector": {"color": "#f59e0b", "category": "Audio"},
41
+ "image-classification": {"color": "#ef4444", "category": "Vision"},
42
+ "object-detection": {"color": "#ef4444", "category": "Vision"},
43
+ "semantic-segmentation": {"color": "#ef4444", "category": "Vision"},
44
+ "text-to-image": {"color": "#ec4899", "category": "Multimodal"},
45
+ "image-to-image": {"color": "#ec4899", "category": "Multimodal"},
46
+ "inpaint": {"color": "#ec4899", "category": "Multimodal"},
47
+ "zero-shot-image-classification": {"color": "#ec4899", "category": "Multimodal"},
48
+ "sentence-similarity": {"color": "#06b6d4", "category": "Similarity"},
49
+ "Auto": {"color": "#6b7280", "category": "Auto"},
50
+ "Feature Extraction": {"color": "#3b82f6", "category": "Feature Extraction"},
51
+ "NLP": {"color": "#8b5cf6", "category": "NLP"},
52
+ "Text Generation": {"color": "#10b981", "category": "Text Generation"},
53
+ "Audio": {"color": "#f59e0b", "category": "Audio"},
54
+ "Vision": {"color": "#ef4444", "category": "Vision"},
55
+ "Multimodal": {"color": "#ec4899", "category": "Multimodal"},
56
+ "Similarity": {"color": "#06b6d4", "category": "Similarity"},
57
+ }
58
+
59
+ # Get all tasks for dropdown
60
+ ALL_TASKS = list(TASK_CATEGORIES.keys())
61
+
62
+ def create_task_tag(task: str) -> str:
63
+ """Create a colored HTML tag for a task"""
64
+ if task in TASK_CATEGORIES:
65
+ color = TASK_CATEGORIES[task]["color"]
66
+ return f'<span style="background-color: {color}; color: white; padding: 2px 6px; border-radius: 12px; font-size: 0.75rem; font-weight: 500; margin: 1px;">{task}</span>'
67
+ else:
68
+ return f'<span style="background-color: #6b7280; color: white; padding: 2px 6px; border-radius: 12px; font-size: 0.75rem; font-weight: 500; margin: 1px;">{task}</span>'
69
+
70
+ def format_tasks_for_table(tasks_str: str) -> str:
71
+ """Convert comma-separated tasks into colored tags"""
72
+ tasks = [task.strip() for task in tasks_str.split(',')]
73
+ return ' '.join([create_task_tag(task) for task in tasks])
74
+
75
 
76
  def neuron_export(model_id: str, task: str, oauth_token: gr.OAuthToken) -> str:
77
  if oauth_token.token is None:
 
194
  .gradio-container .gr-dropdown-item:hover {
195
  background: var(--background-fill-secondary) !important;
196
  }
197
+
198
+ /* Task tag styling improvements */
199
+ .task-tags {
200
+ line-height: 1.8;
201
+ }
202
+
203
+ .task-tags span {
204
+ display: inline-block;
205
+ margin: 2px;
206
+ }
207
  """
208
 
209
  with gr.Blocks(css=CUSTOM_CSS) as demo:
 
218
  # Full-width description
219
  gr.Markdown(DESCRIPTION)
220
 
221
+ with gr.Tabs():
222
+ with gr.Tab("Export Model"):
223
+ # Input controls in a row
224
+ with gr.Row():
225
+ input_model = HuggingfaceHubSearch(
226
+ label="Hub model ID",
227
+ placeholder="Search for model ID on the hub",
228
+ search_type="model",
229
+ )
230
+ input_task = gr.Dropdown(
231
+ choices=ALL_TASKS,
232
+ value="auto",
233
+ label='Task',
234
+ info='Select the task type for your model (auto will infer automatically)',
235
+ )
236
+
237
+ # Export button below the inputs
238
+ btn = gr.Button("Export to Neuron", size="lg")
239
+
240
+ # Output section
241
+ output = gr.Markdown(label="Output")
242
+
243
+ btn.click(
244
+ fn=neuron_export,
245
+ inputs=[input_model, input_task],
246
+ outputs=output,
247
+ )
248
+
249
+ with gr.Tab("Supported Architectures"):
250
+ gr.HTML(f"""
251
+ <div style="margin-bottom: 20px;">
252
+ <h3>🎨 Task Categories Legend</h3>
253
+ <div class="task-tags">
254
+ {create_task_tag("Auto")}
255
+ {create_task_tag("Feature Extraction")}
256
+ {create_task_tag("NLP")}
257
+ {create_task_tag("Text Generation")}
258
+ {create_task_tag("Audio")}
259
+ {create_task_tag("Vision")}
260
+ {create_task_tag("Multimodal")}
261
+ {create_task_tag("Similarity")}
262
+ </div>
263
+ </div>
264
+ """)
265
+
266
+ gr.HTML(f"""
267
+ <h2>🤗 Transformers</h2>
268
+ <table style="width: 100%; border-collapse: collapse; margin: 20px 0;">
269
+ <thead>
270
+ <tr style="background-color: var(--background-fill-secondary);">
271
+ <th style="border: 1px solid var(--border-color-primary); padding: 12px; text-align: left;">Architecture</th>
272
+ <th style="border: 1px solid var(--border-color-primary); padding: 12px; text-align: left;">Supported Tasks</th>
273
+ </tr>
274
+ </thead>
275
+ <tbody>
276
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ALBERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
277
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">AST</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, audio-classification")}</td></tr>
278
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">BERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
279
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">BLOOM</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-generation")}</td></tr>
280
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Beit</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
281
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">CamemBERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
282
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">CLIP</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
283
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ConvBERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
284
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ConvNext</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
285
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ConvNextV2</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
286
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">CvT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
287
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">DeBERTa (INF2 only)</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
288
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">DeBERTa-v2 (INF2 only)</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
289
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Deit</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
290
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">DistilBERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
291
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">DonutSwin</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction")}</td></tr>
292
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Dpt</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction")}</td></tr>
293
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ELECTRA</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
294
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ESM</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, text-classification, token-classification")}</td></tr>
295
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">FlauBERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
296
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">GPT2</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-generation")}</td></tr>
297
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Hubert</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, automatic-speech-recognition, audio-classification")}</td></tr>
298
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Levit</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
299
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Llama, Llama 2, Llama 3</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-generation")}</td></tr>
300
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Mistral</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-generation")}</td></tr>
301
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Mixtral</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-generation")}</td></tr>
302
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">MobileBERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
303
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">MobileNetV2</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification, semantic-segmentation")}</td></tr>
304
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">MobileViT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification, semantic-segmentation")}</td></tr>
305
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ModernBERT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, text-classification, token-classification")}</td></tr>
306
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">MPNet</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
307
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">OPT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-generation")}</td></tr>
308
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Phi</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, text-classification, token-classification")}</td></tr>
309
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">RoBERTa</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
310
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">RoFormer</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
311
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Swin</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
312
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">T5</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text2text-generation")}</td></tr>
313
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">UniSpeech</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, automatic-speech-recognition, audio-classification")}</td></tr>
314
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">UniSpeech-SAT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, automatic-speech-recognition, audio-classification, audio-frame-classification, audio-xvector")}</td></tr>
315
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">ViT</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, image-classification")}</td></tr>
316
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Wav2Vec2</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, automatic-speech-recognition, audio-classification, audio-frame-classification, audio-xvector")}</td></tr>
317
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">WavLM</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, automatic-speech-recognition, audio-classification, audio-frame-classification, audio-xvector")}</td></tr>
318
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Whisper</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("automatic-speech-recognition")}</td></tr>
319
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">XLM</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
320
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">XLM-RoBERTa</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, fill-mask, multiple-choice, question-answering, text-classification, token-classification")}</td></tr>
321
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Yolos</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, object-detection")}</td></tr>
322
+ </tbody>
323
+ </table>
324
+
325
+ <h2>🧨 Diffusers</h2>
326
+ <table style="width: 100%; border-collapse: collapse; margin: 20px 0;">
327
+ <thead>
328
+ <tr style="background-color: var(--background-fill-secondary);">
329
+ <th style="border: 1px solid var(--border-color-primary); padding: 12px; text-align: left;">Architecture</th>
330
+ <th style="border: 1px solid var(--border-color-primary); padding: 12px; text-align: left;">Supported Tasks</th>
331
+ </tr>
332
+ </thead>
333
+ <tbody>
334
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Stable Diffusion</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-to-image, image-to-image, inpaint")}</td></tr>
335
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Stable Diffusion XL Base</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-to-image, image-to-image, inpaint")}</td></tr>
336
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Stable Diffusion XL Refiner</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("image-to-image, inpaint")}</td></tr>
337
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">SDXL Turbo</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-to-image, image-to-image, inpaint")}</td></tr>
338
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">LCM</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-to-image")}</td></tr>
339
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">PixArt-α</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-to-image")}</td></tr>
340
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">PixArt-Σ</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("text-to-image")}</td></tr>
341
+ </tbody>
342
+ </table>
343
+
344
+ <h2>🤖 Sentence Transformers</h2>
345
+ <table style="width: 100%; border-collapse: collapse; margin: 20px 0;">
346
+ <thead>
347
+ <tr style="background-color: var(--background-fill-secondary);">
348
+ <th style="border: 1px solid var(--border-color-primary); padding: 12px; text-align: left;">Architecture</th>
349
+ <th style="border: 1px solid var(--border-color-primary); padding: 12px; text-align: left;">Supported Tasks</th>
350
+ </tr>
351
+ </thead>
352
+ <tbody>
353
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">Transformer</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, sentence-similarity")}</td></tr>
354
+ <tr><td style="border: 1px solid var(--border-color-primary); padding: 8px; font-weight: bold;">CLIP</td><td style="border: 1px solid var(--border-color-primary); padding: 8px;" class="task-tags">{format_tasks_for_table("feature-extraction, zero-shot-image-classification")}</td></tr>
355
+ </tbody>
356
+ </table>
357
+
358
+ <div style="margin-top: 20px;">
359
+ <p>💡 <strong>Note</strong>: Some architectures may have specific requirements or limitations. DeBERTa models are only supported on INF2 instances.</p>
360
+ <p>For more details, check the <a href="https://huggingface.co/docs/optimum-neuron" target="_blank">Optimum Neuron documentation</a>.</p>
361
+ </div>
362
+ """)
363
 
364
+ # Add spacing between tabs and content
365
+ gr.Markdown("<br><br><br><br>")
 
 
 
 
 
 
 
366
 
367
  if __name__ == "__main__":
368
  def restart_space():
 
370
  HfApi().restart_space(repo_id="optimum/neuron-export", token=HF_TOKEN, factory_reboot=True)
371
 
372
  scheduler = BackgroundScheduler()
373
+ scheduler.add_job(restart_space, "interval", seconds=21600) # Restart every 6 hours
374
  scheduler.start()
375
 
376
  demo.launch()