WafaaFraih commited on
Commit
8764b02
ยท
verified ยท
1 Parent(s): 3f2297a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -21
app.py CHANGED
@@ -34,28 +34,34 @@ PROMPTS = {
34
  ),
35
  }
36
 
37
- # โš ๏ธ ZeroGPU: ู…ููŠุด GPU ู…ุชุงุญ ุฅู„ุง ุฌูˆู‡ ุฏุงู„ุฉ ุนู„ูŠู‡ุง @spaces.GPU. ุนุดุงู† ูƒุฏู‡
38
- # ุงู„ุชุญู…ูŠู„ ู‡ู†ุง ู„ุงุฒู… ูŠุจู‚ู‰ ุนู„ู‰ CPU ูˆุจุฏูˆู† quantization (ุงู„ู„ูŠ ู…ุญุชุงุฌ CUDA
39
- # ููˆุฑู‹ุง ูˆู‚ุช ุงู„ุชุญู…ูŠู„)ุŒ ูˆู†ู†ู‚ู„ ุงู„ู…ูˆุฏูŠู„ ู„ู„ู€ GPU ู„ุงุญู‚ู‹ุง ุนู†ุฏ ุฃูˆู„ ุงุณุชุฎุฏุงู… ุจุณ.
40
- print("โ–ถ Loading base model + LoRA adapter on CPU (moved to GPU on first request)...")
41
- processor = AutoProcessor.from_pretrained(BASE_MODEL_ID)
42
- base_model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
43
- BASE_MODEL_ID,
44
- torch_dtype=torch.float16,
45
- )
46
- model = PeftModel.from_pretrained(base_model, ADAPTER_ID, token=HF_TOKEN)
47
- model.eval()
48
- print("โœ… Model loaded on CPU. Will move to GPU on first inference call.")
49
-
50
- _model_on_gpu = False # flag: ุงู†ุชู‚ู„ ู„ู„ู€ GPU ูˆู„ุง ู„ุณู‡
51
-
52
-
53
- @spaces.GPU(duration=60)
 
 
 
 
 
 
 
 
 
54
  def caption_image(image: Image.Image, prompt_style: str):
55
- global _model_on_gpu
56
- if not _model_on_gpu:
57
- model.to("cuda")
58
- _model_on_gpu = True
59
 
60
  if image is None:
61
  return "โš ๏ธ Please upload a medical image first."
 
34
  ),
35
  }
36
 
37
+ # โš ๏ธ ZeroGPU: ู…ูƒุชุจุฉ `spaces` ุจุชุนุชุฑุถ ุญุชู‰ ุนู…ู„ูŠุงุช ุชุญู…ูŠู„ ุงู„ู€ safetensors
38
+ # ุงู„ุนุงุฏูŠุฉ ู„ูˆ ุญุตู„ุช ุจุฑู‘ู‡ ุฏุงู„ุฉ ู…ุนู„ูŽู‘ู…ุฉ ุจู€ @spaces.GPU. ุนุดุงู† ูƒุฏู‡ ู„ุงุฒู…
39
+ # ุงู„ุชุญู…ูŠู„ ูƒู„ู‡ (base model + adapter) ูŠุจู‚ู‰ ุฌูˆู‡ ุงู„ุฏุงู„ุฉุŒ ู…ุด ู‡ู†ุง.
40
+ processor = None
41
+ model = None
42
+
43
+
44
+ def _ensure_loaded():
45
+ """ูŠุญู…ู‘ู„ ุงู„ู…ูˆุฏูŠู„ ูˆุงู„ู€ adapter ู…ุฑุฉ ูˆุงุญุฏุฉ ุจุณุŒ ุฃูˆู„ ู…ุง ุญุฏ ูŠุณุชุฎุฏู… ุงู„ู€ demo."""
46
+ global processor, model
47
+ if model is not None:
48
+ return
49
+ print("โ–ถ Loading base model + LoRA adapter (first request only)...")
50
+ processor = AutoProcessor.from_pretrained(BASE_MODEL_ID)
51
+ base_model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
52
+ BASE_MODEL_ID,
53
+ torch_dtype=torch.float16,
54
+ )
55
+ loaded = PeftModel.from_pretrained(base_model, ADAPTER_ID, token=HF_TOKEN)
56
+ loaded.eval()
57
+ loaded.to("cuda")
58
+ model = loaded
59
+ print("โœ… Model ready on GPU.")
60
+
61
+
62
+ @spaces.GPU(duration=120)
63
  def caption_image(image: Image.Image, prompt_style: str):
64
+ _ensure_loaded()
 
 
 
65
 
66
  if image is None:
67
  return "โš ๏ธ Please upload a medical image first."