Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -540,13 +540,27 @@ import asyncio
|
|
540 |
import traceback
|
541 |
|
542 |
def get_device():
|
543 |
-
|
544 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
545 |
print(f"Using GPU: {torch.cuda.get_device_name(0)}")
|
546 |
print(f"GPU Memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.2f} GB")
|
|
|
547 |
return device
|
548 |
-
|
549 |
-
print("
|
550 |
return torch.device('cpu')
|
551 |
|
552 |
device = get_device()
|
@@ -617,12 +631,12 @@ class BaseModel(nn.Module):
|
|
617 |
self.device = device
|
618 |
print(f"Initializing model on device: {device}")
|
619 |
|
620 |
-
self.backbone = efficientnet_v2_m(weights=EfficientNet_V2_M_Weights.IMAGENET1K_V1)
|
621 |
self.feature_dim = self.backbone.classifier[1].in_features
|
622 |
self.backbone.classifier = nn.Identity()
|
623 |
|
624 |
self.num_heads = max(1, min(8, self.feature_dim // 64))
|
625 |
-
self.attention = MultiHeadAttention(self.feature_dim, num_heads=self.num_heads)
|
626 |
|
627 |
self.classifier = nn.Sequential(
|
628 |
nn.LayerNorm(self.feature_dim),
|
@@ -670,8 +684,7 @@ def preprocess_image(image):
|
|
670 |
|
671 |
|
672 |
model_yolo = YOLO('yolov8l.pt')
|
673 |
-
|
674 |
-
model_yolo.to(device)
|
675 |
|
676 |
async def predict_single_dog(image):
|
677 |
"""
|
@@ -939,6 +952,10 @@ def show_details_html(choice, previous_output, initial_state):
|
|
939 |
def main():
|
940 |
if torch.cuda.is_available():
|
941 |
torch.cuda.empty_cache()
|
|
|
|
|
|
|
|
|
942 |
|
943 |
with gr.Blocks(css=get_css_styles()) as iface:
|
944 |
# Header HTML
|
|
|
540 |
import traceback
|
541 |
|
542 |
def get_device():
|
543 |
+
print("Initializing CUDA environment...")
|
544 |
+
if not torch.cuda.is_available():
|
545 |
+
print("CUDA is not available, using CPU")
|
546 |
+
return torch.device('cpu')
|
547 |
+
|
548 |
+
try:
|
549 |
+
# 初始化 CUDA
|
550 |
+
torch.cuda.init()
|
551 |
+
torch.cuda.empty_cache()
|
552 |
+
|
553 |
+
# 設置當前設備
|
554 |
+
device = torch.device('cuda:0')
|
555 |
+
torch.cuda.set_device(device)
|
556 |
+
|
557 |
+
# 顯示詳細信息
|
558 |
print(f"Using GPU: {torch.cuda.get_device_name(0)}")
|
559 |
print(f"GPU Memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.2f} GB")
|
560 |
+
print(f"CUDA Version: {torch.version.cuda}")
|
561 |
return device
|
562 |
+
except Exception as e:
|
563 |
+
print(f"CUDA initialization failed: {str(e)}")
|
564 |
return torch.device('cpu')
|
565 |
|
566 |
device = get_device()
|
|
|
631 |
self.device = device
|
632 |
print(f"Initializing model on device: {device}")
|
633 |
|
634 |
+
self.backbone = efficientnet_v2_m(weights=EfficientNet_V2_M_Weights.IMAGENET1K_V1).to(device)
|
635 |
self.feature_dim = self.backbone.classifier[1].in_features
|
636 |
self.backbone.classifier = nn.Identity()
|
637 |
|
638 |
self.num_heads = max(1, min(8, self.feature_dim // 64))
|
639 |
+
self.attention = MultiHeadAttention(self.feature_dim, num_heads=self.num_heads).to(device)
|
640 |
|
641 |
self.classifier = nn.Sequential(
|
642 |
nn.LayerNorm(self.feature_dim),
|
|
|
684 |
|
685 |
|
686 |
model_yolo = YOLO('yolov8l.pt')
|
687 |
+
model_yolo.to(device)
|
|
|
688 |
|
689 |
async def predict_single_dog(image):
|
690 |
"""
|
|
|
952 |
def main():
|
953 |
if torch.cuda.is_available():
|
954 |
torch.cuda.empty_cache()
|
955 |
+
print(f"Initial GPU memory allocated: {torch.cuda.memory_allocated(0) / 1e9:.2f} GB")
|
956 |
+
|
957 |
+
print(f"CUDA initialized: {torch.cuda.is_initialized()}")
|
958 |
+
print(f"Current device: {torch.cuda.current_device() if torch.cuda.is_available() else 'CPU'}")
|
959 |
|
960 |
with gr.Blocks(css=get_css_styles()) as iface:
|
961 |
# Header HTML
|