ahmedghani commited on
Commit
3406bb2
·
1 Parent(s): 6739d34

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +286 -281
app.py CHANGED
@@ -19,7 +19,7 @@ def avaliable_providers():
19
  return providers
20
 
21
  def update_regions(provider):
22
- avalialbe_regions = []
23
 
24
  headers = {
25
  "Content-Type": "application/json",
@@ -29,16 +29,16 @@ def update_regions(provider):
29
 
30
  for region in response.json()['items']:
31
  if region['status'] == 'available':
32
- avalialbe_regions.append(f"{region['region']}/{region['label']}")
33
 
34
  return gr.Dropdown.update(
35
- choices=avalialbe_regions,
36
- value=avalialbe_regions[0] if len(avalialbe_regions) > 0 else None
37
  )
38
 
39
  def update_compute_options(provider, region):
40
  region = region.split("/")[0]
41
- avalialbe_compute_options = []
42
 
43
  headers = {
44
  "Content-Type": "application/json",
@@ -57,13 +57,13 @@ def update_compute_options(provider, region):
57
 
58
  type = f"{numAccelerators}vCPU {memoryGb} · {architecture}" if accelerator == "cpu" else f"{numAccelerators}x {architecture}"
59
 
60
- avalialbe_compute_options.append(
61
  f"{compute['accelerator'].upper()} [{compute['instanceSize']}] · {type} · {instanceType}"
62
  )
63
 
64
  return gr.Dropdown.update(
65
- choices=avalialbe_compute_options,
66
- value=avalialbe_compute_options[0] if len(avalialbe_compute_options) > 0 else None
67
  )
68
 
69
  def submit(
@@ -231,7 +231,7 @@ with gr.Blocks() as demo2:
231
  show_label=False,
232
  type="password"
233
  )
234
- with gr.Row():
235
  gr.Markdown("""
236
  ### All Deployed Endpoints
237
  """)
@@ -239,323 +239,328 @@ with gr.Blocks() as demo2:
239
  headers=["Endpoint Name", "Revision", "Provider", "Instance Type", "Status", "Min Replica", "Max Replica", "Created At", "Updated At"],
240
  col_count=(9, "fixed"),
241
  )
242
- endpoint_info_button = gr.Button(value="Get Info")
243
- endpoint_info_button.click(
244
- get_all_endpoints,
245
- inputs=hf_token_input,
246
- outputs=endpoints_table
247
- )
248
-
 
249
  gr.Markdown(
250
  """
251
  ### <br><center style="color:green">(Deploy Your Model on 🤗 Endpoint)</center>
252
  """)
253
- gr.Markdown("""
254
- #### Endpoint Name
255
- """)
256
- endpoint_name_input = gr.Textbox(
257
- show_label=False
258
- )
259
-
260
- providers = avaliable_providers()
261
-
262
- with gr.Row():
263
  gr.Markdown("""
264
- #### Cloud Provider
265
  """)
 
 
 
 
 
266
 
267
- gr.Markdown("""
268
- #### Cloud Region
269
- """)
270
-
271
- with gr.Row():
272
- provider_selector = gr.Dropdown(
273
- choices=providers,
274
- interactive=True,
275
- show_label=False,
276
- )
277
 
278
- region_selector = gr.Dropdown(
279
- [],
280
- value="",
281
- interactive=True,
282
- show_label=False,
283
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
 
285
- provider_selector.change(update_regions, inputs=provider_selector, outputs=region_selector)
 
 
 
 
 
286
 
287
- with gr.Row():
288
- gr.Markdown("""
289
- #### Target Model
290
- """)
 
291
 
292
- gr.Markdown("""
293
- #### Target Model Version(branch commit hash)
294
- """)
295
-
296
- with gr.Row():
297
- repository_selector = gr.Textbox(
298
- value="",
299
- interactive=True,
300
- show_label=False,
301
- )
302
 
303
- revision_selector = gr.Textbox(
304
- value="",
305
- interactive=True,
306
- show_label=False,
307
- )
 
 
 
 
 
308
 
309
- with gr.Row():
310
- gr.Markdown("""
311
- #### Task
312
- """)
 
313
 
314
- gr.Markdown("""
315
- #### Framework
316
- """)
317
-
318
- with gr.Row():
319
- task_selector = gr.Textbox(
320
- value="Custom",
321
  interactive=True,
322
  show_label=False,
323
  )
 
324
 
325
- framework_selector = gr.Textbox(
326
- value="Custom",
327
- interactive=True,
328
- show_label=False,
329
- )
330
 
331
- gr.Markdown("""
332
-
333
- #### Select Compute Instance Type
334
- """)
335
- compute_selector = gr.Dropdown(
336
- [],
337
- value="",
338
- interactive=True,
339
- show_label=False,
340
- )
341
- region_selector.change(update_compute_options, inputs=[provider_selector, region_selector], outputs=compute_selector)
342
 
343
- with gr.Row():
344
- gr.Markdown("""
345
- #### Min Number of Nodes
346
- """)
 
 
 
 
 
 
347
 
348
- gr.Markdown("""
349
- #### Max Number of Nodes
350
- """)
 
 
351
 
352
- gr.Markdown("""
353
- #### Security Level
354
- """)
355
-
356
- with gr.Row():
357
- min_node_selector = gr.Number(
358
- value=1,
359
- interactive=True,
360
- show_label=False,
361
  )
362
 
363
- max_node_selector = gr.Number(
364
- value=1,
365
- interactive=True,
366
- show_label=False,
367
  )
368
 
369
- security_selector = gr.Radio(
370
- choices=["Protected", "Public"],
371
- value="Protected",
372
- interactive=True,
373
- show_label=False,
374
- )
375
-
376
- submit_button = gr.Button(
377
- value="Submit",
378
- )
379
-
380
- status_txt = gr.Textbox(
381
- value="status",
382
- interactive=False
383
- )
384
-
385
- submit_button.click(
386
- submit,
387
- inputs=[
388
- hf_token_input,
389
- endpoint_name_input,
390
- provider_selector,
391
- region_selector,
392
- repository_selector,
393
- revision_selector,
394
- task_selector,
395
- framework_selector,
396
- compute_selector,
397
- min_node_selector,
398
- max_node_selector,
399
- security_selector],
400
- outputs=status_txt)
401
 
402
  # Update Endpoint
403
  gr.Markdown("""
404
  ### <br><center style="color:green">(Update 🔁 Endpoint)</center>
405
  """)
406
- update_providers = avaliable_providers()
407
- with gr.Row():
408
- gr.Markdown("""
409
- #### Cloud Provider
410
- """)
411
-
412
- gr.Markdown("""
413
- #### Cloud Region
414
- """)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
 
416
- with gr.Row():
417
- update_provider_selector = gr.Dropdown(
418
- choices=update_providers,
419
- interactive=True,
420
- show_label=False,
421
- )
422
-
423
- update_region_selector = gr.Dropdown(
424
- [],
425
- value="",
426
- interactive=True,
427
- show_label=False,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428
  )
429
 
430
- with gr.Row():
431
- gr.Markdown("""
432
- #### Endpoint Name
433
- """)
434
- gr.Markdown("""
435
- #### Instance Type
436
- """)
437
-
438
- with gr.Row():
439
- update_endpoint_name_input = gr.Textbox(
440
- show_label=False
441
- )
442
- update_compute_selector = gr.Dropdown(
443
- [],
444
- value="",
445
- interactive=True,
446
- show_label=False,
447
  )
448
- with gr.Row():
449
- gr.Markdown("""
450
- #### Min Number of Nodes
451
- """)
452
- gr.Markdown("""
453
- #### Max Number of Nodes
454
- """)
455
- with gr.Row():
456
- update_min_node_input = gr.Number(
457
- value=1,
458
- interactive=True,
459
- show_label=False,
460
- )
461
-
462
- update_max_node_input = gr.Number(
463
- value=1,
464
- interactive=True,
465
- show_label=False,
466
- )
467
- update_button = gr.Button(
468
- value="Update",
469
- )
470
 
471
- update_status_txt = gr.Textbox(
472
- value="status",
473
- interactive=False
474
- )
475
-
476
- update_provider_selector.change(update_regions, inputs=update_provider_selector, outputs=update_region_selector)
477
- update_region_selector.change(update_compute_options, inputs=[update_provider_selector, update_region_selector], outputs=update_compute_selector)
478
-
479
- update_button.click(
480
- update_endpoint,
481
- inputs=[
482
- hf_token_input,
483
- update_endpoint_name_input,
484
- update_min_node_input,
485
- update_max_node_input,
486
- update_compute_selector
487
- ],
488
- outputs=update_status_txt
489
- )
490
 
491
  # Delete Endpoint
492
  gr.Markdown("""
493
  ### <br><center style="color:green">(Delete 🗑️ Endpoint)</center>
494
  """)
495
- gr.Markdown("""
496
- #### Endpoint Name
497
- """)
498
- delete_endpoint_name_input = gr.Textbox(
499
- show_label=False
500
- )
501
- delete_button = gr.Button(
502
- value="Delete",
503
- )
504
-
505
- delete_status_txt = gr.Textbox(
506
- value="status",
507
- interactive=False
508
- )
509
 
510
- delete_button.click(
511
- delete_endpoint,
512
- inputs=[
513
- hf_token_input,
514
- delete_endpoint_name_input
515
- ],
516
- outputs=delete_status_txt
517
- )
518
 
 
 
 
 
 
 
 
 
 
 
519
  gr.Markdown("""
520
- ### <br><center style="color:green">(Instance Pricing Table)</center>
521
- #### Pricing Table(CPU) - 2023/2/22
522
- """)
523
-
524
- gr.Dataframe(
525
- headers=["provider", "size", "$/h", "vCPUs", "Memory", "Architecture"],
526
- datatype=["str", "str", "str", "number", "str", "str"],
527
- row_count=8,
528
- col_count=(6, "fixed"),
529
- value=[
530
- ["aws", "small", "$0.06", 1, "2GB", "Intel Xeon - Ice Lake"],
531
- ["aws", "medium", "$0.12", 2, "4GB", "Intel Xeon - Ice Lake"],
532
- ["aws", "large", "$0.24", 4, "8GB", "Intel Xeon - Ice Lake"],
533
- ["aws", "xlarge", "$0.48", 8, "16GB", "Intel Xeon - Ice Lake"],
534
- ["azure", "small", "$0.06", 1, "2GB", "Intel Xeon"],
535
- ["azure", "medium", "$0.12", 2, "4GB", "Intel Xeon"],
536
- ["azure", "large", "$0.24", 4, "8GB", "Intel Xeon"],
537
- ["azure", "xlarge", "$0.48", 8, "16GB", "Intel Xeon"],
538
- ]
539
- )
540
 
541
- gr.Markdown("""
542
- #### Pricing Table(GPU) - 2023/2/22
543
- """)
544
-
545
- gr.Dataframe(
546
- headers=["provider", "size", "$/h", "GPUs", "Memory", "Architecture"],
547
- datatype=["str", "str", "str", "number", "str", "str"],
548
- row_count=6,
549
- col_count=(6, "fixed"),
550
- value=[
551
- ["aws", "small", "$0.60", 1, "14GB", "NVIDIA T4"],
552
- ["aws", "medium", "$1.30", 1, "24GB", "NVIDIA A10G"],
553
- ["aws", "large", "$4.50", 4, "56GB", "NVIDIA T4"],
554
- ["aws", "xlarge", "$6.50", 1, "80GB", "NVIDIA A100"],
555
- ["aws", "xxlarge", "$7.00", 4, "96GB", "NVIDIA A10G"],
556
- ["aws", "xxxlarge", "$45.0", 8, "640GB", "NVIDIA A100"],
557
- ]
558
- )
559
 
560
  gr.TabbedInterface(
561
  [demo2], ["HF Endpoint Tool"]
 
19
  return providers
20
 
21
  def update_regions(provider):
22
+ available_regions = []
23
 
24
  headers = {
25
  "Content-Type": "application/json",
 
29
 
30
  for region in response.json()['items']:
31
  if region['status'] == 'available':
32
+ available_regions.append(f"{region['region']}/{region['label']}")
33
 
34
  return gr.Dropdown.update(
35
+ choices=available_regions,
36
+ value=available_regions[0] if len(available_regions) > 0 else None
37
  )
38
 
39
  def update_compute_options(provider, region):
40
  region = region.split("/")[0]
41
+ available_compute_choices = []
42
 
43
  headers = {
44
  "Content-Type": "application/json",
 
57
 
58
  type = f"{numAccelerators}vCPU {memoryGb} · {architecture}" if accelerator == "cpu" else f"{numAccelerators}x {architecture}"
59
 
60
+ available_compute_choices.append(
61
  f"{compute['accelerator'].upper()} [{compute['instanceSize']}] · {type} · {instanceType}"
62
  )
63
 
64
  return gr.Dropdown.update(
65
+ choices=available_compute_choices,
66
+ value=available_compute_choices[0] if len(available_compute_choices) > 0 else None
67
  )
68
 
69
  def submit(
 
231
  show_label=False,
232
  type="password"
233
  )
234
+ with gr.Column():
235
  gr.Markdown("""
236
  ### All Deployed Endpoints
237
  """)
 
239
  headers=["Endpoint Name", "Revision", "Provider", "Instance Type", "Status", "Min Replica", "Max Replica", "Created At", "Updated At"],
240
  col_count=(9, "fixed"),
241
  )
242
+ endpoint_info_button = gr.Button(value="Get Info")
243
+ endpoint_info_button.click(
244
+ get_all_endpoints,
245
+ inputs=hf_token_input,
246
+ outputs=endpoints_table
247
+ )
248
+
249
+ # Deploy Endpoint
250
  gr.Markdown(
251
  """
252
  ### <br><center style="color:green">(Deploy Your Model on 🤗 Endpoint)</center>
253
  """)
254
+ with gr.Column():
 
 
 
 
 
 
 
 
 
255
  gr.Markdown("""
256
+ #### Endpoint Name
257
  """)
258
+ endpoint_name_input = gr.Textbox(
259
+ show_label=False
260
+ )
261
+
262
+ providers = avaliable_providers()
263
 
264
+ with gr.Row():
265
+ gr.Markdown("""
266
+ #### Cloud Provider
267
+ """)
268
+
269
+ gr.Markdown("""
270
+ #### Cloud Region
271
+ """)
 
 
272
 
273
+ with gr.Row():
274
+ provider_selector = gr.Dropdown(
275
+ choices=providers,
276
+ interactive=True,
277
+ show_label=False,
278
+ )
279
+
280
+ region_selector = gr.Dropdown(
281
+ [],
282
+ value="",
283
+ interactive=True,
284
+ show_label=False,
285
+ )
286
+
287
+ provider_selector.change(update_regions, inputs=provider_selector, outputs=region_selector)
288
+
289
+ with gr.Row():
290
+ gr.Markdown("""
291
+ #### Target Model
292
+ """)
293
+
294
+ gr.Markdown("""
295
+ #### Target Model Version(branch commit hash)
296
+ """)
297
 
298
+ with gr.Row():
299
+ repository_selector = gr.Textbox(
300
+ value="",
301
+ interactive=True,
302
+ show_label=False,
303
+ )
304
 
305
+ revision_selector = gr.Textbox(
306
+ value="",
307
+ interactive=True,
308
+ show_label=False,
309
+ )
310
 
311
+ with gr.Row():
312
+ gr.Markdown("""
313
+ #### Task
314
+ """)
 
 
 
 
 
 
315
 
316
+ gr.Markdown("""
317
+ #### Framework
318
+ """)
319
+
320
+ with gr.Row():
321
+ task_selector = gr.Textbox(
322
+ value="Custom",
323
+ interactive=True,
324
+ show_label=False,
325
+ )
326
 
327
+ framework_selector = gr.Textbox(
328
+ value="Custom",
329
+ interactive=True,
330
+ show_label=False,
331
+ )
332
 
333
+ gr.Markdown("""
334
+
335
+ #### Select Compute Instance Type
336
+ """)
337
+ compute_selector = gr.Dropdown(
338
+ [],
339
+ value="",
340
  interactive=True,
341
  show_label=False,
342
  )
343
+ region_selector.change(update_compute_options, inputs=[provider_selector, region_selector], outputs=compute_selector)
344
 
345
+ with gr.Row():
346
+ gr.Markdown("""
347
+ #### Min Number of Nodes
348
+ """)
 
349
 
350
+ gr.Markdown("""
351
+ #### Max Number of Nodes
352
+ """)
 
 
 
 
 
 
 
 
353
 
354
+ gr.Markdown("""
355
+ #### Security Level
356
+ """)
357
+
358
+ with gr.Row():
359
+ min_node_selector = gr.Number(
360
+ value=1,
361
+ interactive=True,
362
+ show_label=False,
363
+ )
364
 
365
+ max_node_selector = gr.Number(
366
+ value=1,
367
+ interactive=True,
368
+ show_label=False,
369
+ )
370
 
371
+ security_selector = gr.Radio(
372
+ choices=["Protected", "Public"],
373
+ value="Protected",
374
+ interactive=True,
375
+ show_label=False,
376
+ )
377
+
378
+ submit_button = gr.Button(
379
+ value="Submit",
380
  )
381
 
382
+ status_txt = gr.Textbox(
383
+ value="status",
384
+ interactive=False
 
385
  )
386
 
387
+ submit_button.click(
388
+ submit,
389
+ inputs=[
390
+ hf_token_input,
391
+ endpoint_name_input,
392
+ provider_selector,
393
+ region_selector,
394
+ repository_selector,
395
+ revision_selector,
396
+ task_selector,
397
+ framework_selector,
398
+ compute_selector,
399
+ min_node_selector,
400
+ max_node_selector,
401
+ security_selector],
402
+ outputs=status_txt)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
 
404
  # Update Endpoint
405
  gr.Markdown("""
406
  ### <br><center style="color:green">(Update 🔁 Endpoint)</center>
407
  """)
408
+ with gr.Column():
409
+ update_providers = avaliable_providers()
410
+ with gr.Row():
411
+ gr.Markdown("""
412
+ #### Cloud Provider
413
+ """)
414
+
415
+ gr.Markdown("""
416
+ #### Cloud Region
417
+ """)
418
+
419
+ with gr.Row():
420
+ update_provider_selector = gr.Dropdown(
421
+ choices=update_providers,
422
+ interactive=True,
423
+ show_label=False,
424
+ )
425
+
426
+ update_region_selector = gr.Dropdown(
427
+ [],
428
+ value="",
429
+ interactive=True,
430
+ show_label=False,
431
+ )
432
 
433
+ with gr.Row():
434
+ gr.Markdown("""
435
+ #### Endpoint Name
436
+ """)
437
+ gr.Markdown("""
438
+ #### Instance Type
439
+ """)
440
+
441
+ with gr.Row():
442
+ update_endpoint_name_input = gr.Textbox(
443
+ show_label=False
444
+ )
445
+ update_compute_selector = gr.Dropdown(
446
+ [],
447
+ value="",
448
+ interactive=True,
449
+ show_label=False,
450
+ )
451
+ with gr.Row():
452
+ gr.Markdown("""
453
+ #### Min Number of Nodes
454
+ """)
455
+ gr.Markdown("""
456
+ #### Max Number of Nodes
457
+ """)
458
+ with gr.Row():
459
+ update_min_node_input = gr.Number(
460
+ value=1,
461
+ interactive=True,
462
+ show_label=False,
463
+ )
464
+
465
+ update_max_node_input = gr.Number(
466
+ value=1,
467
+ interactive=True,
468
+ show_label=False,
469
+ )
470
+ update_button = gr.Button(
471
+ value="Update",
472
  )
473
 
474
+ update_status_txt = gr.Textbox(
475
+ value="status",
476
+ interactive=False
 
 
 
 
 
 
 
 
 
 
 
 
 
 
477
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
478
 
479
+ update_provider_selector.change(update_regions, inputs=update_provider_selector, outputs=update_region_selector)
480
+ update_region_selector.change(update_compute_options, inputs=[update_provider_selector, update_region_selector], outputs=update_compute_selector)
481
+
482
+ update_button.click(
483
+ update_endpoint,
484
+ inputs=[
485
+ hf_token_input,
486
+ update_endpoint_name_input,
487
+ update_min_node_input,
488
+ update_max_node_input,
489
+ update_compute_selector
490
+ ],
491
+ outputs=update_status_txt
492
+ )
 
 
 
 
 
493
 
494
  # Delete Endpoint
495
  gr.Markdown("""
496
  ### <br><center style="color:green">(Delete 🗑️ Endpoint)</center>
497
  """)
498
+ with gr.Column():
499
+ gr.Markdown("""
500
+ #### Endpoint Name
501
+ """)
502
+ delete_endpoint_name_input = gr.Textbox(
503
+ show_label=False
504
+ )
505
+ delete_button = gr.Button(
506
+ value="Delete",
507
+ )
 
 
 
 
508
 
509
+ delete_status_txt = gr.Textbox(
510
+ value="status",
511
+ interactive=False
512
+ )
 
 
 
 
513
 
514
+ delete_button.click(
515
+ delete_endpoint,
516
+ inputs=[
517
+ hf_token_input,
518
+ delete_endpoint_name_input
519
+ ],
520
+ outputs=delete_status_txt
521
+ )
522
+
523
+ # Pricing Table
524
  gr.Markdown("""
525
+ ### <br><center style="color:green">(Instance Pricing Table)</center>
526
+ #### Pricing Table(CPU) - 2023/2/22
527
+ """)
528
+ with gr.Column():
529
+ gr.Dataframe(
530
+ headers=["provider", "size", "$/h", "vCPUs", "Memory", "Architecture"],
531
+ datatype=["str", "str", "str", "number", "str", "str"],
532
+ row_count=8,
533
+ col_count=(6, "fixed"),
534
+ value=[
535
+ ["aws", "small", "$0.06", 1, "2GB", "Intel Xeon - Ice Lake"],
536
+ ["aws", "medium", "$0.12", 2, "4GB", "Intel Xeon - Ice Lake"],
537
+ ["aws", "large", "$0.24", 4, "8GB", "Intel Xeon - Ice Lake"],
538
+ ["aws", "xlarge", "$0.48", 8, "16GB", "Intel Xeon - Ice Lake"],
539
+ ["azure", "small", "$0.06", 1, "2GB", "Intel Xeon"],
540
+ ["azure", "medium", "$0.12", 2, "4GB", "Intel Xeon"],
541
+ ["azure", "large", "$0.24", 4, "8GB", "Intel Xeon"],
542
+ ["azure", "xlarge", "$0.48", 8, "16GB", "Intel Xeon"],
543
+ ]
544
+ )
545
 
546
+ gr.Markdown("""
547
+ #### Pricing Table(GPU) - 2023/2/22
548
+ """)
549
+
550
+ gr.Dataframe(
551
+ headers=["provider", "size", "$/h", "GPUs", "Memory", "Architecture"],
552
+ datatype=["str", "str", "str", "number", "str", "str"],
553
+ row_count=6,
554
+ col_count=(6, "fixed"),
555
+ value=[
556
+ ["aws", "small", "$0.60", 1, "14GB", "NVIDIA T4"],
557
+ ["aws", "medium", "$1.30", 1, "24GB", "NVIDIA A10G"],
558
+ ["aws", "large", "$4.50", 4, "56GB", "NVIDIA T4"],
559
+ ["aws", "xlarge", "$6.50", 1, "80GB", "NVIDIA A100"],
560
+ ["aws", "xxlarge", "$7.00", 4, "96GB", "NVIDIA A10G"],
561
+ ["aws", "xxxlarge", "$45.0", 8, "640GB", "NVIDIA A100"],
562
+ ]
563
+ )
564
 
565
  gr.TabbedInterface(
566
  [demo2], ["HF Endpoint Tool"]