xinjjj commited on
Commit
caf500b
·
1 Parent(s): 1d37bbc
Files changed (1) hide show
  1. app.py +34 -7
app.py CHANGED
@@ -56,6 +56,13 @@ CSV_FILE = "dataset_index.csv"
56
  HF_REPO_ID = "HorizonRobotics/EmbodiedGenData"
57
  HF_LOCAL_DIR = "EmbodiedGenData"
58
  CAMERA_ZOOM = 3.2
 
 
 
 
 
 
 
59
 
60
  # Compatible with huggingface space zero GPU
61
  import spaces
@@ -1034,6 +1041,8 @@ with gr.Blocks(
1034
  gallery.select(
1035
  fn=show_asset_from_gallery,
1036
  inputs=[primary, secondary, category, search_box, gallery_df_state],
 
 
1037
  outputs=[
1038
  (visual_path_state := gr.State()),
1039
  (collision_path_state := gr.State()),
@@ -1082,33 +1091,51 @@ with gr.Blocks(
1082
  # JS-trigger the browser download -> unlock. Selecting another asset
1083
  # resets the buttons independently (see `.success` above).
1084
  urdf_dl_btn.click(
1085
- fn=lambda: _lock_downloads("urdf"), outputs=dl_btns
1086
  ).then(
1087
- fn=download_urdf, inputs=[asset_folder], outputs=[urdf_dl_btn]
 
 
 
 
1088
  ).then(fn=lambda *a: None, inputs=[urdf_dl_btn], js=download_js).then(
1089
  fn=_unlock_downloads, outputs=dl_btns
1090
  )
1091
 
1092
- usd_dl_btn.click(fn=lambda: _lock_downloads("usd"), outputs=dl_btns).then(
1093
- fn=download_usd, inputs=[asset_folder], outputs=[usd_dl_btn]
 
 
 
 
 
 
1094
  ).then(fn=lambda *a: None, inputs=[usd_dl_btn], js=download_js).then(
1095
  fn=_unlock_downloads, outputs=dl_btns
1096
  )
1097
 
1098
  mjcf_dl_btn.click(
1099
- fn=lambda: _lock_downloads("mjcf"), outputs=dl_btns
1100
  ).then(
1101
- fn=download_mjcf, inputs=[asset_folder], outputs=[mjcf_dl_btn]
 
 
 
 
1102
  ).then(fn=lambda *a: None, inputs=[mjcf_dl_btn], js=download_js).then(
1103
  fn=_unlock_downloads, outputs=dl_btns
1104
  )
1105
 
1106
  affordance_dl_btn.click(
1107
- fn=lambda: _lock_downloads("affordance"), outputs=dl_btns
 
 
1108
  ).then(
1109
  fn=download_affordance,
1110
  inputs=[asset_folder],
1111
  outputs=[affordance_dl_btn],
 
 
1112
  ).then(
1113
  fn=lambda *a: None, inputs=[affordance_dl_btn], js=download_js
1114
  ).then(fn=_unlock_downloads, outputs=dl_btns)
 
56
  HF_REPO_ID = "HorizonRobotics/EmbodiedGenData"
57
  HF_LOCAL_DIR = "EmbodiedGenData"
58
  CAMERA_ZOOM = 3.2
59
+ # Gradio's default per-event concurrency limit is 1, which would make every
60
+ # user's HF snapshot_download (potentially several seconds) serialize behind
61
+ # whichever user clicked first. Give the HF-fetching events their own shared
62
+ # pool so several users can download/preview assets in parallel, bounded to
63
+ # avoid hammering the HF API with too many simultaneous requests.
64
+ HF_IO_CONCURRENCY_ID = "hf_asset_io"
65
+ HF_IO_CONCURRENCY_LIMIT = 6
66
 
67
  # Compatible with huggingface space zero GPU
68
  import spaces
 
1041
  gallery.select(
1042
  fn=show_asset_from_gallery,
1043
  inputs=[primary, secondary, category, search_box, gallery_df_state],
1044
+ concurrency_id=HF_IO_CONCURRENCY_ID,
1045
+ concurrency_limit=HF_IO_CONCURRENCY_LIMIT,
1046
  outputs=[
1047
  (visual_path_state := gr.State()),
1048
  (collision_path_state := gr.State()),
 
1091
  # JS-trigger the browser download -> unlock. Selecting another asset
1092
  # resets the buttons independently (see `.success` above).
1093
  urdf_dl_btn.click(
1094
+ fn=lambda: _lock_downloads("urdf"), outputs=dl_btns, queue=False
1095
  ).then(
1096
+ fn=download_urdf,
1097
+ inputs=[asset_folder],
1098
+ outputs=[urdf_dl_btn],
1099
+ concurrency_id=HF_IO_CONCURRENCY_ID,
1100
+ concurrency_limit=HF_IO_CONCURRENCY_LIMIT,
1101
  ).then(fn=lambda *a: None, inputs=[urdf_dl_btn], js=download_js).then(
1102
  fn=_unlock_downloads, outputs=dl_btns
1103
  )
1104
 
1105
+ usd_dl_btn.click(
1106
+ fn=lambda: _lock_downloads("usd"), outputs=dl_btns, queue=False
1107
+ ).then(
1108
+ fn=download_usd,
1109
+ inputs=[asset_folder],
1110
+ outputs=[usd_dl_btn],
1111
+ concurrency_id=HF_IO_CONCURRENCY_ID,
1112
+ concurrency_limit=HF_IO_CONCURRENCY_LIMIT,
1113
  ).then(fn=lambda *a: None, inputs=[usd_dl_btn], js=download_js).then(
1114
  fn=_unlock_downloads, outputs=dl_btns
1115
  )
1116
 
1117
  mjcf_dl_btn.click(
1118
+ fn=lambda: _lock_downloads("mjcf"), outputs=dl_btns, queue=False
1119
  ).then(
1120
+ fn=download_mjcf,
1121
+ inputs=[asset_folder],
1122
+ outputs=[mjcf_dl_btn],
1123
+ concurrency_id=HF_IO_CONCURRENCY_ID,
1124
+ concurrency_limit=HF_IO_CONCURRENCY_LIMIT,
1125
  ).then(fn=lambda *a: None, inputs=[mjcf_dl_btn], js=download_js).then(
1126
  fn=_unlock_downloads, outputs=dl_btns
1127
  )
1128
 
1129
  affordance_dl_btn.click(
1130
+ fn=lambda: _lock_downloads("affordance"),
1131
+ outputs=dl_btns,
1132
+ queue=False,
1133
  ).then(
1134
  fn=download_affordance,
1135
  inputs=[asset_folder],
1136
  outputs=[affordance_dl_btn],
1137
+ concurrency_id=HF_IO_CONCURRENCY_ID,
1138
+ concurrency_limit=HF_IO_CONCURRENCY_LIMIT,
1139
  ).then(
1140
  fn=lambda *a: None, inputs=[affordance_dl_btn], js=download_js
1141
  ).then(fn=_unlock_downloads, outputs=dl_btns)