aptol commited on
Commit
1505807
·
verified ·
1 Parent(s): 0d7134a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -3
app.py CHANGED
@@ -21,13 +21,24 @@ Hunyuan3D Full Pipeline UI (aptol/genshin 메인 기준)
21
  BLENDER_PATH=/path/to/blender (없으면 PATH의 'blender' 사용)
22
  """
23
 
24
- import os, io, json, sys, time, hashlib, shutil, tempfile, subprocess, textwrap
 
25
  from pathlib import Path
26
  from typing import List, Tuple, Optional, Dict, Any, Union
27
 
28
  import gradio as gr
29
  from PIL import Image
30
 
 
 
 
 
 
 
 
 
 
 
31
  # ---------------------------
32
  # 경로 & 기본 폴더
33
  # ---------------------------
@@ -109,7 +120,22 @@ def _lazy_imports():
109
  return P
110
 
111
  PKG = _lazy_imports()
112
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  # ---------------------------
114
  # Space Profiles (정밀 튜닝)
115
  # - genshin을 메인으로 사용하되, 포크/업스트림도 호환
@@ -795,5 +821,19 @@ with gr.Blocks(css="""
795
 
796
  gr.Markdown("<small id='small-note'>※ genshin(메인) ↔ fork ↔ tencent Space간 입력 차이는 프로필 매핑으로 자동 흡수하도록 구성했습니다. Space 시그니처가 바뀌면 상단 SPACES['variants_*']만 수정하면 됩니다.</small>")
797
 
 
798
  if __name__ == "__main__":
799
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  BLENDER_PATH=/path/to/blender (없으면 PATH의 'blender' 사용)
22
  """
23
 
24
+
25
+ import os, io, json, time, hashlib, shutil, tempfile, subprocess, textwrap
26
  from pathlib import Path
27
  from typing import List, Tuple, Optional, Dict, Any, Union
28
 
29
  import gradio as gr
30
  from PIL import Image
31
 
32
+ # ✨ NEW: Hugging Face Spaces GPU decorator
33
+ try:
34
+ import spaces
35
+ except Exception:
36
+ class _Dummy:
37
+ def GPU(self, *a, **k):
38
+ def deco(fn): return fn
39
+ return deco
40
+ spaces = _Dummy()
41
+
42
  # ---------------------------
43
  # 경로 & 기본 폴더
44
  # ---------------------------
 
120
  return P
121
 
122
  PKG = _lazy_imports()
123
+ # 2) lazy_imports 아래 아무 곳에 추가 (전역 함수)
124
+ @spaces.GPU(duration=120) # HF가 GPU 워커를 정상 인식하도록 “한 개 이상” 필요
125
+ def _spaces_gpu_warmup() -> str:
126
+ """
127
+ HF Spaces가 부팅시 GPU 핸들링/워밍업을 확인할 수 있게 하는 더미 함수.
128
+ 실제 호출 안 해도 되지만, 있으면 부팅이 안정됩니다.
129
+ """
130
+ try:
131
+ import torch
132
+ if torch.cuda.is_available():
133
+ # 아주 가벼운 텐서로 GPU 컨텍스트를 열어둔다
134
+ _ = torch.randn(1, device="cuda") * 0.0
135
+ return "gpu:ok"
136
+ return "gpu:not_available"
137
+ except Exception as e:
138
+ return f"gpu:error:{e}"
139
  # ---------------------------
140
  # Space Profiles (정밀 튜닝)
141
  # - genshin을 메인으로 사용하되, 포크/업스트림도 호환
 
821
 
822
  gr.Markdown("<small id='small-note'>※ genshin(메인) ↔ fork ↔ tencent Space간 입력 차이는 프로필 매핑으로 자동 흡수하도록 구성했습니다. Space 시그니처가 바뀌면 상단 SPACES['variants_*']만 수정하면 됩니다.</small>")
823
 
824
+ # 3) __main__ 부분 교체 (SSR 끄기)
825
  if __name__ == "__main__":
826
+ # (선택) 워밍업을 한 번 호출해도 무방 — 실패해도 앱은 계속 뜹니다.
827
+ try:
828
+ _spaces_gpu_warmup()
829
+ except Exception:
830
+ pass
831
+
832
+ # ✨ SSR 끔: Node.js 사이드카 문제 회피
833
+ demo.queue(concurrency_count=2, max_size=64).launch(
834
+ server_name="0.0.0.0",
835
+ server_port=int(os.environ.get("PORT", "7860")),
836
+ ssr_mode=False, # <- 중요
837
+ share=False
838
+ )
839
+