codemo commited on
Commit
107f99d
ยท
verified ยท
1 Parent(s): d8b36db

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -0
app.py CHANGED
@@ -45,6 +45,47 @@ model = AutoModel.from_pretrained(
45
  )
46
  model = model.eval().to(device)
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  MODEL_CONFIGS = {
49
  "โšก Gundam": {"base_size": 1024, "image_size": 640, "crop_mode": True},
50
  "๐Ÿš€ Tiny": {"base_size": 512, "image_size": 512, "crop_mode": False},
 
45
  )
46
  model = model.eval().to(device)
47
 
48
+ # ๅˆ›ๅปบ่ฎพๅค‡ๅ…ผๅฎน็š„ๆŽจ็†ๅŒ…่ฃ…ๅ™จ
49
+ original_infer = model.infer
50
+
51
+ def device_compatible_infer(*args, **kwargs):
52
+ """่ฎพๅค‡ๅ…ผๅฎน็š„ๆŽจ็†ๅŒ…่ฃ…ๅ™จ๏ผŒๆ”ฏๆŒ CPU/GPU ่‡ชๅŠจๅˆ‡ๆข"""
53
+ import torch
54
+
55
+ # ไธดๆ—ถไฟฎ่กฅ torch.cuda.is_available ๅ’Œ็›ธๅ…ณๆ–นๆณ•
56
+ old_is_available = torch.cuda.is_available
57
+ old_cuda_method = None
58
+
59
+ try:
60
+ # ๅฆ‚ๆžœๆ˜ฏ CPU ๆจกๅผ๏ผŒๅŠซๆŒ CUDA ่ฐƒ็”จ
61
+ if device == "cpu":
62
+ torch.cuda.is_available = lambda: False
63
+
64
+ # ไฟฎ่กฅ tensor.cuda() ๆ–นๆณ•
65
+ def cpu_wrapper(self, *args, **kwargs):
66
+ return self.cpu()
67
+
68
+ # ไฟๅญ˜ๅŽŸๅง‹ๆ–นๆณ•
69
+ if hasattr(torch.Tensor, '_original_cuda'):
70
+ old_cuda_method = torch.Tensor._original_cuda
71
+ else:
72
+ old_cuda_method = torch.Tensor.cuda
73
+ torch.Tensor._original_cuda = old_cuda_method
74
+
75
+ torch.Tensor.cuda = cpu_wrapper
76
+
77
+ # ่ฐƒ็”จๅŽŸๅง‹ infer ๆ–นๆณ•
78
+ return original_infer(*args, **kwargs)
79
+
80
+ finally:
81
+ # ๆขๅคๅŽŸๅง‹ๆ–นๆณ•
82
+ torch.cuda.is_available = old_is_available
83
+ if old_cuda_method is not None:
84
+ torch.Tensor.cuda = old_cuda_method
85
+
86
+ # ๆ›ฟๆขๆจกๅž‹็š„ infer ๆ–นๆณ•
87
+ model.infer = device_compatible_infer
88
+
89
  MODEL_CONFIGS = {
90
  "โšก Gundam": {"base_size": 1024, "image_size": 640, "crop_mode": True},
91
  "๐Ÿš€ Tiny": {"base_size": 512, "image_size": 512, "crop_mode": False},