LiamKhoaLe commited on
Commit
52c6b94
·
1 Parent(s): 6d29691

Migrate hf_hub to transformers fuser

Browse files
Files changed (1) hide show
  1. vlm.py +31 -12
vlm.py CHANGED
@@ -1,6 +1,9 @@
1
  # vlm.py
2
- import os, logging, traceback, json
3
- from huggingface_hub import InferenceClient
 
 
 
4
  from translation import translate_query
5
 
6
  # Initialise once
@@ -10,6 +13,16 @@ client = InferenceClient(provider="auto", api_key=HF_TOKEN)
10
  logger = logging.getLogger("vlm-agent")
11
  logging.basicConfig(level=logging.INFO, format="%(asctime)s — %(name)s — %(levelname)s — %(message)s", force=True) # Change INFO to DEBUG for full-ctx JSON loader
12
 
 
 
 
 
 
 
 
 
 
 
13
  def process_medical_image(base64_image: str, prompt: str = None, lang: str = "EN") -> str:
14
  """
15
  Send base64 image + prompt to MedGEMMA and return output.
@@ -20,16 +33,22 @@ def process_medical_image(base64_image: str, prompt: str = None, lang: str = "EN
20
  user_query = translate_query(user_query, lang.lower())
21
  # Send over API
22
  try:
23
- response = client.chat.completions.create(
24
- model="google/medgemma-4b-it",
25
- messages=[{
26
- "role": "user",
27
- "content": [
28
- {"type": "text", "text": prompt},
29
- {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
30
- ]
31
- }]
32
- )
 
 
 
 
 
 
33
  # Validate response
34
  if not response or not hasattr(response, "choices") or not response.choices:
35
  raise ValueError("Empty or malformed response from MedGEMMA.")
 
1
  # vlm.py
2
+ import os, logging, traceback, json, base64
3
+ from io import BytesIO
4
+ from PIL import Image
5
+ # from huggingface_hub import InferenceClient # Render model on HF hub
6
+ from transformers import pipeline # Render model on transformers
7
  from translation import translate_query
8
 
9
  # Initialise once
 
13
  logger = logging.getLogger("vlm-agent")
14
  logging.basicConfig(level=logging.INFO, format="%(asctime)s — %(name)s — %(levelname)s — %(message)s", force=True) # Change INFO to DEBUG for full-ctx JSON loader
15
 
16
+ # ✅ Load VLM pipeline once (lazy load allowed)
17
+ vlm_pipe = None
18
+ def load_vlm():
19
+ global vlm_pipe
20
+ if vlm_pipe is None:
21
+ logger.info("⏳ Loading MedGEMMA model via Transformers pipeline...")
22
+ vlm_pipe = pipeline("image-to-text", model="google/medgemma-4b", device_map="auto")
23
+ logger.info("✅ MedGEMMA model ready.")
24
+ return vlm_pipe
25
+
26
  def process_medical_image(base64_image: str, prompt: str = None, lang: str = "EN") -> str:
27
  """
28
  Send base64 image + prompt to MedGEMMA and return output.
 
33
  user_query = translate_query(user_query, lang.lower())
34
  # Send over API
35
  try:
36
+ # HF hub
37
+ # response = client.chat.completions.create(
38
+ # model="google/medgemma-4b-it",
39
+ # messages=[{
40
+ # "role": "user",
41
+ # "content": [
42
+ # {"type": "text", "text": prompt},
43
+ # {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
44
+ # ]
45
+ # }]
46
+ # )
47
+ # Transformers
48
+ image_data = base64.b64decode(base64_image) # Decode base64 to PIL Image
49
+ image = Image.open(BytesIO(image_data)).convert("RGB")
50
+ pipe = load_vlm()
51
+ response = pipe(image, prompt=prompt, max_new_tokens=100)[0]["generated_text"]
52
  # Validate response
53
  if not response or not hasattr(response, "choices") or not response.choices:
54
  raise ValueError("Empty or malformed response from MedGEMMA.")