Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -87,7 +87,6 @@ def pack_state(gs: Gaussian, mesh: MeshExtractResult) -> dict:
|
|
| 87 |
}
|
| 88 |
|
| 89 |
def unpack_state(state: dict) -> Tuple[Gaussian, edict, str]:
|
| 90 |
-
# ๊ฒฐ๊ณผ ์์ง์ฉ ๋๋ฐ์ด์ค
|
| 91 |
device = 'cuda:0' if torch.cuda.is_available() else 'cpu'
|
| 92 |
|
| 93 |
gs = Gaussian(
|
|
@@ -151,10 +150,8 @@ def generate_and_extract_glb(
|
|
| 151 |
)
|
| 152 |
except Exception as e:
|
| 153 |
torch.cuda.empty_cache()
|
| 154 |
-
# ์๋ฌ ๋ฉ์์ง์ ๋ฉ๋ชจ๋ฆฌ ํ ์ถ๊ฐ
|
| 155 |
raise RuntimeError(f"Generation Failed: {str(e)}\n(Try reducing image size or restart space)")
|
| 156 |
|
| 157 |
-
# ๋ ๋๋ง์ CPU ํน์ 0๋ฒ GPU์์ ์ํ (๋ฉ๋ชจ๋ฆฌ ์ ์ฝ)
|
| 158 |
video = render_utils.render_video(outputs['gaussian'][0], num_frames=120)['color']
|
| 159 |
video_geo = render_utils.render_video(outputs['mesh'][0], num_frames=120)['normal']
|
| 160 |
video = [np.concatenate([video[i], video_geo[i]], axis=1) for i in range(len(video))]
|
|
@@ -321,23 +318,25 @@ if __name__ == "__main__":
|
|
| 321 |
if gpu_count > 1:
|
| 322 |
print("โก Multi-GPU Mode Activated.")
|
| 323 |
|
| 324 |
-
# [์์ ]
|
| 325 |
-
#
|
| 326 |
-
# ์ค์ ๋ ์ด์ด๋ณ GPU ํ ๋นํ(dict)๋ฅผ ๋ฐ์์์ผ dispatch_model์ด ์์๋จน์ต๋๋ค.
|
| 327 |
-
|
| 328 |
print(" - Calculating Device Map for VGGT Model...")
|
| 329 |
-
|
| 330 |
-
|
| 331 |
-
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
|
| 335 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 336 |
# ๊ฐ๋ฒผ์ด ๋ชจ๋ธ์ 0๋ฒ ๊ณ ์
|
| 337 |
pipeline.birefnet_model.to("cuda:0")
|
| 338 |
|
| 339 |
-
print("โ
Models dispatched successfully.")
|
| 340 |
-
|
| 341 |
else:
|
| 342 |
print("โ ๏ธ Warning: Only 1 GPU detected.")
|
| 343 |
pipeline.cuda()
|
|
|
|
| 87 |
}
|
| 88 |
|
| 89 |
def unpack_state(state: dict) -> Tuple[Gaussian, edict, str]:
|
|
|
|
| 90 |
device = 'cuda:0' if torch.cuda.is_available() else 'cpu'
|
| 91 |
|
| 92 |
gs = Gaussian(
|
|
|
|
| 150 |
)
|
| 151 |
except Exception as e:
|
| 152 |
torch.cuda.empty_cache()
|
|
|
|
| 153 |
raise RuntimeError(f"Generation Failed: {str(e)}\n(Try reducing image size or restart space)")
|
| 154 |
|
|
|
|
| 155 |
video = render_utils.render_video(outputs['gaussian'][0], num_frames=120)['color']
|
| 156 |
video_geo = render_utils.render_video(outputs['mesh'][0], num_frames=120)['normal']
|
| 157 |
video = [np.concatenate([video[i], video_geo[i]], axis=1) for i in range(len(video))]
|
|
|
|
| 318 |
if gpu_count > 1:
|
| 319 |
print("โก Multi-GPU Mode Activated.")
|
| 320 |
|
| 321 |
+
# [์์ ] slat_model ๊ด๋ จ ์ฝ๋ ์ญ์ (์กด์ฌํ์ง ์์)
|
| 322 |
+
# VGGT_model๋ง ๋ถ์ฐ ์ฒ๋ฆฌ (5GB ๋์ฉ๋ ๋ชจ๋ธ)
|
|
|
|
|
|
|
| 323 |
print(" - Calculating Device Map for VGGT Model...")
|
| 324 |
+
try:
|
| 325 |
+
# infer_auto_device_map์ ํตํด VGGT ๋ชจ๋ธ์ ๋ ์ด์ด๋ฅผ 4๊ฐ GPU์ ๋๋ ๊ณํํ(Map)๋ฅผ ์งญ๋๋ค.
|
| 326 |
+
vggt_map = infer_auto_device_map(pipeline.VGGT_model, max_memory={i: "22GiB" for i in range(gpu_count)})
|
| 327 |
+
|
| 328 |
+
# ๊ณํํ๋๋ก ๋ชจ๋ธ์ ์ฐข์ด์ ๊ฐ GPU์ ์ฌ๋ฆฝ๋๋ค.
|
| 329 |
+
pipeline.VGGT_model = dispatch_model(pipeline.VGGT_model, device_map=vggt_map)
|
| 330 |
+
print("โ
VGGT Model dispatched successfully.")
|
| 331 |
+
|
| 332 |
+
except Exception as e:
|
| 333 |
+
print(f"โ ๏ธ Failed to dispatch VGGT model: {e}")
|
| 334 |
+
print("Falling back to single GPU for VGGT (Risky).")
|
| 335 |
+
pipeline.VGGT_model.cuda()
|
| 336 |
+
|
| 337 |
# ๊ฐ๋ฒผ์ด ๋ชจ๋ธ์ 0๋ฒ ๊ณ ์
|
| 338 |
pipeline.birefnet_model.to("cuda:0")
|
| 339 |
|
|
|
|
|
|
|
| 340 |
else:
|
| 341 |
print("โ ๏ธ Warning: Only 1 GPU detected.")
|
| 342 |
pipeline.cuda()
|